CSS样式优先级

给DOM元素设置样式,通常通过以下几种方式:

  • 通过ID选择器
  • 通过类选择器
  • 通过属性选择器
    除了上面的几个之外,还有特殊的选择方式,比如
  • 伪类
  • 伪元素
    通常来说,设定样式一般不会有什么问题,但是如果设置了几种样式,比如
// html
<div id = 'test'>
	<p>test</p>
</div>
// css
#test  p {
	color: orange
}
div  p {
	color: purple
}

各位觉得最终的样式是什么样子的?
最终会显示紫色。
其中的规则是这样的
1)类型选择器(type selectors)(例如, h1)和 伪元素(pseudo-elements)(例如, ::before)权重1
2)类选择器(class selectors) (例如,.example),属性选择器(attributes selectors)(例如, [type=“radio”]),伪类(pseudo-classes)(例如, :hover)
权重10
3)ID选择器(例如, #example)权重100
4) 内联样式 权重1000
优先级依次递增,权重的计算与出现的先后顺序无关,同等权重的后出现的覆盖先出现的
通配选择符(universal selector)(*), 关系选择符(combinators) (+, >, ~, ’ ') 和 否定伪类(negation pseudo-class)(:not()) 对优先级没有影响。(但是,在 :not() 内部声明的选择器是会影响优先级)。
除了上述声明的还有一些特别的规则:
1)样式树的距离

// html
<html>
<body>
  <h1>Here is a title!</h1>
</body>
</html>
// css
body h1 {
  color: green;
}
html h1 {
  color: purple;
}

第一个要优先于第二个
2)直接添加的样式 > 继承的样式

// html
<html>
<body id="parent">
  <h1>Here is a title!</h1>
</body>
</html>
// css
#parent {
  color: green;
}
h1 {
  color: purple;
}

显示紫色
如果想实现样式覆盖,应该怎么做?
1) 实现相同的样式树,放在后面
2)!important
3)使用更高的优先级
总结起来,如下图所示在这里插入图片描述参考资料:
MDN
CSS
CSS-ch

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值