美文网首页
前端培训机构—css源码笔记(三)

前端培训机构—css源码笔记(三)

作者: 爱创课堂 | 来源:发表于2019-08-13 16:54 被阅读0次

一、边框拓展

设置边框圆角 border-radius

边框折叠  border-collapse: collapse ;

三角形制作:等腰三角形  设置一边有颜色,另外三边颜色为透明色transparent

直角三角形,根据直角三角形的角,来设置其颜色,另外两个方向为透明色transparent

如右上角:设置颜色的边为border-top border-right 设置透明色为left bttom

梯形,在设置宽高的情况下,可以设置梯形

二、外边距合并

当给盒子设置margin值,它为距离四个方向的外边距的值;当有相邻的盒子的时候,那么这个margin就是距离相邻盒子的值;当某些方向没有同级的相邻盒子的时候,那么这么margin值,就是相对于父容器来讲的。

4.1 两个同级的盒子,会产生上下外边距合并,以最大的那个为准

4.2 存在嵌套的盒子,也就是具有后代关系的元素:

解决办法一:给父元素设置border属性

解决办法二:给父元素设置padding属性

解决办法三:给父元素设置overflow:hidden属性

三、体会盒子模型

设置盒子大小为固定值,且设置盒子相关属性时,不会改变盒子整体的宽高;通过减法保证盒子大小不变

1  <head>

2  <meta charset="UTF-8">

3  <title></title>

4  <style type="text/css">

5    .wrap{

6    /*height:400px;*/

7    /*height: 210px;*/

8    height: 190px;

9    width: 360px;

10    /*padding: 190px 0;*/

11    /*padding-top: 190px;*/

12    padding-top: 170px;

13    border: solid 20px pink;

14    background: red;

15    }

16 

17    .content{

18    background: yellow;

19    }

20  </style>

21  </head>

22  <body>

23  <div>

24    <div>阿斯顿福建撒地方</div>

25  </div>

26  </body>

四、宽度剩余法 和 height

盒子的高度让内容撑起来; 左侧一致,右侧剩余

图片1.png

1 <ul>

2  <li>习近平同美国总统特朗普通电话</li>

3  <li>习近平回信勉励北京体育大学研究生冠军班 全文</li>

4  <li>地震了,婚还是要结的</li>

5  <li>「天气」明天雨水中场休息,周四周五重新袭扰申城!</li>

6  <li>唐山港1至5月货物吞吐量2.65亿吨</li>

7 </ul>

8 *{

9  margin: 0;

10  padding: 0;

11 }

12 

13 /*.news{

14  width: 466px;

15  margin: 100px auto;

16  标准的盒子模型 padding 和 border会将盒子撑大

17  padding-left: 30px;

18  background: yellow;

19  border: dotted 2px red;

20 }

21 */

22 

23 .news{

24  /*设置为怪异盒子,边框和内填充不再会将盒子撑大*/

25  box-sizing: border-box;

26  width: 500px;

27  margin: 100px auto;

28  padding-left: 30px;

29  line-height: 2;

30  background: yellow;

31  border: dotted 2px red;

32 }

五、设置居中

文本水平居中:

text-align:center

padding

容器水平居中:

margin:auto

pading撑

文本和容器的垂直居中:

padding去撑

六、布局模型

布局模型与盒子模型一样,是我们的核心与重点的内容;布局模型是在盒子模型基础上进行拓展和布局

布局模型有以下三种,我们分别展开来说:

5.1 流动(flow)布局模型(标准流)

流动模型是一种正常的布局方式,这种布局布局方式按照我们在html中书写标签的顺序,依次执行。且不同元素按照默认的方式进行排列。块状元素独立占有一行,非块状元素从左到右依次排列。

在html中标签的分类有两种:容器级标签和文本级标签。

那么,在css中标签元素也有以下三种分类:

块状元素block:

可以设置宽高,具有换行符;

在不设置宽高的情况下,容器默认独立占有一行;设置宽高后,容器为设置宽高的大小(但还是具有换行符)

前面学过的标签是块状元素的有:h1-h6  p  ul-li  ol-li  dl-dt-dd  table  form  div

其他非块状元素设置为块状元素 display:block;

行内元素 inline

