CSS-4:CSS的三大特性

一.特性一:层叠性

相同的选择器给设置相同的样式,如都设置了color或者font-size的样式,此时一个样式会覆盖(层叠)掉另外一个冲突的样式,因为不可能两个样式同时起作用

层叠性主要解决样式冲突的问题

层叠性的特征:

  • 样式冲突,遵循就近原则,哪个样式离结构近,就执行哪个样式
  • 如果样式不会冲突,那么就不会层叠(覆盖)
html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS特性之层叠性</title>
    <style>
        div {
            color: red;
        }

        div {
            color: pink;
        }
    </style>
</head>

<body>
    <div>长江后浪推前浪,前浪死在沙滩上。</div>
</body>

</html>

看完这段代码,你猜猜看<body>标签中的<div>标签里面的文字的颜色是什么?

答案是:粉色

可以按下F12键打开开发者模式,查看Element中文字的详细情况

可见确实是根据"就近原则"来执行层叠性这个特性的

html 复制代码
 <style>
        div {
            color: red;
            font-size: 12px;
        }

        div {
            color: pink;
        }
    </style>

font-size=12px;没有和第二个div选择器中的样式冲突,就不会被层叠掉

因此页面的字体大小是12像素,比之前变小了

二.特性二:继承性

继承性就是在CSS中子标签会继承父标签的一些样式,但并不是所有的样式都会继承,如color,font-size,line- , text-这些和文字相关的样式会被继承

恰当地使用继承性可以简化CSS的代码,降低CSS样式的复杂性

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS继承性</title>
    <style>
        div {
            color: skyblue;
            font-size: 18px;
        }
    </style>
</head>

<body>
    <div>
        <p>龙生龙,凤生凤,老鼠的儿子会打洞。</p>
    </div>
</body>

</html>

效果:可见,虽然没有给<p>标签设置样式,但是由于它在<div>标签内部,是<div>标签的子节点,所以会继承<div>标签的样式

打开调试工具,可以看到继承性的具体信息:

三.行高的继承

html 复制代码
font-size: 12px/24px;

12px表示字体的大小,而斜杠后面的24px表示行高的大小,为24像素

但是行高的大小也可以不跟单位,表示的是行高大小是当前元素的字体大小的多少倍

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>行高的继承</title>
    <style>
        body {
            color: cyan;
            /*cyan蓝绿色,青色*/
            font-size: 12px/1.5 'Microsoft YaHei';
        }

        div {
            /* 此时子元素div继承了父元素body的行高,行高是当前子元素文字大小的1.5倍,即14*1.5=21px */
            /* 所以其实div中的文字大小为21像素 */
            font-size: 14px;
        }
    </style>
</head>

<body>
    <div>
        <p>现在是北京时间17点50分</p>
    </div>
    <p>2025年11月17日</p>
    <p>粉红色的回忆</p>
</body>

</html>

打开开发者工具,(注意:font-size样式不支持设置行高和字体族信息,要将它改为font复合属性

修改正确后,可以发现确实<p>中的字体的字体大小继承了当前行高*1.5这个属性

同理,可以查看<div>标签外部的<p>标签中文字的字体大小:

四.特性三:优先级

当同一个元素指定多个选择器,就会有优先级的产生

规则:

  • 选择器相同,执行层叠性
  • 选择器不同,则更具选择器权重执行

|------------------|---------|
| 选择器 | 权重 |
| 继承或* | 0,0,0,0 |
| 元素选择器 | 0,0,0,1 |
| 类选择器、伪类选择器 | 0,0,1,0 |
| ID选择器 | 0,1,0,0 |
| 行内样式:style="xxx" | 1,0,0,0 |
| !important | 无效大 |

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS优先级</title>
    <style>
        div {
            color: pink;
        }

        .test {
            color: red;
        }
    </style>
</head>

<body>
    <div class="test">你笑起来真好看</div>
</body>

</html>

效果:

如设置:

html 复制代码
color:pink!important;

则最优先设置pink颜色(注意:!important单独写才起着权重最大的作用,如果它写在其他选择器内部,那么它就是属于这个选择器的权重,遇到比这个选择器权重大的选择器,那么CSS就会执行那个权重更大的选择器中设置的属性

五.优先级注意的事项

六.权重的叠加

当遇到复合选择器时,该复合选择器的权重会进行叠加

权重虽然会叠加,但永远不会进位

相关推荐
坚持就完事了2 小时前
CSS-3:背景设置
前端·css·html
坚持就完事了2 小时前
CSS-2:CSS的元素显示模式
前端·css
肠胃炎2 小时前
Flutter 基础组件
前端·flutter
酥风2 小时前
AI概念解惑系列 - RAG
前端·llm·aigc
djk88882 小时前
多标签页导航后台模板 html+css+js 纯手写 无第三方UI框架 复制粘贴即用
javascript·css·html
IT_陈寒2 小时前
Redis深度优化:10个让你的QPS提升50%的关键配置解析
前端·人工智能·后端
Hilaku2 小时前
别再吹性能优化了:你的应用卡顿,纯粹是因为产品设计烂🤷‍♂️
前端·javascript·代码规范
驯狼小羊羔2 小时前
学习随笔-hooks和mixins
前端·javascript·vue.js·学习·hooks·mixins
r***86982 小时前
Redis 6.2.7安装配置
前端·数据库·redis