问题描述
- CSS优先级的小问题,谢谢了
-
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <style> .main{width:200px; height:200px; background:black;} .main ul li{background:white;} .on{background:blue;} </style> <body> <div class="main"> <ul> <li class="on">第一行文字的颜色为什么不是blue</li> <li>第一行文字</li> <li>第一行文字</li> <li>第一行文字</li> </ul> </div> </body> </html>
第一行文字的颜色为什么不是blue?
明明给第一行的li定义class了啊<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <style> .main{width:200px; height:200px; background:black;} .main ul li{background:white;} #on{background:blue;} </style> <body> <div class="main"> <ul> <li id="on">第一行文字的颜色是blue了</li> <li>第一行文字</li> <li>第一行文字</li> <li>第一行文字</li> </ul> </div> </body> </html>
用id选择器就好了
难道.main ul li 的优先级大于 class='on' ??
解决方案
从CSS代码存放位置看权重优先级:内嵌样式 > 内部样式表 > 外联样式表。其实这个基本可以忽视之,大部分情况下CSS代码都是使用外联样式表。
从样式选择器看权重优先级:important > 内嵌样式 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符。
important的权重为1,0,0,0
ID的权重为0,1,0,0
类的权重为0,0,1,0
标签的权重为0,0,0,1
伪类的权重为0,0,1,0
属性的权重为0,0,1,0
伪对象的权重为0,0,0,1
通配符的权重为0,0,0,0
(A) .main ul li{background:white;} /*0,0,1,2*/ /*= 12*/
(B) .on{background:blue;} /*0,0,1,0*/ /*= 10*/
(C) #on{background:blue;} /*0,1,0,0*/ /*= 100*/
所以优先级:C>A>B
参考文章如下:
1、http://www.cnblogs.com/52css/archive/2012/06/07/2540550.html
http://wenku.baidu.com/link?url=SxULPRpoqoAEdTSuKxxlJqCDecVogWdRc3Hp_RxFkht4tsIi_mve1omPaxA4QQ4T1jUop8Ms7WPx0trA6jrf2SCVpT47beSmiPoV_H5IDb_
解决方案二:
JS,CSS加载中的小问题
CSS优先级
css的优先级
解决方案三:
可以搜索 “CSS权重优先级”会有更详细的解答
解决方案四:
用类选择器的话on要写成main的下面
.main .on{}就可以了