CSS樣式的優先級和覆蓋原則


規則一:直接樣式的優先級大於繼承樣式的優先級

HTML元素既有直接定義的樣式,如內聯樣式、選擇器樣式,也有繼承於祖先的樣式,如文字顏色color、文字大小font-size。

如果一個元素的直接樣式和繼承樣式發生沖突,那么直接樣式會覆蓋繼承樣式。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .father {
      color: red;
    }

    .child {
      color: blue;
    }
  </style>
</head>
<body>
<!--"哈哈哈"顯示紅色,"呵呵呵"顯示藍色-->
<p class="father">哈哈哈<span class="child">呵呵呵</span></p>
</body>
</html>

規則二:繼承樣式沖突時,最近祖先樣式優先級高

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    body{
      color: red;
    }
    p{
      color: blue;
    }
  </style>
</head>
<body>
<!--顯示藍色-->
<p><span>哈哈哈</span></p>
</body>
</html>

規則三:直接樣式沖突時,權值高者優先級高

樣式的權值取決於樣式的選擇器,權值定義如下:

選擇器 權值
內聯樣式 1000
ID選擇器 100
類選擇器 10
偽類選擇器 10
屬性選擇器 10
元素選擇器 1
偽元素選擇器 1
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    #myId{
      color: red;
    }
    .myCls{
      color: blue;
    }
  </style>
</head>
<body>
<!--顯示紅色-->
<p id="myId" class="myCls">哈哈哈呵呵呵</p>
</body>
</html>

規則四:樣式權值相同時,后聲明的優先級高

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .cls1{
      color: red;
    }
    .cls2{
      color: blue;
    }
  </style>
</head>
<body>
<!--顯示藍色-->
<p class="cls1 cls2">哈哈哈呵呵呵</p>
</body>
</html>

規則五:后代選擇器的權值為每項權值之和

舉例來說,#nav .left p的權值=100+10+1=111。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>

    #myId p{
      color: red;
    }
    #myId .myCls{
      color: blue;
    }
  </style>
</head>
<body>
<!--顯示藍色-->
<div id="myId">
  <p class="myCls">哈哈哈呵呵呵</p>
</div>
</body>
</html>

規則六:!important的樣式優先級最高

無論是什么樣式,只要標注!important,就擁有最高優先級。當同時標注!important時,則正常計算權值,權值高者優先級高。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    #myId{
      color: red;
    }
    #myId2{
      color: blue !important;
    }
    p{
      color: orange !important;
    }
  </style>
</head>
<body>
<!--顯示橘黃色-->
<p id="myId">哈哈哈呵呵呵</p>

<!--顯示藍色-->
<p id="myId2">呵呵呵哈哈哈</p>
</body>
</html>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM