【面试题集 —— No.03】CSS样式的优先级(选择器的权重)问题

一. CSS权重

CSS权重指的是样式的优先级,当同一个元素出现样式冲突时,会比较选择器之间的权重来决定谁生效。具体的选择器权重如下:

二. 优先级分类

优先级选择器 / 样式权重值备注
一级!important10000无条件优先的属性,会覆盖页面内其他任何位置定义的元素样式,慎用
二级行内样式( style=” ” )1000会造成css难以管理,不推荐使用
三级id选择器100#content
四级类选择器、伪类选择器、属性选择器10比如: .content、:hover、:first-child
五级标签选择器、伪元素选择器1比如:div、p、:before
六级其他选择器0* 空格 + > ~

三. 优先规则

有两条或多条样式作用于同一个元素时,权重高的那条样式对元素起作用;权重相同的,则根据就近原则的样式优先,就近原则也相同时,则后定义的样式优先。

就近原则的优先级是:

  • 行内式 —— 标签内的style属性;
  • 内嵌式 —— <head>标签内的<style>标签;
  • 外链式 —— <link>标签引入的外部css样式文件;
  • 导入式 —— @import导入引入的外部css样式文件;

四. 实例解析

CSS样式优先级之间的权重比较采用的是求和比大小的模式。 所以来看两个典型的实例:

4.1 实例一

<style type="text/css">
    div{
        color:red !important;
    }        
</style>
...
<div style="color:blue">我是一行严肃的占位文字</div>

内嵌式的权重值为10000+1,下面的行内式的权重值为1000,所以文字的最终颜色为red。

4.2 实例二

<style type="text/css">
    #content div.content_left p{
        color:red;    
    }
    #content .content_left p{
        color:blue;
    }
</style>
......
<div id="content">
    <div class="content_left">
        <p>我是一行严肃的占位文字</p>
    </div>
</div>

第一条样式的权重计算:100+1+10+1,结果为112;
第二条样式的权重计算:100+10+1,结果为111。
所以段落p的最终颜色为red。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值