巢狀結構中的組合器

巢狀結構中的組合器

本文將說明巢狀結構中的組合器。

我們將說明如何在SASS中使用巢狀結構的組合器,並提供範例程式碼,幫助你一步步理解。

YouTube Video

巢狀結構中的組合器

在SASS中,可以根據父子關係簡潔地撰寫CSS選擇器,但對於如後代選擇器或相鄰選擇器等組合器,需要特別注意正確的使用方式。

巢狀結構基礎

在SASS中,透過將子選擇器巢狀於父選擇器中,能夠清楚且簡潔地表現CSS中的父子關係。

範例:基本巢狀結構

1.nav {
2    ul {
3        li {
4            color: blue;
5        }
6    }
7}

編譯後的CSS

1.nav ul li {
2    color: blue;
3}

父選擇器參照(&

SASS的&用於參照當前父選擇器。

組合組合器和&

透過使用&可以構建靈活的選擇器。

範例
1.card {
2    & > .title {
3        font-weight: bold;
4    }
5    & + .card {
6        margin-top: 20px;
7    }
8}
編譯後的CSS
1.card > .title {
2    font-weight: bold;
3}
4.card + .card {
5    margin-top: 20px;
6}

「&」的省略寫法

在 SASS 中,當組合器放在選擇器開頭時,父選擇器會被隱式插入,因此你可以省略「&」符號。

可以省略的情況

例如,當你寫「+ .item」時,SASS 會在內部將其解讀為「& + .item」,並自動與父選擇器組合生成樣式。

範例
1.item {
2    + .item {
3        margin-top: 10px;
4    }
5    &--hover {
6        background-color: red;
7    }
8}
編譯後的CSS
1.item + .item {
2  margin-top: 10px;
3}
4.item--hover {
5  background-color: red;
6}

組合器概述

CSS組合器用來定義選擇器之間的關係。以下是主要的組合器類型。

  1. 後代選擇器(空格) 後代選擇器會選取父元素中的所有後代元素。 範例:.parent .child

  2. 子選擇器(> 子選擇器只會選取直接子元素。 範例:.parent > .child

  3. 相鄰選擇器(+ 相鄰選擇器會選取緊接在後的相鄰兄弟元素。 範例:.sibling1 + .sibling2

  4. 一般兄弟選擇器(~ 一般兄弟選擇器會選取所有後續的兄弟元素。 範例:.sibling1 ~ .sibling2

在SASS中如何使用組合器

後代選擇器(空格)

在SASS巢狀結構中,預設會使用空格作為後代選擇器。

範例
1.container {
2    .header {
3        .title {
4            font-size: 20px;
5        }
6    }
7}
編譯後的CSS
1.container .header .title {
2    font-size: 20px;
3}

子選擇器(>

如果要使用子選擇器,需在SASS程式碼中明確地寫上>

範例
1.container {
2    & > .header {
3        & > .title {
4            font-size: 20px;
5        }
6    }
7}
編譯後的CSS
1.container > .header > .title {
2    font-size: 20px;
3}

相鄰選擇器(+

需要針對緊接在後的兄弟元素設計樣式時,使用+

範例
1.item {
2    & + .item {
3        margin-top: 10px;
4    }
5}
編譯後的CSS
1.item + .item {
2    margin-top: 10px;
3}

一般兄弟選擇器(~

要設計同階層所有後續兄弟元素的樣式時,請使用~

範例
1.alert {
2    & ~ .alert {
3        border-top: 1px solid red;
4    }
5}
編譯後的CSS
1.alert ~ .alert {
2    border-top: 1px solid red;
3}

與巢狀結構結合的偽類與偽元素

偽類與偽元素也可以在SASS中輕鬆編寫。

範例
1.button {
2    &:hover {
3        background-color: blue;
4    }
5    &::after {
6        content: '';
7        display: block;
8    }
9}
編譯後的CSS
1.button:hover {
2    background-color: blue;
3}
4.button::after {
5    content: '';
6    display: block;
7}

實用範例

下面是結合多個組合器的複雜樣式範例。

SASS代碼
 1.menu {
 2    .menu-item {
 3        & > .submenu {
 4            display: none;
 5
 6            & > .submenu-item {
 7                font-size: 14px;
 8            }
 9        }
10        & + .menu-item {
11            margin-left: 15px;
12        }
13    }
14}
編譯後的CSS
1.menu .menu-item > .submenu {
2    display: none;
3}
4.menu .menu-item > .submenu > .submenu-item {
5    font-size: 14px;
6}
7.menu .menu-item + .menu-item {
8    margin-left: 15px;
9}

總結

正確掌握SASS中的巢狀結構與組合器時,可以寫出更簡潔且易讀的CSS。

您可以在我們的 YouTube 頻道上使用 Visual Studio Code 來跟隨上述文章一起學習。 請也查看我們的 YouTube 頻道。

YouTube Video