4深入CSS(上) | 青训营

47 阅读4分钟

注:带* 部分均为个人思考、分析及补充的原创部分,包含了部分“走进前端技术栈”的内容。

01 CSS是什么

       代码组成:规则(选择器Selector、声明(属性Properly、属性值Value))

       在页面中使用CSS的三种方式:

1.       外链 <link rel=” ” href=” ”>

2.       嵌入

3.       内联(不推荐,偶尔也会用,比如ui组件库) eg. <p style=”margin:lem 0”>Example Content

*外链是最常使用的,一般推荐第一种,第二种也常用,感觉几乎就没怎么用过第三种。

02 CSS是如何工作的

       在解析HTML的过程中加载CSS、解析CSS,然后添加样式到DOM节点,创建成功DOM树,然后展示页面。

       *此部分仅展示工作原理中涉及到CSS的部分,且讲述的比较简略。

03 选择器Selector

       找出页面中的元素,以便给他们设置样式。使用多种方式选择元素(按照标签名、类名或id,按照属性,按照DOM树中的位置)。

通配选择器*全部
标签选择器P标签之类的
Id选择器给标签设置id属性,属性值需要是唯一的,样式中用#+属性值引用
类选择器Class,方便管理同一类型的内容,给其设置样式,可以出现多次,比较常用
属性选择器Disabled(属性)/属性值匹配(^=”#”,以#开头会被匹配,$=”.jpg”,以.jpg结尾会被匹配

       *主要是对选择器的各个种类进行了一个复习,学到的新知识主要还是在属性选择器区域吧,这一部分之前我只是简略了解,现在对于其用法有了具体的认知。

       伪类(pseudo-classes):不基于标签和属性定位元素,包括状态伪类、结构性伪类。

04 CSS选择器的特异度

       越特别的选择器优先级越高,计算方法:分别比较id/(伪)类/标签选择器的个数,数量多的可以进行覆盖,实现复用和继承(某些属性会自动继承其父元素的计算值,除非显式指定一个值

       显式继承:inherit,让原本不可继承的属性可继承。

初始值:在CSS中,每一个属性都有一个初始值,background-color的初始值为transparent,margin-left的初始值为0;可以使用****initial 关键字显示重置为初始值。****

       *在课程中举的例子里,能非常直观的体会到继承和复用的实用性,且初始值这个概念我也是第一次接触到,在之前的实践中,对于CSS的继承和复用的使用程度几乎为0。

05 CSS求值过程解析

image.png  

       以下是对图片中各个部分进行的一些说明解释。

       Filtering:对应用到该页面的规则用以下条件进行筛选(选择器匹配、属性有效、符合当前media等。

       声明值:declared values,一个元素的某属性可能有0到多个声明值。

       Cascading:按照来源、important、选择器特异性、书写顺序等选择出优先级最高的一个属性值。

       层叠值:cascaded value,在层叠过程中,赢得优先级比赛的那个值,比如1.2em。

       Defaulting:当层叠值为空的时候,继承或为初始值。

       指定值:specified value,经过cascading和defaulting之后,保证指定值一定不为空。

       Resolving:将一些相关值或者关键字转化成绝对值,比如em转为px,相对路径转为绝对路径。

       计算值:Computed Value,一般来说是,浏览器会在不进行实际布局的情况下所能得到的最具体的值,比如60%。

       Formatting:将计算值进一步转换,比如关键字、百分比等都转为绝对值。

       使用值:Used Value,进行实际布局时使用的值,不会再有相对值或关键字,比如400.2px。

       Constraining:将小数像素值转为整数。

       实际值:渲染时实际生效的值,比如400px。

       *在对于CSS求值过程的学习中,我更加了解了其中的原理和每个步骤的意义,这也便于我更加灵活地使用CSS选择器,虽然课程还没有全部写好笔记,但一点一点来吧。