这是我参与「第四届青训营 」笔记创作活动的第3天。 本次笔记的内容是CSS第二部分。
CSS的内容繁杂,细节众多,在过去的学习中,我一再感到缺乏清晰的脉络,难以全面地掌握。本次课程对CSS相关内容进行了系统的梳理和讲解。
前篇见链接:理解CSS(一)| 青训营笔记
二、深入CSS
2.1 选择器的特异度
CSS中,同一个标签可能可以匹配到多条不同的样式规则,因此,标签最终的样式由选择器的特异度又称优先级决定。最基本的,以下优先级依此递增:类型选择器,类选择器,ID选择器;除此之外,一些保留字如!important也会影响到最终生效的样式对应的选择器。
2.2 继承
每一个直接作用于元素的CSS规则总是会接管该元素从祖先元素继承而来的规则,即继承父元素的计算值,除非显示地指定一个值。通过inherit保留字可以显示地继承样式;每个属性都具有初始值,使用initial关键字可以将属性重置为初始值。
2.3 CSS求值过程
在解析出DOM树和样式规则后,首先通过选择器匹配、属性有效、媒介符合等方式对规则进行筛选,取得声明值;根据选择器优先级比较,得出优先级最高的属性值,即层叠过程;当层叠值为空时,使用继承值或初始值,由此产生了必不为空的指定值;接着,在解析步骤中将部分相对值或关键字转化为绝对值,并在规格化步骤中进一步转化直到所有值成为绝对值;最后,绝对值中的浮点数被转化为整型以供渲染。
2.4 布局
布局是指确定内容的大小和位置的算法,它依据元素、容器、兄弟节点和内容等信息进行计算。前端常用的布局方式包括floats、position、flexbox、gird、流式布局等,每一种方式都有诸多细节,要正确应用和调试需要仔细了解其特性和区别。
2.5 进一步学习
青训营的课程时间有限,要更深入地了解并熟练掌握CSS,需要后期再下苦工。要进一步学习CSS,可以充分利用 MDN 和 W3C CSS 规范,要保持探索欲,充分利用浏览器的开发者工具来在实践中加深了解,更要紧跟社区和业界发展,持续学习,更新自己的知识和技能,了解并运用CSS层出不穷的新特性。