不可以设置宽高,和其他非块状元素从左到右依次排列;上下padding 不生效,左右padding 生效

容器默认包裹内容

前面学过的标签是行内元素的有:font b u i em strong ins del s a span

其他非行内元素设置为行内元素 display:inline

行内块元素 inline-block

可以设置宽高,和其他非块状元素从左到右依次排列;

在不设置宽高的情况下,容器默认包裹内容;设置宽高后,容器为设置宽高的大小(和其他非块状元素从左到右依次排列)

前面学过的标签是行内块元素的有:img  input  textarea  select  button

其他非行内块元素设置为行内块元素 display:inline-block;

1 <body>

2  <p>哈哈哈,我是一个特殊的元素</p>

3  <span>我不是块状元素</span>

4  <input type="text" name="" id="" value="" />

5  <a href="">我也不是</a>

6  asdfhlksad

7  <img src="./images/aaa.jpg"/>

8  <button>按钮</button>

9 </body>

1 <style type="text/css">

2  p{

3  /*设置行内后宽高失效*/

4  /*display: inline;*/

5  /*设置行内块宽高生效*/

6  display: inline-block;

7  width: 800px;

8  height: 30px;

9  background: yellow;

10  }

11 

12  a{

13  /*display: block;*/

14  display: inline-block;

15  width: 300px;

16  height: 30px;

17  background: red;

18  }

19 

20  img{

21  height: 300px;

22  }

23 

24  input{

25  width: 200px;

26  height: 40px;

27  border: solid 1px;

28   

29  outline: none;

30  }

31 

32  button{

33  width: 100px;

34  height: 30px;

35  background: palegreen;

36  border:solid 1px;

37  border-radius: 10px;

38  /*外轮廓线*/

39  outline: none;

40  }

41 </style>

42

5.2 浮动(float)模型

浮动可以使元素脱离标准流,并且可以改变元素的默认类型(可以使元素具有块状元素的特点,可以设置宽高);可以使块状元素在同一行内根据设置依次排列

浮动出现的初衷是为了解决文字环绕的效果;

浮动可以使元素紧密排列;

浮动使元素依次贴边显示;

浮动使用属性float:

属性值有 left  right  none(默认)

1 <head>

2  <meta charset="UTF-8">

3  <title></title>

4  <style type="text/css">

5    body{

6    margin: 0;

7    padding: 0;

8    }

10    .container{

11    height: 200px;

12    border: solid 1px;

13    }

14 

15    .container>div{

16    /*设置左浮动*/

17    float: left;

18    /*设置右浮动*/

19    /*float: right;*/

20    height: 200px;

21    width: 200px;

22    }

23 

24    .container>.box1{

25    background: red;

26    }

27 

28    .container>.box2{

29    background: pink;

30    }

31 

32    .container>.box3{

33    /*重新设置样式层叠掉上面的样式*/

34    float: right;

35    background: blue;

36    }

37 

38 

39  </style>

40 </head>

41 <body>

42  <div>

43  <div>盒子1</div>

44  <div>盒子2</div>

45  <div>盒子3</div>

46  </div>

47 </body>

浮动使元素脱离了文档流,那么这里有一个属性可以用来清除浮动

clear: left | right | both;

48  <head>

49  <meta charset="UTF-8">

50  <title></title>

51  <style type="text/css">

52    body{

53    margin: 0;

54    padding: 0;

55    }

56 

57    .container{

58    /*height: 200px;*/

59    border: solid 1px;

60    }

61 

62    .container>div{

63    /*设置右浮动*/

64    float: right;

65    height: 200px;

66    width: 200px;

67    }

68 

69    .container>.box1{

70    background: red;

71    /*清除浮动*/

72    /*clear: both;*/

73    }

74 

75    .container>.box2{

76    background: pink;

77    /*清除浮动*/

78    clear: right;

79    }

80 

81    .container>.box3{

82    /*重新设置样式层叠掉上面的样式*/

83    /*float: right;*/

84    background: blue;

85    /*清除浮动*/

86    clear: both;

87    }

88  </style>

89 </head>

90 <body>

91  <div>

92    <div>盒子1</div>

93    <div>盒子2</div>

94    <div>盒子3</div>

95  </div>

96  <p>我是container下面的文字我是container下面的文字我是container下面的文字我是container下面的文字我

