iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0

:first-child & :last-child

當我們處理 HTML 結構時,可以使用虛擬類別選擇器(偽類選擇器)來選中特定位置的元素,這類偽類稱為「結構偽類」。

舉例來說,如果要固定在第一個<li>元素套用特定樣式,初學者通常會在第一個元素上加上一個 class 類別來完成

<ul>
	<li class="first">火鍋</li>
	<li>水餃</li>
	<li>拉麵</li>
	<li>串燒</li>
</ul>
.first {
	color: gold;
}

然而,假如你在未來需要在火鍋之前新增熱炒的項目

<ul>
	<li>熱炒</li>
	<li class="first">火鍋</li>
	<li>水餃</li>
	<li>拉麵</li>
	<li>串燒</li>
</ul>

這時候又要手動將 class="first" 搬到第一個

<ul>
	<li class="first">熱炒</li>
	<li>火鍋</li>
	<li>水餃</li>
	<li>拉麵</li>
	<li>串燒</li>
</ul>

當然你也可以用 JavaScript 來設定,第一個 <li> 元素加上 first 類別

但是!我們有更好的選擇,我們可以直接使用 CSS 來輕鬆選中,

:first-child 這個偽類來更輕鬆地達成相同效果,不再需要手動修改 HTML 結構,也無需寫任何一行 JavaScript 程式碼。

💠:first-child 基本用法

語法

選擇器:first-child { 
	屬性名: 屬性值; 
}
  • 選取所有兄弟元素中的第一個元素

範例

一起試試:[CODEPEN]

<ul>
	<li>熱炒</li>
	<li>火鍋</li>
	<li>水餃</li>
	<li>拉麵</li>
	<li>串燒</li>
</ul>
ul li:first-child {
	color: gold;
}

這樣的寫法可以自動選取 <ul> 底下的第一個 <li> 元素,無論你新增或修改結構,樣式始終會正確套用在第一個項目上。

first-child

除了所有兄弟元素中的第一個元素,你也可以使用 :last-child 選中最後一個元素

💠:last-child 基本用法

語法

選擇器:last-child { 
	屬性名: 屬性值; 
}
  • 選取所有兄弟元素中的最後一個元素

範例:選單底線

一起試試:[CODEPEN]

適合在特定情況下排除某些樣式。例如,如果你希望每個選單項目之間有下底線,但最後一個項目沒有下底線,可以這麼做

<ul class="menu">
  <li><a href="#">Home</a></li>
  <li><a href="#">About</a></li>
  <li><a href="#">Services</a></li>
  <li><a href="#">Contact</a></li>
</ul>
.menu li {
  padding: 15px 20px;
  border-bottom: 3px solid #ccbaa3;
  transition: background-color 0.3s ease;
}

.menu li:last-child {
  border-bottom: none;
}

last-child

透過 :last-child 偽類,我們將最後一個 <li> 元素的 border-bottom 設置為 none,這樣就不會顯示下底線。這種做法特別適合於多項目列表或導航欄,避免最後一項和底部之間的多餘分隔。


💠總結

透過使用結構偽類如 :first-child:last-child,我們可以輕鬆選取 HTML 結構中特定位置的元素,讓我們的樣式設定更加靈活且不需頻繁修改 HTML 結構。這不僅提高了維護性,也使得樣式管理更為高效,無論是選取第一個元素還是最後一個元素,都可以用簡潔的語法來實現,讓你的網站保持良好的結構和視覺效果。


本文將同步更新至 Lala Code



上一篇
:focus & :focus-visible 掌控焦點,提升互動體驗!
下一篇
:nth-child 照著規則,所有元素任你選
系列文
你的優先選擇是什麼?從 CSS 選擇器到優先級,深入解析與實用技巧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言