你不知道的CSS3選擇器--精闢用法

##本文主要講 CSS3 中三中不常用的選擇器的精闢用法(E~F,E+F,E:not(selector)):
####(1)E~F (選擇E元素後面的所有兄弟元素F)
* 通用兄弟元素選擇器類型。
* 選擇匹配F的所有元素,且匹配元素位於匹配E的元素後面。
* 在DOM結構樹中,E和F所匹配的元素應該在同一級結構上。

需求:根據後臺傳過來的 li 標籤個數,動態渲染 li 標籤的寬度(flex都無法實現的效果);
一個 li : 寬度佔100%
兩個 li : 寬度各佔50%
三個 li : 寬度各佔33.333%
四個 li : 寬度各佔25%
五個 li : 寬度各佔20%
六個 li : 寬度各佔16.66%
七個 li : 前六個各佔16.66%,第七個換行且寬度佔16.66%

注意:可以根據需求改變一行需要渲染li的個數,和寬度。如果一行只需要三列,則 li:nth-last-child(4) 及之後的代碼就不要在再寫了。

:nth-last-child(n) 選擇列表的倒數第n個元素
:nth-last-child(4) 選擇列表的倒數第4個元素
再結合兄弟選擇器
代碼:

     ul li {
        background: pink;
        height: 20px;
        float: left;
    }
    
    li:nth-last-child(1),
    li:nth-last-child(1) ~ li {
        width: 100%;
    }
    
    li:nth-last-child(2),
    li:nth-last-child(2) ~ li {
        width: 50%;
    }
    
    li:nth-last-child(3),
    li:nth-last-child(3) ~ li {
        width: 33.33%;
    }
    
    li:nth-last-child(4),
    li:nth-last-child(4) ~ li {
        width: 25%;
    }
    
    li:nth-last-child(5),
    li:nth-last-child(5) ~ li {
        width: 20%;
    }
    
    li:nth-last-child(6),
    li:nth-last-child(6) ~ li {
        width: 16.66%;
    }

####(2)E:not(selector)
* 通用兄弟元素選擇器類型。
* 選擇匹配F的所有元素,且匹配元素位於匹配E的元素後面。
* 在DOM結構樹中,E和F所匹配的元素應該在同一級結構上。

代碼:

<style>
p:not(.bg) {background:pink;}
</style>

<body>
<div>
<p>匹配所有不匹配簡單選擇符selector的元素E</p>
<p class="bg">匹配所有不匹配簡單選擇符selector的元素E</p> //沒有粉色
<p>匹配所有不匹配簡單選擇符selector的元素E</p>
<p>匹配所有不匹配簡單選擇符selector的元素E</p>
<p class="xxx">匹配所有不匹配簡單選擇符selector的元素E</p>
<p class="bg">匹配所有不匹配簡單選擇符selector的元素E</p> //沒有粉色
</body>

####(3)E + F (選擇緊貼在E元素之後F元素。)
* 相鄰兄弟選擇器
* 選擇匹配F的元素
* 且該元素爲所匹配E元素後面相鄰的位置。

代碼:

<style>
p + p {
	color:blue;
}
</style>

<body>
	<h3>這是一個標題</h3>
	<p>這是一個文字段落</p>
	<p>這是一個文字段落</p>  //color:blue;
	<h3>這是一個標題</h3>
	<p>這是一個文字段落</p>
	<h3>這是一個標題</h3>
	<p>這是一個文字段落</p>
	<p>這是一個文字段落</p>  //color: blue;
</body>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章