深入了解CSS | 青训营笔记

61 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第3天

继承

某些属性会自动继承其父元素的计算值,除非显式指定一个值

显式继承

* { box- sizing: inherit; } html { box-sizing: border-box;} Bome- widget { box-sizing: content- box; }

初始值

  • CSS中,每个属性都有一个初始值
    • background-color的初始值为transparent
    • margin-left的初始值为О
  • 可以使用initial关键字显式重置为初始值
    • background-color: initial

CSS求值过程

image.png

  • filtering:对应用到该页面的规则用以下条件进行筛选:选择器匹配、属性有效、符合当前media等
  • 声明值:Declared Values,一个元素的某属性可能有0到多个声明值。比如:p i font-size:16px}和p.text { font-size:1.2em }
  • cascading:按照来源、!important、选择器特异性、书写顺序等选出优先级最高的一个属性值
  • 层叠值:Cascaded Value,在层叠过程中,赢得优先级比赛的那个值。比如1.2em
  • defaulting:当层叠值为空的时候,使用继承或初始值
  • 指定值:Specified Value,经过cascading和defaulting之后,保证指定值一定不为空
  • resolving:将一些相对值或者关键字转化成绝对值,比如em 转为px,相对路径转为绝对路径
  • 计算值:Computed Value,一般来说是,浏览器会在不进行实际布局的情况下,所能得到的最具体的值。比如60%
  • formatting:将计算值进步转换,比如关键字、百分比等都转为绝对值
  • 使用值:Used Value,进行实际布局时使用的值,不会再有相对值或关键字。比如400.2px
  • constraining:小数像素值转为整数
  • 实际值:渲染时实际生效的值,比如400px

布局

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

相关技术

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

width

  • 指定content box宽度
  • 取值为长度、百分数、auto
  • auto由浏览器根据其它属性确定
  • 百分数相对于容器的content box宽度

height

  • 指定content box高度
  • 取值为长度、百分数、autoauto取值由内容计算得来
  • 百分数相对于容器的 content box高度
  • 容器有指定的高度时,百分数才生效