巢狀元件 (Nested components)

<div class='article-link'>
    <div class='vote-box'>
        ...
    </div>
    <h3 class='title'>...</h3>
    <p class='meta'>...</p>
</div>

有時候勢必得用上巢狀元件,接下來解釋該如何組織 CSS 類別。

變形

當元件內需要有另一個元件存在時,就形成巢狀元件。這時最好避免將 CSS 寫在父類別下的子類別中。

.article-header {
  > .vote-box > .up { /* ✗ 不宜 */ }
}

可以選擇以變形(Variant)的方式來定義父元件下的子元件。

<div class='article-header'>
    <div class='vote-box -highlight'>
        ...
    </div>
    ...
</div>
.vote-box {
    &.-highlight > .up { /* ... */ }
}

簡化巢狀元件

以上述方式進行時,很有可能讓你的標籤變得過於複雜:

<div class='search-form'>
    <input class='input' type='text'>
    <button class='search-button -red -large'></button>
</div>

可以通過 CSS 的預處理器 - @extend 來簡化這種情況:

<div class='search-form'>
    <input class='input' type='text'>
    <button class='submit'></button>
</div>
.search-form {
    > .submit {
        @extend .search-button;
        @extend .search-button.-red;
        @extend .search-button.-large;
    }
}

該如何處理清單這種重複元件?佈局(Layouts) Continue →

results matching ""

    No results matching ""