CSS 選擇器可調整元素樣式。如下程式碼中,p
為選擇器,括號 {}
內為想要調整成的樣式。
p {
color: green;
}
X > Y
X Y
X + Y
X ~ Y
下方只針對幾個比較常用的做整理。
只有 X 直屬子層 Y 會有作用。
實作 1. 讓 li.item 直屬子層的 p 段落文字變紅色 CodePen 程式碼
<ul class="list">
<li class="item">
<p>item</p> <!--紅色文字-->
<ul class="inList">
<li class="inItem">
<p>inItem</p>
</li>
</ul>
</li>
<li class="item">
<p>item</p><!--紅色文字-->
<div class="inbox">
<p>item</p>
</div>
</li>
</ul>
X 不管到第幾代的子層 Y 都會有作用
實作 1. 與直屬選擇器相同範例,使用後代選擇器則子層的文字皆會變紅色 CodePen 程式碼
需與 X 相鄰的下一個同層 Y 才會吃到 CSS 樣式。
實作 1. 讓 333 文字變藍色 CodePen 程式碼
<div class="content">
<p class="text1">111</p>
<p class="text2">222</p>
<p class="text3">333</p>
</div>
於 X 同層且在後方的 Y 元素皆會執行 CSS 設定。
實作 1. 從文字3至文字6皆為紅色 CodePen 程式碼
<p class="text1">文字1</p>
<div class="content">
<p class="text2">文字2</p>
<p class="text3">文字3</p>
<p class="text4">文字4</p>
<p class="text5">文字5</p>
<p class="text6">文字6</p>
</div>
X:nth-child(n)
參數 n 從 1 開始,如果要指向第一個元素 nth-child(1)
。X:nth-child(數字n)
參數中數字的倍數皆會執行 css 效果。實作範例 CodePen 程式碼
<style>
<!--括號中的參數從1開始-->
li:nth-child(3){
color:red;
}
<!--2n 即2的倍數的li皆會執行效果-->
li:nth-child(2n){
color:green;
}
</style>
<ul>
<li>tex 01</li>
<li>tex 02</li> <!--green-->
<li>tex 03</li> <!--redn-->
<li>tex 04</li> <!--green-->
</ul>
<ul>
<li>tex 05</li>
<li>tex 06</li> <!--green-->
<li>tex 07</li> <!--red-->
<li>tex 08</li> <!--green-->
</ul>
X:nth-last-child(n)
倒數參數 n 開始執行 CSS 樣式。X:first-child
指向 X 第一個元素X:last-child
指向 X 最後一個元素:not
:not
: 為 CSS 偽類,可排除特定的元素被選中。
p:not(:first-child) {
color: red;
}
先看權重,再看先後
*
: 0 分 ,沒有權級。HTML
標籤 ( 元素選擇器 )、偽元素選擇器:1 分。
h1
、p
、ul
、li
等。class
選擇器、偽類選擇器:10 分。
.title
,前方以點開頭。ID
選擇器:100 分。
#title
,前方以 # 開頭。inline style
:1000 分。
<h1 style=" ">title</h1>
,直接在 HTML 標籤內寫 style。!important
:10000 分。
.title2{ color:red; } !important
.title h1 {}
→ 10+1=11 ( class 選擇器 + HTML 標籤 ).qa-lost__title-link
→ 10 ( class 選擇器 )#Stencil .Pos-r
→ 100+10=110 ( ID 選擇器 + class 選擇器 )#atomic .Py , #atomic .Pt
→ 100+10=110 ( 逗號不會有加分作用; ID 選擇器 + class 選擇器 ).on_sale li a , .sale_category li a , .sale_news li a
→ 10+1+1=12 ( class 選擇器 + HTML 標籤 + HTML 標籤 ).h2 .h2 .h2 .h2 .h2 .h2 .h2 .h2 .h2 .h2
> .h2
<h1 class="title title2">TITLE</h1>
.title2{
color:red;
}
.title{
color:blue;
}
答案: 1. 藍色 ( 這邊不管 HTML 的先後順序,以 CSS 先後順序為優先。)
Q2 ~ Q4 程式碼 ↓
<h1 class="title">TITLE</h1>
.title{
color:red;
}
@media(max-width:768px{
.title{
color:blue;
}
}
@media(max-width:375px{
.title{
color:yellow;
}
}
答案:Q2. 紅色
答案:Q3. 藍色
答案:Q4. 三個 .title 都會被開啟,只是上方第一個與第二個會被 @media(max-width:375px{ }
的覆蓋掉。
A. 紅色 B. 黑色 C. 黃色 D. 藍色
@media (min-width: 576px){
p {
color: red;
}
}
@media (min-width: 768px){
p {
color: black;
}
}
p { color: yellow; }
答案: C 黃色 ( 先看權重再看先後,上方權重皆為 1 ,所以後方的 p
會覆蓋掉斷點中的 p
設定。)