文章目录
- 1. 结构伪类选择器
- 2. 伪元素
- 3. 标准流
- 4. 浮动
- 5. 清除浮动
-
- 5.1 直接设置父元素高度
- 5.2 额外标签法
- 5.3 单伪元素清除法
- 5.4 双伪元素清除法
- 5.5 给父元素设置overflow
- 6. 案例代码
1. 结构伪类选择器
- 作用: 根据元素在HTML中的结构关系查找元素
- 优势: 减少对于HTML中类的依赖,有利于保持代码整洁
- 场景: 常用于查找某父级选择器中的子元素
选择器 |
说明 |
E:first-child {} |
匹配父元素中第一个子元素,并且是E元素 |
E:last-child {} |
匹配父元素中最后一个子元素,并且是E元素 |
E:nth-child(n) {} |
匹配父元素中第n个子元素,并且是E元素 |
E:nth-last-child(n) {} |
匹配父元素中倒数第n个子元素,并且是E元素 |
- 注意点:
- n为:0、1、2、3、4、5…
- 通过n可以组成常见公式
功能 |
公式 |
偶数 |
2n、even |
奇数 |
2n+1、2n-1、odd |
找到前5个 |
-n+5 |
找到从第5个往后 |
n+5 |
2. 伪元素
- 伪元素: 一般页面中的非主体内容可以使用伪元素
- 区别: 元素——HTML设置的标签;伪元素——CSS模拟出的标签效果
伪元素 |
作用 |
::before |
在父元素内容的最前添加一个伪元素 |
::after |
在父元素内容的最后添加一个伪元素 |
- 注意点: 必须设置
content属性
才能生效;伪元素默认是行内元素
3. 标准流
- 又称文档流,是浏览器在渲染显示网页内容时默认采用的一套排版规则,规定了应该以何种方式排列元素
- 常见标准流排版规则:
- 块级元素:从上往下,
垂直布局
,独占一行
- 行内元素、行内块元素:从左往右,
水平布局
,空间不够自动折行
4. 浮动
- 作用: 早期——图文环绕;现状——网页布局
- 代码:
float:left / right
- 特点:
- 浮动元素会脱离标准流(简称:脱标),在标准流中不占位置
- 浮动元素比标准流高半个级别,可以覆盖标准流中的元素
- 浮动找浮动,下一个浮动元素会在上一个浮动元素后面左右浮动
- 浮动元素有特殊的显示效果:一行可以显示多个;可以设置宽高
- 注意点: 浮动元素不能通过text-align:center或者margin:0 auto设置居中
5. 清除浮动
5.1 直接设置父元素高度
- 优点: 简单方便
- 缺点: 有些布局中不能固定父元素高度
5.2 额外标签法
- 操作: 在父元素内容的最后添加一个块级元素,给添加的块级元素设置
clear:both
- 缺点: 会在页面中添加额外的标签,会让页面的HTML结构变得复杂
5.3 单伪元素清除法
.clearfix::after {content:'';display:block;clear:both;/* 补充代码,浏览器兼容性 */height:0;visibility:hidden;}
5.4 双伪元素清除法
/* 解决外边距塌陷的问题*/.clearfix::before,.clearfix::after { content: ''; display: table;}/* 真正清除浮动的标签 */.clearfix::after{ clear: both;}
5.5 给父元素设置overflow
- 操作: 直接给父元素设置overflow:hidden
- 优点: 方便
6. 案例代码
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> *{ margin: 0; padding: 0; } .box{ margin: 0 auto; width: 1000px; height: 600px; } .left{ float: left; width: 180px; height: 600px; background-color: aquamarine; } .right{ float: right; width: 800px; height: 600px; } ul{ list-style: none; } .right li{ float: left; margin-right: 20px; margin-bottom: 20px; width: 185px; height: 290px; background-color: paleturquoise; } .right li:nth-child(4n){ margin-right: 0; } </style></head><body> <div class="box"> <div class="left"></div> <div class="right"> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> </div> </div></body></html>
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; } .nav{ margin: 50px auto; width: 640px; height: 50px; } ul{ list-style: none; } .nav li{ float: left; } .nav li a{ display: inline-block; width: 80px; height: 50px; background-color: lightpink; text-align: center; line-height: 50px; color: aliceblue; text-decoration: none; } .nav li a:hover{ background-color: deeppink; } </style></head><body> <div class="nav"> <ul> <li><a href="#">新闻1</a></li> <li><a href="#">新闻2</a></li> <li><a href="#">新闻3</a></li> <li><a href="#">新闻4</a></li> <li><a href="#">新闻5</a></li> <li><a href="#">新闻6</a></li> <li><a href="#">新闻7</a></li> <li><a href="#">新闻8</a></li> </ul> </div> </body></html>