浅谈CSS中的继承性,特殊性,层叠性和重要性

yizhihongxing

浅谈CSS中的继承性、特殊性、层叠性和重要性攻略

继承性

在CSS中,当某个元素没有设置特定的属性时,它会从其父元素中继承该属性。这种继承称为CSS的“继承性”。CSS属性根据其继承性可以分为两类:

  • 可以继承的属性,如color、font-size、text-indent等;
  • 不可继承的属性,如border、margin、padding等。

所有可继承的属性都会被继承到子元素上,但是不可继承的属性不会。

示例1:

<!DOCTYPE html>
<html>
<head>
    <title>CSS继承示例</title>
    <style type="text/css">
        body {
            font-size: 16px;
            color: #333;
        }

        h1 {
            font-size: 2em;
        }
    </style>
</head>
<body>
    <h1>这是一个标题</h1>
    <p>这是一个段落</p>
</body>
</html>

上面这个示例中,p标签继承了body标签的font-size和color属性,而h1标签继承了body标签的color属性,并设置了自己的font-size属性。因此,h1标签中的文字颜色会变成与父元素相同的颜色,但是字体大小会变大。

特殊性

当多个CSS规则应用于同一元素时,可能会出现冲突。这时CSS会通过“特殊性”的概念来解决这个问题。特殊性是用于确定哪些规则将会覆盖其他规则的一种机制,并且它是从选择器中的某些值计算得出的。

CSS中特殊性的计算方法是根据选择器中某些值来进行计算。如以下示例选择器:

h1#title a.link:hover {}

其中,h1选择器特殊性计算公式为:0,1,0,0。#title选择器特殊性计算公式为:0,1,0,1。a.link选择器特殊性计算公式为:0,0,1,1。最后:hover选择器特殊性计算公式为:0,0,0,1。

计算后将四个维度上的值相加得到每条规则的特殊性,然后再进行比较,可得到哪条规则具有更高的特殊性。

示例2:

<!DOCTYPE html>
<html>
<head>
    <title>CSS特殊性示例</title>
    <style type="text/css">
        p {
            color: blue;
        }

        #content p {
            color: red;
        }
    </style>
</head>
<body>
    <div id="content">
        <p>这是一个段落</p>
    </div>
</body>
</html>

上面这个示例中,p标签既匹配了p选择器规则,又匹配了#content p选择器规则,但是因为后者的特殊性更高,所以p标签的文字颜色变成了红色。

层叠性

在CSS中,属性可以同时被多个规则应用,这时就需要使用层叠性来确定属性最终的值。层叠性的原则是:后来的规则会覆盖先前的规则,如果特殊性相同时,则使用后面的规则。

层叠性的实现过程是,首先找到所有匹配的规则,并将其按照特殊性顺序排序。然后将所有规则中具有相同特殊性的属性组合在一起,形成一个属性集合。接着按照顺序将所有属性应用到元素上。

示例3:

<!DOCTYPE html>
<html>
<head>
    <title>CSS层叠性示例</title>
    <style type="text/css">
        p {
            color: blue;
            font-size: 16px;
        }

        p {
            color: red;
        }

        p {
            font-size: 24px;
        }
    </style>
</head>
<body>
    <p>这是一个段落</p>
</body>
</html>

上面这个示例中,p标签同时匹配了三个规则,它们都设置了p标签的color属性,但是由于最后一个规则特殊性更高,所以p标签的颜色最终变为了红色。而对于font-size属性,虽然其中的三个规则都设置了font-size属性,但是最终的font-size属性是24px,因为它就是最后一个规则设置的。

重要性

当样式表中的某一条规则使用!important关键字时,它的特殊性会被提升到最高级,优先级高于所有其他规则,包括内联样式表和行内样式。

!important关键字可以通过覆盖任何其他颜色样式来实现,它也可以在任何字体样式上工作。

示例4:

<!DOCTYPE html>
<html>
<head>
    <title>CSS重要性示例</title>
    <style type="text/css">
        p {
            color: blue !important;
            font-size: 16px;
        }

        #content p {
            color: red;
        }
    </style>
</head>
<body>
    <div id="content">
        <p>这是一个段落</p>
    </div>
</body>
</html>

