深入CSS(上)
第一个了解到的新知识点是初始值,原来在CSS中每个属性都有初始值,比如背景颜色(background-color)默认初始值为透明,边距(margin)初始值为0,当然我们也能用initial关键字显式重置初始值。CSS生效要经历以下过程,从DOM树和样式规则经过过滤阶段,即选择选择器匹配,属性有效,符合当前media的css属性,而其中的声明值会通过!import,选择器特异性,书写顺序等来判断出优先级最高的一个属性值,当层叠值为空时,使用继承或者初始值,初始值和继承值还要通过转换形成绝对值,因为有些是根据电脑的属性值来生成的。 布局是确定内容的大小和位置的算法,依赖元素,容器,兄弟节点和内容来计算,布局中常规流有行级,块级,表格布局,flexbox,grid布局,而其他的还有浮动和绝对定位。新了解到的知识点有width属性中auto是由浏览器根据其他属性确定的。而height的百分数在容器有指定高度时才会生效,而padding的百分数是相对于容器的宽度。
深入CSS(下)
块级盒子和行级盒子的区别:块级盒子不和其他盒子并列排放,行级盒子和其他盒子合在一起或者拆分成多行,width和height属性不生效,inline-block,本身为行级,可以放在行盒中,可以设置宽高,作为一个整体不会被拆散多行,none时排版完全被忽略。新了解到ifc,行级排列上下文,之前只了解到块级排列上下文,ifc的排版规则为盒子在一行内水平摆放,一行放不下时换行显示,text-align决定一行内盒子的水平对齐,而vertical-align决定一个盒子在行内的垂直对齐。根元素,浮动,绝对定位,inline-block,flex子项和grid子项,overflow值不是visible的块盒会创建bfc,bfc的排放规则为盒子从上到下摆放,垂直margin合并,bfc内的盒子内的margin不会和外面的合并(这也是解决外边距塌陷的方案之一),bfc不会和浮动元素重叠。