CSS 权重(样式总是被覆盖, 你知道原理么?)

结论

1.每个选择器有自己的权重得分

2.不同的选择器设置的样式属性不同时, 不会发生覆盖问题, 最后显示时所有样式会合并

3.不同的选择器设置的样式属性相同时,权重大的样式会被使用,当权重也相同时,按样式的书写顺序进行覆盖,后面的样式会覆盖前面

4.当使用复合选择器时, 总权重为各个基础选择器的累加得分

选择器样式权重表

选择器权重得分
行内样式1000
指定ID100
类、伪类、后代、子元素10
元素、伪元素1
!important优先级最高

1. 简单选择器案例

代码:

<!doctype html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>CSS权重(样式总是被覆盖, 你知道原理么?)</title>
  <style>
    #box {
      width: 200px;
      background-color: gray;
    }

    .container {
      height: 200px;
      background-color: skyblue;
    }
  </style>
</head>
<body>
<div id="box" class="container"></div>
</body>
</html>

运行:运行效果图

从结果看出尽管.container的书写顺序在后, 其设置的background-color仍会被覆盖

分析:

按照之前的权重表可以算出权重得分 #box=100, .container=10

所以当两个选择器设置的样式相同时, 会以 #box为准。当设置的属性不同时, 会进行合并。

合并: width, height

覆盖: .container的background-color被覆盖

2. 复合型选择器的案例

代码:

<!doctype html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>CSS权重(样式总是被覆盖, 你知道原理么?)</title>
  <style>
    div .container {
      width: 200px;
      background-color: gray;
    }

    p {
      height: 200px;
      background-color: skyblue;
    }
  </style>
</head>
<body>
<div>
  <p class="container"></p>
</div>
</body>
</html>

运行:

运行效果图

分析:

我们已经知道了样式覆盖是因为权重, 所以我们直接算权重得分

复合选择器 = 11 ( div = 1, .container = 10)

p = 1

复合选择器的权重 > p的权重

所以当样式相同时, 必然会被复合选择器覆盖

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值