• 技术文章 >web前端 >css教程

    详解CSS中优先级和Stacking Context等高级特性,带你更深入了解CSS!!

    PHPzhongPHPzhong2020-09-27 11:46:10转载1449

    通常我们在学习CSS的时候,感觉语法很容易掌握,实际应用中却碰到各式各样难以填补的“坑”,为避免大家受到同样的困惑与不解,本文详细讲解了CSS中优先级和Stacking Context等高级特性。让你更深入了解CSS。

    CSS 优先级

    优先级是浏览器是通过判断哪些属性值与元素最相关以决定并应用到该元素上的。优先级仅由选择器组成的匹配规则决定的。如果给一个P标签增加一个类(Class),运行后Class 中的部分属性并未发生改变,及CSS选择器存在优先级问题。

    选择符优先级

    常见的选择器种类:

    每一类选择器的权值不相同,各选择器的优先级是由权值决定的,

    1.png

    来源优先级顺序,如图所示

    2.png

    3.png

    样式系统从最右边的选择符开始向左进行匹配规则。只要当前选择符的左边还有其他选择符,样式系统就会继续向左移动,直到找到和规则匹配的元素,或者因为不匹配而退出。

    CSS 优先级法则:

    1. 选择器都有一个权值,权值越大越优先;
    2. 当权值相等时,后出现的样式表设置要优于先出现的样式表设置;
    3. 创作者的规则高于浏览者:即网页编写者设置的CSS 样式的优先权高于浏览器所设置的样式;
    4. 继承的CSS 样式不如后来指定的CSS 样式;
    5. 在同一组属性设置中标有“!important”规则的优先级最大;

    CSS常用模型

    盒子模型(Box Model)就是在网页设计中经常用到的CSS技术所使用的一种思维模型。

    4.png

    盒子模型相关CSS属性元素内容(element content)、宽度及高度(Width/Height)、内边距(padding)、边框(border) 和 外边距(margin) 。

    在 CSS 中,width 和 height 指的是内容区域(element)的宽度和高度。增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸。假设框的每个边上有 10 个像素的外边距和 5 个像素的内边距。如果希望这个元素框达到 100 个像素,就需要将内容的宽度设置为 70 像素。需要的属性如下:

    基本属性

    所有东西可视为盒子模型

    5.png

    纵向Margin合并

    如果<p>的纵向margin是12px,那么两个<p>之间纵向的距离是多少?按常理来说应该是 12 + 12= 24px,但是答案仍然是 12px。因为纵向的margin是会重叠的,大的会覆盖下的。

    6.png

    Position属性规定元素的定位类型。这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。以下是Posistion属性取值范围如下:

    7.png

    Float属性

    float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。

    8.png

    Stacking context

    提供z-index栈空间特性并影响子元素渲染顺序的结构,称之为stacking context。

    9.png

    浏览器会给符合下面规则的dom元素分配一个Stacking context。

    z-index

    10.png

    Stacking order

    11.png

    性能

    12.png

    像素渲染流水线

    提升性能需要在构造流水线中每个元素都需要注意:

    CSS 选择器性能

    更多编程相关知识,请访问:编程入门!!

    以上就是详解CSS中优先级和Stacking Context等高级特性,带你更深入了解CSS!!的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:cnblogs,如有侵犯,请联系admin@php.cn删除
    上一篇:谈谈css中的3种预处理器 下一篇:css如何禁止元素的点击事件
    大前端线上培训班

    相关文章推荐

    • css如何设置相邻单元格边框之间的距离• css实现卡片式图片效果• css如何为div添加阴影效果• css实现点击切换图片效果• css中的“计算属性”是什么• 你会使用css锚点么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网