97    是container下面的文字我是container下面的文字我是container下面的文字我是container下面的文字我

98    是container下面的文字我是container下面的文字我是container下面的文字我是container下面的文字我

99    是container下面的文字我是container下面的文字我是container下面的文字我是container下面的文字我

100    是container下面的文字</p>

101 </body>

但是随浮动而来,也出现了问题,会造成父元素塌陷问题;如果解决这个问题,就变成我们需要研究一个课题:

1. 给容器设置一个高度,但是要保证这个高度,要超过所有子元素的高度

2. 给容器后面相邻的元素,清除浮动clear:both

102 conAfter{

103  clear: both;

104 }

这种方式,虽然可以使整体能够正确排列,但是并没有解决父元素塌陷问题

3. 在父元素的内部设置一个空元素

105 <div>

106    <div>盒子1</div>

107    <div>盒子2</div>

108    <div>盒子3</div>

109        <div class="clear"></div>

110 </div>

111

112 .clear{

113  clear: both;

114 }

这种方式可以解决父元素塌陷问题,但是需要增加一对标签,如果浮动地方特别多,那么就需要添加过多的空标签,影响加载时间和性能,不建议使用

4. 通过伪元素:after

115 <div class="container clear">

116  <div>盒子1</div>

117  <div>盒子2</div>

118  <div>盒子3</div>

119 </div>

120 /*利用伪元素:after解决塌陷问题*/

121 .clear:after{

122  display: block;

123  height: 0;

124  content: "";

125  clear: both;

126  /*元素占位不可见*/

127  visibility: hidden;

128 }

这种方式是最高大上的一种,它不会带来一些副作用,在工作中建议大家使用这种方式;

5. 使用overflow:hidden || scroll || auto

129 <div class="container clear">

130  <div>盒子1</div>

131  <div>盒子2</div>

132  <div>盒子3</div>

133 </div>

/*利用overflow解决塌陷,属性值 scroll || auto || hidden*/

134 .clear{

135  overflow: auto;

136 }

这种方式会产生一个副作用:overflow本身是设置内容溢出的处理方式,当内容真的溢出容器后,那么如果使用overflow:hidden;那么溢出的内容我们就看不到了。所以不建议使用

5.3 色块布局

137 <!DOCTYPE html>

138 <html>

139  <head>

140  <meta charset="UTF-8">

141  <title></title>

142  <style type="text/css">

143    *{

144    margin: 0;

145    padding: 0;

146    }

147 

148    .main{

149    float: left;

150    height: 800px;

151    width: 70%;

152    /*background-color: red;*/

153    }

154 

155    .main-header{

156    height: 150px;

157    background: skyblue;

158    }

159 

160    .main-details{

161    height: 650px;

162    /*background: yellow;*/

163    }

164 

165    .item1{

166    float: left;

167    width: 49%;

168    height: 300px;

169    margin-top: 25px;

170    }

171 

172    .item1:nth-of-type(1){

173    background: blue;

174    }

175    .item1:nth-of-type(2){

176    background:gray;

177    }

178    .item1:nth-of-type(3){

179    background: #E3E3E3;

180    }

181    .item1:nth-of-type(4){

182    background: blue;

183    }

184 

185    .ml{

186    margin-left: 2%;

187    }

188 

189    .right{

190    /*float: left;

191    margin-left: 2%;*/

192   

193    float: right;

194    height: 800px;

195    width: 28%;

196    background-color: palegreen;

197    }

198  </style>

199  </head>

200  <body>

201  <div id="wrap">

202    <!--主要内容部分-->

203    <div>

204    <!--主要内容头部-->

205    <div>

206   

207    </div>

208   

209    <!--主要内容详细内容-->

210    <div>

211      <div></div>

212      <div class="item1 ml"></div>

213      <div></div>

214      <div class="item1 ml"></div>

215    </div>

216    </div>

217 

218    <!--右边栏-->

219    <div>

220   

221    </div>

222  </div>

223  </body>

224 </html>

关注VX公众号“icketang” 免费领取华为荣耀商城项目实战视频教程

相关文章

网友评论

      本文标题:前端培训机构—css源码笔记(三)

      本文链接:https://www.haomeiwen.com/subject/geubjctx.html