复习CSS

层叠

CSS是由Cascading Style Sheets三个词的首字母缩写,翻译为层叠样式表,其中最重要的概念就是层叠。

CSS层叠是一种算法,浏览器通过它来决定将哪些CSS样式规则应用到一个元素上

当多个相互冲突的CSS声明应用于同一个元素时,CSS层叠算法会根据一定的机制,从最高权重到最低权重的顺序列出:

  • 来源(行内>内联>链接)和重要性(!important)
  • 选择器权重
  • 出现的顺序
  • 初始和继承属性(默认值)

优先级

  • 优先级就是分配给指定的 CSS 声明的一个权重,浏览器器会将最高优先级的样式应用到元素上。

  • 当多个 CSS 声明的优先级相等时(均为最高),其中最后的那个声明将会被应用到元素上。

  • important>内联 >ID>类 >标签 |伪类|属性选择 >伪对象 >继承 >通配符

ID 选择器:如 #id{}
类选择器:如 .class{}
属性选择器:如 a[href="baidu.com"]{}
伪类选择器:如 :hover{}
标签选择器:如 span{}
伪元素选择器:如 ::before{}
通配符选择器:如 *{}

关于优先级的判定:有一套计算规则参考深入理解CSS选择器优先级

继承

HTML是层级结构的, 一些设置在父元素上的css属性是可以被子元素继承的,有些则不能。

可继承的属性

种类 属性
字体属性 font、font-family、font-weight、font-size、font-style
文本属性 text-indent、text-align、text-shadow、line-height、color、
direction、word-spacing、letter-spacing、text-transform
元素可见属性 visibility
表格布局属性 caption-side、border-collapse、border-spacing、empty-cells、table-layout
列表布局属性 list-style-type、list-style-image、list-style-position、list-style
生成内容属性 quotes
光标属性 cursor

不可继承的属性

种类 属性
布局属性 display
文本属性 vertical-align、text-decoration、text-shadow、white-space
盒模型的属性 width、height、margin 、border、padding
背景属性 background、background-color、background-image
定位属性 float、clear、position、top、right、bottom、left、min-width、
min-height、max-width、max-height、overflow、clip、z-index

所有元素可以继承的属性

元素可见性:visibility

光标属性:cursor

内联元素可以继承的属性

字体系列属性

除text-indent、text-align之外的文本系列属性

块级元素可以继承的属性

text-indent、text-align