1结构伪类选择器
目标:能够使用结构伪类选择器在HTML中定位元素
1.1 作用与优势:
作用:根据元素在HTML中的结构关系查找元素
优势:减少对于HTML中类的依赖,有利于保持代码整洁
场景:常用于查找某父级选择器中的子元素
1.2 选择器
n的注意点:
1.n为0,1,2,3,4,5,6,7,…
2.通过n可以组成常见公式
<style>
li:first-child{
background-color: aqua;
}
li:last-child{
background-color:blueviolet ;
}
li:nth-child(3){
background-color: brown;
}
:nth-last-child(2){
background-color: coral;
}
</style>
2 伪元素
伪元素∶一般页面中的非主体内容可以使用伪元素
区别:
1.元素:HTML设置的标签
2.伪元素:由CSS模拟出的标签效果
种类:
注意点:
1.必须设置content
2.伪元素默认是行内元素,设置宽高不生效
.father{
height: 300px;
width: 300px;
background-color: pink;
}
.father::before{
content: '老鼠';
}
.father::after{
content: '大米';
}
<div class="father">爱</div>
3 标准流
标准流:又称文档流,是浏览器在渲染显示网页内容时默认采用的一套排版规则,规定了应该以何种方式排列元素
常贝标准流排版规则
1.块级元素:从上往下,垂直布局,独占一行
2.行内元素或行内块元素:从左往右,水平布局,空间不够自动折行
4 浮动
行内块问题:
浏览器解析行内块或行内标签的时候,如果标签换行书写会产生一个空格的距离
4.1 作用
网页布局
4.2 代码
.one{
background-color: pink;
float: left;
}
.two{
background-color: skyblue;
float: left;
}
4.3 特点
1.浮动元素会脱离标准流(简称:脱标),在标准流中不占位置,相当于从地面飘到了空中
2.浮动元素比标准流高半个级别,可以覆盖标准流中的元素
3.浮动找浮动,下一个浮动元素会在上一个浮动元素后面左右浮动
4.浮动标签顶对齐
5.浮动后的标签具有行内块的特点,宽高设置生效
6.浮动的元素不能通过text-align:center或者margin:0 auto水平居中
7.书写顺序:
- 浮动 / display
- 盒子模型: margin border padding 宽度高度背景色
- 文字样式
8.父级宽度不够,子级自动换行
5 清除浮动
5.1 浮动
含义∶清除浮动带来的影响
影响:如果子元素浮动了,此时子元素不能撑开标准流的块级父元素
原因:
子元素浮动后脱标→不占位置
父级不方便加高度,子级浮动会影响布局
5.2 清除浮动的方法
5.2.1 父级高度设置法
父元素设置高度,从而不影响其他网页元素的布局
5.2.2 额外标签法
操作:
1.在父元素内容的最后添加一个块级元素
2.给添加的块级元素设置clear:both,清除左右两侧浮动的影响
特点:
缺点:会在页面中添加额外的标签,会让页面的HTML结构变得复杂
.clearfix {
/* 清除左右两侧浮动的影响 */
clear: both;
}
<div class="top">
<div class="left"></div>
<div class="right"></div>
<div class="clearfix"></div>
</div>
5.2.3 单伪元素清除法
用伪元素替代额外标签
写法:
.clearfix::after {
content: '';
/* 伪元素添加的标签是行内, 要求块 */
display: block;
clear: both;
/* 为了兼容性 */
height: 0;
visibility: hidden;
}
<div class="top clearfix">
...
</div>
5.2.4 双伪元素清除法
/* .clearfix::before 作用: 解决外边距塌陷问题
外边距塌陷: 父子标签, 都是块级, 子级加margin会影响父级的位置
*/
/* 清除浮动 */
.clearfix::before,
.clearfix::after {
content: '';
display: table;
}
/* 真正清除浮动的标签 */
.clearfix::after {
/* content: '';
display: table; */
clear: both;
}
<!-- 父子级标签, 子级浮动, 父级没有高度, 后面的标准流盒子会受影响, 显示到上面的位置 -->
<div class="top clearfix">
<div class="left"></div>
<div class="right"></div>
</div>
<div class="bottom"></div>
5.2.5 overflow:hidden
给父元素设置overflow:hidden