[ CSS补档贰 | 青训营笔记]

76 阅读2分钟

这是我参加「第五届青训营 」伴学笔记创作活动的第5天

CSS求值过程

  1. 浏览器解析Html成为DOM树
  2. 将link,style样式规则整合在一起
  3. 将每个元素对应每一个CSS属性的值(遍历所有的元素)

首先进行fittering 规则筛选,选择器匹配,属性有效,符合media等等,然后的得到一组匹配好的值,Declared Values(声明值),一个元素可以有两个声明值,cascading(排序),进行来源,limportannt,特异性,等等选出优先级最高的属性值,Cascaded Value在层叠优先值比赛中赢的那个值,defaulting,当层叠值为空的时候,使用继承或初始值,Specified Value(指定值) 有且只有一个值得到保留,resolving,进行相对值和关键字的转化 Computed Value(计算值)经过计算之后得出的值,(像60%这种值不会进行转换)formatting,将计算值进一步转换,比如关键字,百分比等都转为绝对值,Used Value(使用值),进行实际布局时用的值,不会有相对值和关键字, constraining,将小数值转为整数,最终决定作用,最终到达实际值

PS:

计算值:浏览器拿到css值之后,就可以转化出来的值
使用值:没法直接分析,必须经过渲染才进行可视

布局(Layout)

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

bjjjjjj1.png

布局相关技术

常规流(normal flow,文档流):

  • 块级从上往下
  • 行级像文字一样一行一行书写
  • 表格布局
  • FlexBox
  • Gird布局

浮动

  • 把一些元素设置成浮动效果

绝对定位

  • 不会被常规流等进行影响

盒模型

  • margin
  • border
  • padding
  • width(content)
  • height(content)

bjjjjjjjjjjjj2.png

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