1. 程式人生 > >CSS樣式優先順序與權重計算方式

CSS樣式優先順序與權重計算方式

CSS一共有四種樣式控制方式:行內樣式、內嵌樣式、連結樣式、匯入樣式(@import).選擇器則有標籤選擇器,類名選擇器,ID選擇器,和偽標籤選擇器四種.那麼它們的優先順序與權重又是計算的呢?

首先上權重計算方法:

一.內聯 > id > class >標籤

權重計算數值

1.內聯樣式        1000
2.id樣式          0100
3.class樣式       0010   hover,nth-child()等CSS3"偽標籤"權重與"真-class"相同;
4.標籤樣式        0001

以後是權重計算數值,也就是說,ul li a{}中的樣式,將會比li a{}級別更高,因而

<ul>
    <li>
        <a>test</a>
    </li>
</ul>


<style>
 ul li a{   //權重等於0003
     color:red
 }

li a{   //權重等於0002
    color:blue
}
</style>

中的test字型顏色將會是紅色而非藍色.當樣式設定位於同一種樣式控制方式,比如全為連結時候,將會後者覆蓋前者(CSS疊加樣式表是進行樣式的不斷疊加,因而同一權重,後者會覆蓋前者).

二,同權重,樣式設定方式不同

而當樣式設定權重相同但位於不同樣式設定方式時,將會按照
行內樣式

>內嵌樣式>連結樣式.進行樣式疊加.也就是說

假如

<ul>
    <li>
        <a>test</a>
    </li>
</ul>


<style>
 ul li a{   //權重等於0003,但是位於連結樣式中
     color:red
 }

ul li a{   //權重等於0003,但是位於內嵌樣式中
    color:blue
}
</style>

而這一次,test文字的字型顏色將為藍色.

三.匯入樣式(@import)與內嵌樣式

至於匯入樣式(@import)則是將其匯入到內嵌樣式中,故而其優先順序與內嵌樣式相同,同樣符合疊加原理,或者說就近原則

.

<link href="test.css" type="text1/css" rel="stylesheet">
    <title>新建網頁標題</title>
    <style>
        @import "test2.css";
    </style>
</head>
<body>

// 此時同權重樣式會顯示"@import中的",而非"<link/>"中的


    <title>新建網頁標題</title>
    <style>
        @import "test2.css";
    </style>
    <link href="test.css" type="text1/css" rel="stylesheet">
</head>
<body>

// 此時同權重樣式會顯示"<link/>中的,而非@import"中的

四,測試宣告

本文所言均已經經過本人測試,而本文則是為了整理以往的網路材料,並修正其他前輩們的一些錯誤,如果你發現了本文中的一些錯誤,遺漏或者對此有什麼疑問,請在博文下方留言,本人會及時回覆.以下是本人的測試環境.

本文章中測試環境,如下:

谷歌版本: 50.0.2652.2 (64-bit);

Opera:36.0.2130.32 ,Windows 10 64-bit (WoW64);

火狐:44.0.2;

IE:11.162.10586.0;