深入理解CSS(上)|青训营

51 阅读3分钟

深入理解CSS(上)|青训营

CSS选择器的特异度

CSS 选择器优先级,也叫特异性,是指在给 HTML 元素应用样式时,如果有多个 CSS 选择器同时指向了这个元素,那么优先级高的选择器的样式会最终应用到这个元素上。

不同选择器的权重

CSS 选择器的优先级是通过权重计算来得到的,选择器权重分为三大类,从高到低依次是:

  1. ID 选择器
  2. Class、属性和伪类选择器
  3. 类型和伪元素选择器

除了选择器之外,行内样式的优先级最高,也就是通过 html 中的 style 属性定义的样式。但是它的权重也可能会被!important覆盖。

继承

某些属性会自动继承父元素的计算值,除非显式指定一个值。一般和字体相关的都可以继承,盒模型相关的都不能继承

显式继承

  • inherit关键字: 有时,我们想用继承代替层叠值。这时候可以用inherit关键字。可以用它来覆盖另一个值,这样该元素就会继承其父元素的值。

初始值

  • initial关键字: 在CSS中,每一个属性都有一个初始(默认)值。如果将initial值赋给某个属性,那么就会有效的将其属性重置为默认值,这种操作相当于硬生生的复位了该值。

CSS求值过程解析

求值过程:

  1. 确定声明值(参考样式表中没有冲突的声明,作为css属性值)
  2. 层叠冲突(对样式表有冲突的声明使用层叠规则,确定css值)
  3. 使用继承(对仍然没有值的属性,若可以继承,则继承父元素的值)
  4. 使用默认值(对仍然没有值的属性,使用默认值)
  • resolving能转换的值,只看css和html就能算出具体值的
  • formatting转换的值,是需要布局后才能知道的值,比如百分比等,要知道父元素的大小才能计算
  • 继承过程中,子元素是继承到父元素的计算值,即如果父元素是1.2em,那子元素继承的不是1.2em,而是父元素通过resolving得到的计算值

CSS布局方式及相关技术

定义

  • 确定内容的大小的位置的算法
  • 依据元素、容器、兄弟节点和内容等信息来计算

布局相关技术

  • 常规流:行级、块级、表格布局、FiexBox、Crid布局
  • 浮动
  • 绝对定位

盒模型

  • 注意height和width设置百分比时,表示相对于容器的content box的大小,容器有指定高度时,百分数才生效。
  • 注意padding设置百分数也是相对于容器宽度。
  • 当四条边框颜色不同时,边角处是这样切分的,将元素宽高设置为0,再把其中的几个边框设为透明,则可以得到各种三角形
  • margin:0 auto 可以实现水平居中
  • margin collapse指在垂直方向上有margin的折叠,两者之间的间距取的是最大的margin设置,在文字排版上会比较方便
  • 设置box-sizing:border-box 后,指定的宽高是加上了border和padding的大小