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_

可以搜索 “CSS权重优先级”会有更详细的解答

用类选择器的话on要写成main的下面
.main .on{}就可以了