笔记07 深入了解CSS|青训营

78 阅读3分钟
  • 特异度

选择器存在优先级:特异度,选择器的特异的程度,越特殊的选择器优先级越高

优先级:id>.(伪类)>E(标签)

根据计算id/伪类/标签的个数可以判断选择器的优先级,也就是选择器的特异度

[例子]特异度高的.button.primary会覆盖掉.button(.btn)这个选择器,所以当我们选择主要按钮和普通按钮的时候,页面的效果是不一样的

1.jpg

以上是一种实现复用的一个比较好的方式

  • 继承

CSS中的一些属性会继承父元素的计算值。当一个元素并没有设置(例如colour)这个属性的时候,系统会从父级去通过父级的颜色去继承父级的颜色

2.jpg

[例]strong没有设置颜色,其颜色的父级标签p颜色继承给strong

[注意]不可继承:宽度

对于不可继承,但是希望某个内容的值从父级继承,我们可以选择用显式继承

先指定继承(inherit)

3.jpg

如果累次往上查找没有父级的指定值,则要用到这个元素的初始值,当元素是不可继承同时没有被设置属性 或者没有被继承到时,就会直接使用初始值

4.jpg 在浏览器HTML和CSS如何发生关系

二.CSS的求值过程

5.jpg

1浏览器拿到HTML后会将HTML进行解析成dom树

在解析的过程中link和style的样式一起作为样式规则

2浏览器通过找到页面每一个元素对应的每一个CSS值后

3筛选规则:选择器是否匹配,选择合适的选择器

4声明值:(一组,0个-多个)

5cascading:按照样式的来源和优先级选择优先级最高的一个属性值

6层叠值:根据步骤5选出来的最终值

7defaulting:倘若层叠值为空,那么会选择一个继承值或者初始值,产生有且只有一个的唯一值

8指定值:经过步骤7选择出来的值

9resolving:指定值经过转换得到可以让浏览器直接进行渲染的计算值

10计算值:经过步骤9计算得出的值

11formatting:把关键字、百分比转换成绝对值

6.jpg

12使用值:通过步骤11得到的值

13constraining:有一些小数像素没办法进行使用则要四舍五入

14实际值:渲染时实际产生作用的值

7.jpg

[注意]计算值&使用值的区别

计算值是浏览器拿到CSS后直接转换出来的值(CSS中设置出来的值)

使用值是单纯拿到HTML和CSS没办法得到的绝对值,如设置body的宽度为100%,其宽度由实际用户的浏览器宽度决定,只有在实际布局时才能决定

三.布局

通过页面的元素,所在的容器,和兄弟结点之间的关系和自身的内容来决定元素的布局

相关技术有三种

①常规流(文档流)

②浮动:一些元素可以设置成浮动,比如文字环绕

③绝对定位

8.jpg

  • 常规流-盒模型

9.jpg

10.jpg

11.jpg

内边距:padding

如果设置了四个值那么是从最上边开始顺时针往下的值,即上右下左的顺序指定

也可以设定百分数,百分数也是相对容器的宽度来计算的

12.jpg

border:边框可以设置边框样式、粗细和颜色

13.jpg

所以可以给一个元素的四个边框设置不同的粗细和颜色我,在边框处颜色的转换是55斜切的,通过不同的颜色可以得到三角形

margin:外边距

14.jpg

15.jpg

16.jpg

实际过程中使用border-box比较多