鼠年全马铁人挑战 WEEK 05:CSS为什么老是吃不到?让我们来了解CSS权重!

以前我在写css的时候,常常发现没写错但为什么没反应?然后开始陷入debug迴圈,后来才发现是权重出了问题,我想这也是大家都经历过的痛吧!

在刚开始写CSS的时候,觉得要写得很精準,写到心坎里,
所以会有过于仔细的现象,导致css的权重问题,不好维护。
例如:

html样式

<div class="wrap"> <ul class="list">     <li><a href="#"><img src="img/example01">example01</a></li>     <li><a href="#"><img src="img/example02">example02</a></li>     <li><a href="#"><img src="img/example03">example03</a></li> </ul>    </div> 

CSS样式

.wrap .list ul li a img{weight: 300px;}

白话文:class name为wrap,下的class name为list,下的li,下的a,下的img
宽度为300px

其实只要这样写就可以了

.lsit a{  width: 300px;}

所谓的权重就是指 css 的优先权,例如:

相同权重后写的 css 可以覆盖先写的 css当两个选择器同时作用在一个元素,权重高的优先生效

但是这些权重是怎么计算的呢?

基本权重大小

inline style > ID > Class > Element > *

我们以分数做为权重的大小,给分越高权重越高

'*' 0分

很常用到的全站预设值,所以只要权重超过就可以覆盖过它的预设。

全站预设值*{    margin: 0;padding: 0;border: 0; }

http://img2.58codes.com/2024/20124879xK7nAUI1OQ.png

Element 1分

Element 总共有哪些呢?下面列出部分常见的

html, body, div, span, h1, h2, h3, h4, h5, h6,p,ol, ul, li,a,img...

http://img2.58codes.com/2024/20124879Se7svYiLFO.png

class 10分

class在 html 上面会写成 class="box" ,在 css内长这样 .box ,前方会有一个点'.'

.box{ height: 300px;}

http://img2.58codes.com/2024/20124879YZPXF6YJu6.png

id 100分

在 html 上面是这样写的 id="box" ,在 css 内长这样 #box,前方会带井字号。

#box{height: 300px;}

http://img2.58codes.com/2024/20124879CoGDRytD9I.png

inline style attribute 1000分

所谓的 inline style attribute 就是写在 html 行内的 style

<div style="color:yellow">    CSS Specificity</div>

http://img2.58codes.com/2024/20124879uyFFJmB4dR.png

範例

ul li 都是 element 所以加起来是 2分body div ul li a span 总共 6 个 element 所以加起来是 6分body.list 一个 element 加上一个 class ,所以是 1+10=11分.myclass ul li  两个 element 加上一个 class ,所以是 10+1+1=12分

最后最后的王牌叫做 !important

!important 的权重非常高,可以盖过所有的权重

.box{    height: 300px;!important}

http://img2.58codes.com/2024/20124879qR3dxnqdLH.png
只有 !important 能超越 !important,所以没事不要乱用
这个意思是,当你在任何一段 css 里面下了 !important,如果想要覆盖原本的 css 又不直接改原本的档案时,后来写的 css 也必须加上 !important 才行。这样会使得 css 很杂乱,因此如果了解权重,基本上用到 !important 的机会非常少。

.box{    background-color: #000000;!important}.box{    background-color:#ffffff;!important}

结论

!important > inline style > ID > Class> Element > *

所以在写css时要注意权重,才不会发生写出来css正确,无法出现效果的情况。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章