SASS中的巢狀結構

SASS中的巢狀結構

本文將說明SASS中的巢狀結構。

我們將一步步說明SASS的巢狀寫法,並包含範例程式碼以加深您的理解。

YouTube Video

SASS中的巢狀結構

SASS是一種CSS的擴展樣式語言,提供了許多高效率設計樣式的功能。在這些功能之中,巢狀語法尤為實用,可以直觀地表現CSS的層次結構。

巢狀語法的基礎

在SASS中,您可以用階層式結構撰寫CSS選擇器,讓程式碼更具可讀性。舉例來說,讓我們看看如何利用巢狀語法重寫以下CSS程式碼。

 1/* CSS */
 2.nav {
 3    background-color: #333;
 4}
 5.nav ul {
 6    margin: 0;
 7    padding: 0;
 8}
 9.nav ul li {
10    list-style: none;
11}
12.nav ul li a {
13    color: #fff;
14    text-decoration: none;
15}

使用SASS的巢狀語法,您可以如下簡潔地撰寫這段程式碼。

 1/* SASS */
 2.nav {
 3    background-color: #333;
 4
 5    ul {
 6        margin: 0;
 7        padding: 0;
 8
 9        li {
10            list-style: none;
11
12            a {
13                color: #fff;
14                text-decoration: none;
15            }
16        }
17    }
18}
  • 這份程式碼利用SASS巢狀語法,簡明地層次化描述了導覽選單的樣式。藉由巢狀寫法,父子關係變得一目瞭然,也提升了可讀性。

引用父選擇器(&

當您在巢狀樣式中需要引用父選擇器時,可以使用&符號。這能讓您建立具有特定狀態或修飾符的選擇器。

 1.button {
 2    background-color: #007bff;
 3    color: #fff;
 4
 5    &:hover {
 6        background-color: #0056b3;
 7    }
 8
 9    &:active {
10        background-color: #003f7f;
11    }
12}
  • 這段程式碼在SCSS中利用&為父選擇器 .button 定義了 :hover:active 狀態。

產生的CSS

 1.button {
 2    background-color: #007bff;
 3    color: #fff;
 4}
 5.button:hover {
 6    background-color: #0056b3;
 7}
 8.button:active {
 9    background-color: #003f7f;
10}

巢狀媒體查詢

在SASS中,您也可以巢狀書寫媒體查詢。這樣可讓您在維持樣式關聯性的同時實現響應式設計。

 1.container {
 2    width: 100%;
 3
 4    @media (min-width: 768px) {
 5        width: 750px;
 6    }
 7
 8    @media (min-width: 1024px) {
 9        width: 970px;
10    }
11}
  • 此程式碼在 .container 類別內巢狀寫入媒體查詢,實現隨螢幕尺寸變化寬度的響應式設計。

產生的CSS

 1.container {
 2    width: 100%;
 3}
 4@media (min-width: 768px) {
 5    .container {
 6        width: 750px;
 7    }
 8}
 9@media (min-width: 1024px) {
10    .container {
11        width: 970px;
12    }
13}

巢狀語法須注意事項

過度巢狀會使程式碼結構過深,降低維護性。請避免像以下範例這樣過深的巢狀寫法。

 1.header {
 2    .nav {
 3        ul {
 4            li {
 5                a {
 6                    color: red;
 7                }
 8            }
 9        }
10    }
11}

這種程式碼巢狀層級過深,因此可以按照以下方式重構。

1.header .nav ul li a {
2    color: red;
3}

實用範例:導覽列

以下是使用SASS巢狀語法撰寫的導覽列樣式範例。

 1.navbar {
 2    background-color: #222;
 3    color: #fff;
 4
 5    ul {
 6        display: flex;
 7        list-style: none;
 8        margin: 0;
 9        padding: 0;
10
11        li {
12            margin-right: 15px;
13
14            a {
15                color: #fff;
16                text-decoration: none;
17
18                &:hover {
19                    text-decoration: underline;
20                }
21            }
22        }
23    }
24}
  • 這段程式碼運用SASS巢狀語法組織定義了導覽列內的清單和連結樣式,並包含滑鼠懸停效果。

產生的CSS

 1.navbar {
 2    background-color: #222;
 3    color: #fff;
 4}
 5.navbar ul {
 6    display: flex;
 7    list-style: none;
 8    margin: 0;
 9    padding: 0;
10}
11.navbar ul li {
12    margin-right: 15px;
13}
14.navbar ul li a {
15    color: #fff;
16    text-decoration: none;
17}
18.navbar ul li a:hover {
19    text-decoration: underline;
20}

總結

SASS的巢狀語法是一個可用來簡潔描述CSS層次結構並提升可讀性的強大工具。但請注意避免過度巢狀,應有條理地組織您的程式碼。

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

YouTube Video