##本文主要講 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>