瀏覽器對于css不同類中的同屬性不同值優(yōu)先級問題

字號:


    自己做點小程序的時候發(fā)現(xiàn)在一個標(biāo)簽中的不同兩個類給同一屬性設(shè)定了不同值的時候,最終屬性取值的特點:
    上面這句話有夠拗口的,用例子說明一切吧。
    csstest.html:
    代碼如下:
    <!doctype html>
    <html>
    <head>
    <title>csstest</title>
    <link rel=stylesheet href=1.css />
    <link rel=stylesheet href=2.css />
    </head>
    <body>
    <!-- 類 a b c d 在1.css中,類 e 在2.css中 -->
    <p class=a b>aaaaaaa</p>
    <p class=b a>bbbbbbb</p>
    <p class=c e>ccccccc</p>
    <p class=e c>ddddddd</p>
    <p class=d e>eeeeeee</p>
    <p class=e d>fffffff</p>
    </body>
    </html>
    1.css
    代碼如下:
    .a{
    cursor: pointer;
    font-size: 1em;
    }
    .b{
    cursor: move;
    font-size: 2em;
    }
    .c{
    cursor: crosshair;
    font-size: 3em;
    }
    .d{
    cursor: help;
    font-size: 4em !important;
    }
    2.css
    代碼如下:
    .e{
    cursor: progress;
    font-size: 5em;
    }
    最后在瀏覽器審查元素的時候發(fā)現(xiàn):
    1、第一第二段落中,鼠標(biāo)樣式都為move,字體大小都為2em,僅類b發(fā)揮了作用。
    則說明:無論在標(biāo)簽中class屬性里類的順序如何,最終相同的屬性值取css文件中聲明位置最后的那個。
    2、第三第四段落中,鼠標(biāo)樣式都為progress,字體大小都5em,僅類e發(fā)揮了作用,而在加載html頁面的時候,先加載1.css,再加載2.css。
    則說明:無論在標(biāo)簽中class屬性里類的順序如何,最終相同的屬性值取最后加載的css文件中聲明位置最后的那個。
    3、第五第六段落中,鼠標(biāo)樣式都為progress,字體大小都4em,類e起效,類d由于設(shè)定了!important,也起效。
    則說明:設(shè)定了!important的值會優(yōu)先被選取。
    后來我又測試了一下,把e中的font-size也加上!important之后,字體大小會變?yōu)?em,則對于都設(shè)定了!important的屬性值來說,遵循上面的規(guī)律。