嵌套组件

嵌套组件 - 图1

  1. <div class='article-link'>
  2. <div class='vote-box'>
  3. ...
  4. </div>
  5. <h3 class='title'>...</h3>
  6. <p class='meta'>...</p>
  7. </div>

有时候需要嵌套组件。这里是一些嵌套组件的宝典。

变体

一个组件可能会以嵌套在另一个组件内的形式存在。要避免从父组件更改嵌套在里面的组件。

  1. .article-header {
  2. > .vote-box > .up { /* ✗ 要避免这样 */ }
  3. }

正确的方法是,给嵌套里面的组件增加一个变体。

  1. <div class='article-header'>
  2. <div class='vote-box -highlight'>
  3. ...
  4. </div>
  5. ...
  6. </div>
  1. .vote-box {
  2. &.-highlight > .up { /* ... */ }
  3. }

精简嵌套组件

有时,嵌套组件会使你的标记变得肮脏。

  1. <div class='search-form'>
  2. <input class='input' type='text'>
  3. <button class='search-button -red -large'></button>
  4. </div>

你可以通过 SCSS(CSS 预处理器)的 @extend 精简它:

  1. <div class='search-form'>
  2. <input class='input' type='text'>
  3. <button class='submit'></button>
  4. </div>
  1. .search-form {
  2. > .submit {
  3. @extend .search-button;
  4. @extend .search-button.-red;
  5. @extend .search-button.-large;
  6. }
  7. }

那么对于像列表那样的重复元素该怎么处理?了解布局。 继续 →