1. 程式人生 > >css的三大特性繼承性,層疊行,優先級

css的三大特性繼承性,層疊行,優先級

並且 img 分享 指定 作用 important 通配 技術 text

1、繼承性

#1、定義:給某一個元素設置一些屬性,該元素的後代也可以使用,這個我們就稱之為繼承性

#2、註意:
     1、只有以color、font-、text-、line-開頭的屬性才可以繼承
     2、a標簽的文字顏色和下劃線是不能繼承別人的
      3、h標簽的文字大小是不能繼承別人的,會變大,但是會在原來字體大小的基礎上變大
    
    ps:打開瀏覽器審查元素可以看到一些inherited from。。。的屬性
#3、應用場景:
    通常基於繼承性統一設置網頁的文字顏色,字體,文字大小等樣式
技術分享圖片
<!DOCTYPE html>
<html lang="
en"> <head> <meta charset="UTF-8"> <title>後代選擇器</title> <style type="text/css"> div { color: red; font-size: 50px; } </style> </head> <body> <div> <h1>我是標題</h1> <p><a href="
#">偶的博愛</a></p> <ul> <li>導航1</li> <li>導航2</li> <li>導航2</li> </ul> </div> <div> <div> <p>aaaa</p> </div> <div> <p>bbbb</p> </div> </div> </body> </html> 示例
示例

2、層疊性

#1、定義:CSS全稱:Cascading StyleSheet層疊樣式表,層疊性指的就是CSS處理沖突的一種能力,即如果有多個選擇器選中了同一個標簽那麽會有覆蓋效果

#2、註意:
1、層疊性只有在多個選擇器選中了同一個標簽,然後設置了相同的屬性,
才會發生層疊性
ps:通過谷歌瀏覽器可以查看到,一些屬性被劃掉了
技術分享圖片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        p{
            color: red;
        }
        .ppp{
            color: green;
        }
    </style>

</head>
<body>
<p class="ppp">我是段落</p>
</body>
</html>
示例

3、優先級

#1、定義:當多個選擇器選中同一個標簽,並且給同一個標簽設置相同的屬性時,如何層疊就由優先級來確定

#2、優先級
    整體優先級從高到底:行內樣式>嵌入樣式>外部樣式

    行內樣式並不推薦使用,所以我們以嵌入為例來介紹優先級

1、大前提:直接選中 > 間接選中(即繼承而來的)

技術分享圖片
#1、以下為直接選中
    <style type="text/css">
        #id1 {
            color: red;
        }

        .ppp {
            color: green;
        }

        p {
            color: blue;
        }
    </style>

#2、以下為間接選中
    <style type="text/css">
        ul {
            color: yellow;
        }
    </style>


    <ul>
        <li>
            <p id="id1" class="ppp">我是span</p>
        </li>
    </ul>
實列

2、如果都是間接選中(繼承),那麽誰離目標標簽比較近,就聽誰的

技術分享圖片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>後代選擇器</title>

    <style type="text/css">
        /*離目標近*/
        li {
            color: red;
        }
        /*離目標遠*/
        ul {
            color: yellow;
        }

    </style>
</head>
<body>

    <ul>
        <li>
            <p id="id1" class="ppp">我是span</p>
        </li>
    </ul>
</body>
</html>
示例

3、如果都是直接選中,並且都是同類型的選擇器,那麽就是誰寫的在後面就聽誰的

技術分享圖片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>後代選擇器</title>

    <style type="text/css">
        p {
            color: red;
        }
        /*同樣都是標簽選擇器,誰寫在後面誰生效*/
        p {
            color: yellow;
        }

    </style>
</head>
<body>

    <ul>
        <li>
            <p id="id1" class="ppp">我是span</p>
        </li>
    </ul>
</body>
</html>
示例

4、如果都是直接選中,並且是不同類型的選擇器,那麽就會按照選擇器的優先級來層疊

id > 類 > 標簽 > 通配符(也算直接選中) > 繼承 > 瀏覽器默認(即沒有設置任何屬性)

技術分享圖片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>後代選擇器</title>

    <style type="text/css">
        /*打開瀏覽器依次去掉優先級高的來進行驗證*/
        #id1 {
            color: red;
        }
        .ppp {
            color: green;
        }
        p {
            color: blue;
        }
        * {
            color: yellow;
        }
        li {
            color: #7e1487;
        }
        
    </style>
</head>
<body>

    <ul>
        <li>
            <p id="id1" class="ppp">我是span</p>
        </li>
    </ul>
</body>
</html>

 
示例

5、優先級之!important

#1、作用:還有一種不講道理的!import方式來強制指定的屬性的優先級提升為最高,但是不推薦使用。因為大量使用!import的代碼是無法維護的。
  
#2、註意:
    1、!important只能用於直接選中,不能用於間接選中
    2、!important只能用於提升被指定的屬性的優先級,其他屬性的優先級不會被提升
    3、!important必須寫在屬性值分號的前面
技術分享圖片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>後代選擇器</title>

    <style type="text/css">
        /*打開瀏覽器依次去掉優先級高的來進行驗證*/
        #id1 {
            color: red;
        }
        .ppp {
            color: green;
        }
        p {
            color: blue;
        }
        * {
            color: yellow !important;
        }
        li {
            color: #7e1487;
        }

    </style>
</head>
<body>

    <ul>
        <li>
            <p id="id1" class="ppp">我是span</p>
        </li>
    </ul>
</body>
</html>
示例

6、優先級之權重計算

#1、強調
如果都是直接選中,並且混雜了一系列其他的選擇器一起使用時,則需要通過計算機權重來判定優先級

#2、計算方式
#1、id數多的優先級高
#2、id數相同,則判定類數多的優先級高
#3、id數、class數均相同,則判定標簽數多的優先級高
#4、若id數、class數、標簽數均相同,則無需繼續往下計算了,誰寫在後面誰的優先級高
技術分享圖片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>後代選擇器</title>

    <style type="text/css">
        #id1 #id2 #id3 .ppp{
            color: red;
        }
        #id2 #id3.aaa p{
            color: purple;
        }

        #id1.ccc>.bbb>.aaa>p {
            color: pink;
        }

        #id1 .aaa .ppp {
            color: green;
        }

        #id2 .aaa p {
            color: yellow;
        }

        div ul li p {
            color: blue;
        }

        div ul p {
            color: cyan;
        }

    </style>
</head>
<body>
    <div id="id1" class="ccc">
        <ul id="id2" class="bbb">
            <li id="id3" class="aaa">
                <p class="ppp">我是段落</p>
            </li>
        </ul>
    </div>
</body>
</html>
示例

css的三大特性繼承性,層疊行,優先級