第2章 为样式找到应用目标
2.1 层叠和特殊性
- 层叠采用以下重要度次序:
- 标有!important的用户样式
- 标有!important的作者样式
- 作者样式
- 用户样式
- 浏览器/用户代理应用的样式
- 选择器的特殊性分为4个登记:a、b、c、d
- 如果是行内样式,a=1
- b是ID选择器的总数
- c等于类、伪类和属性选择器的数量
- d等于类型选择器和伪元素选择器的数量
- 伪元素和伪类的区别
伪类用于向某些选择器添加特殊的效果。
伪元素用于将特殊的效果添加到某些选择器。
总结:伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加一个实际的元素才能达到,这也是为什么他们一个称为伪类,一个称为伪元素的原因。
链接: https://segmentfault.com/a/1190000000484493
第3章 可视化格式模型
3.1外边距叠加
- 只有普通文档流中的块框的垂直外边距才会发生外边距叠加。
- 行内框、浮动框或绝对定位框之间的外边距不会叠加。
行内框和行框:
链接:http://www.cnblogs.com/rainman/archive/2011/08/05/2128068.html
元素对行高的影响
- 对于行内元素如em、strong、span和等,其padding、margin、border-top、border-bottom 不会增加行高。
padding会覆盖;margin-top和margin-bottom将重置为0
padding、border、margin-left、margin-right可用。 - img元素会影响行高
- 设置行内元素的padding、border和margin并不会撑大外层元素的高度
3.2 浮动
- 浮动元素脱离文档流,无法包裹
1 | <div class="news"> |
1 | .news{ |
- 方案1:添加一个有clear的空元素
1 | <div class="news"> |
1 | .news{ |
方案2:将div容器浮动
若没有设置长度,这样的方式,会让父元素的长度改变,和其他方案的效果不同。
1 | <div class="news"> |
1 | .news{ |
- 方案3:overflow元素
1 | .news{ |
效果同方案2
- 方案4:使用after伪类
1 | <div class="news clear"> |
1 | .news{ |
效果同方案2