<!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_
可以搜索 “CSS权重优先级”会有更详细的解答
用类选择器的话on要写成main的下面
.main .on{}就可以了