上面这个示例中,两个规则同时匹配p标记,其中第一个规则设置了p标签的color属性,并使用了!important关键字。因为!important关键字的优先级更高,所以p标签的文字颜色变成了蓝色,而不是匹配第二个规则后变成红色。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈CSS中的继承性,特殊性,层叠性和重要性 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • CSS根据用户需求设置网页字体大小

    要根据用户需求设置网页字体大小,可以使用CSS中的相对单位和JavaScript来实现。我们可以使用相对大小如em、rem或vw/vh等单位来设置字体大小。此外,如果用户需要调整字体大小,我们还可以用JavaScript来检测用户的浏览器设置并相应调整字体大小。 下面是一些可以实现此功能的步骤: 使用em、rem和vw/vh等相对单位设置字体大小 使用相对单…

    css 2023年6月9日
    00
  • Java Selenide 简介与用法

    Java Selenide 简介与用法 简介 Java Selenide 是一个简单的 Selenium Java 框架,可以简化 Web UI 自动化测试。它使用选择器来定位 Web 元素,可以很方便地处理 Ajax 等异步加载,提供了很多有用的 API。相对于传统的 Selenium,Selenide 更易读易维护。 安装 Selenide 的依赖可以在…

    css 2023年6月9日
    00
  • css3高级选择器使用方法

    下面是关于 “CSS3高级选择器使用方法” 的完整攻略。 1. 简介 CSS选择器是CSS规范中最基本的概念之一,它决定了一个元素应该如何被渲染。在 CSS3 中,新增了许多高级选择器,使得我们可以更精确地选取页面中的元素,从而提高我们的开发效率。 2. CSS3高级选择器 2.1 属性选择器 属性选择器是一种根据属性值来选择元素的CSS3选择器。常见的有下…

    css 2023年6月9日
    00
  • web前端设计师们常用的jQuery特效插件汇总

    欢迎来到我们的网站!本站的目的是为Web前端设计师们提供实用的jQuery特效插件,帮助他们更好地设计前端界面。下面是我们整理的jQuery特效插件攻略: 1. 选择jQuery特效插件的基本准则 选择合适的jQuery插件需要参考以下几个基本准则: 插件应该能够帮助你解决界面设计中遇到的实际问题; 插件应该是易用和可定制的; 插件作者应该是可靠的,并且拥有…

    css 2023年6月10日
    00
  • JavaScript实现多个物体同时运动

    要实现多个物体同时运动,一般需要使用JavaScript的定时器(setInterval或者setTimeout)以及DOM操作。下面是实现该功能的完整攻略及示例说明: 创建物体 首先需要在HTML中创建需要运动的多个物体,通常使用div元素来实现。每个div元素需要通过CSS进行样式设置,例如:宽度、高度、背景颜色等。 <div id="o…

    css 2023年6月10日
    00
  • vue中使用定义好的变量设置css样式详解

    在 Vue 中,我们可以使用定义好的变量来设置 CSS 样式。下面是一个完整的攻略,包含了如何在 Vue 中使用定义好的变量设置 CSS 样式的过程和两个示例说明。 在 Vue 中使用定义好的变量设置 CSS 样式 1. 定义变量 首先,我们需要在 Vue 中定义变量。我们可以在 data 中定义变量,也可以在 computed 中定义变量。下面是一个示例:…

    css 2023年5月18日
    00
  • border-radius给元素添加圆角边框的方法

    当我们需要给元素添加圆角边框时,可以使用CSS属性border-radius来轻松实现。下面是关于如何使用border-radius属性来添加圆角边框的攻略: 一、使用border-radius属性添加圆角边框 1. 在CSS样式中设置border-radius属性 使用border-radius属性可以轻松设置元素的圆角边框,它接受一个或多个值,用空格分隔…

    css 2023年6月10日
    00
  • 三剑客:offset、client和scroll还傻傻分不清?

    当我们在页面布局时,经常需要用到三个CSS属性:offset、client和scroll,它们被称为“三剑客”,但是它们的区别常常被人误解。接下来我们详细讲解它们的区别及使用情况。 offset offset指的是当前元素在整个页面文档中的位置,它包含四个值:offsetTop、offsetLeft、offsetWidth和offsetHeight。 off…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部