• 【攻破css系列——第七天】属性值的计算


    在这里插入图片描述


    1. 属性值的计算

    1.1 定义

    网页在渲染的时候,元素的所有 css 属性必须有值,这样才能保证整个网页正常实现。

    而一个元素,从所有属性都没有值,到所有的属性都有值,这个计算过程,叫做属性值计算过程。


    1.2 样式的来源

    相同选择器、不同选择器选择同一元素,会发生样式的冲突,即层叠冲突。但实际上,层叠规则还包含一个很重要的层面:样式的来源

    • 样式的来源分五种:

      1. 浏览器默认的样式;

      2. 用户自定义样式。一些页面中会提供一些让用户自定义字体大小颜色等的快捷键;

      3. 外部样式,即 <link> 引用的 CSS 后缀文件;

      4. 内部样式,即写在 <style></style> 标签内的样式;

      5. 内联样式,即直接写在 style 属性内的样式(一般不用);

    • CSS 权威指南中对样式来源的分类分成三种:

      1. 创作人员(上面提到的第3、4、5点都可归到这一点)

      2. 读者(用户自定义样式)

      3. 用户代理(浏览器默认样式)

    正常情况下,样式来源的重要性排行为:创作人员的样式 > 读者的样式 > 用户代理的默认样式。但有 !important 标志的的读者样式要强于所有其他样式,包括有 !important 标志的创作人员样式。(所以说为什么慎用 !important :权重太高,很容易出现问题 )。

    而创作人员的样式中,样式重要性排行为:内联样式 > 内部样式 > 外部样式(就近原则,内联最近所以最重要)


    1.3 层叠规则

    1.3.1 重要性

    重要性从高到低:创作人员的样式(内联样式 > 内部样式 > 外部样式) > 读者的样式 > 用户代理的默认样式


    1.3.2 特殊性

    重要性一样,比较特殊性,谁权重大谁显示 。相当于 css 三大特性的优先级


    1.3.3 源次序

    特殊性一样,比较源代码书写顺序,后覆盖前。相当于 css 三大特性的层叠性


    1.4 属性值计算规则

    1.4.1 确定声明值

    大家先和平相处,各自填上彼此没有冲突的属性的属性值,之后就是重头戏了。

    作者样式表、浏览器默认的样式表、读者样式表中没有冲突的声明,作为css属性值。


    1.4.2 层叠冲突

    对于冲突,我们一起遵守一套规则——层叠规则,先比重要性,重要性大的先填,再比特殊性(计算权重),特殊性大的再填,最后比较源次序,源次序后的填入。

    对样式表有冲突的声明使用层叠规则,确定css属性值。


    1.4.3 继承

    样式表之间可能对某些属性没有定义,这时候虽然处于和平状态,但大家也不会选择去填这个属性的属性值。但这些元素可以去和他们的父亲求助,继承对应的属性。

    对仍然没有值的属性,若可以继承,则可以继承父元素的值。 相当于 css 三大特性的继承性


    1.4.4 使用默认值

    但有些元素可能他们父亲一穷二白,使得他们无法继承,这时候只能使用默认的值。

    对仍然没有值的属性,使用默认值。


    1.5 <a> 标签样式需要单独指定的解释

    我们如果没有单独对 <a> 样式单独指定,那么作者样式表就没有关于 <a> 标签样式的值,但浏览器默认样式是有的。所以,我们进行属性值计算的时候,<a> 标签部分样式就被浏览器默认样式填上了,进而导致 <a> 继承无效。所以,我们的 <a> 标签的样式还是需要单独指定。


    参考KerwinLee的博客

    如有错误,敬请指正,欢迎交流🤝,谢谢♪(・ω・)ノ

  • 相关阅读:
    iOS上架流程详细版本
    scikit-learn.datasets 机器学习数据集
    软件开发人员 Kubernetes 入门指南|Part 2
    Abp 构造注入服务接口后运行报错 Host terminated unexpectedly!
    《项目管理》高项十大管理知识点整理(一)
    机器学习算法——K近邻算法详解
    C# PDF转HTML字符串
    浅谈Rob Pike的五条编程规范
    java数据结构之LinkedBlockingQueue
    算法竞赛进阶指南 0x68 二分图的匹配
  • 原文地址:https://blog.csdn.net/m0_51302822/article/details/127815602