<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 模塊組織 任何超過 1000 行的 CSS 代碼,你都曾經歷過這樣的體驗: 1. 這個 class 到底是什么意思呢? 2. 這個 class 在哪里被使用呢? 3. 如果我創建一個?`xxoo`?class,會造成沖突嗎? `Reasonable System for CSS Stylesheet Structure`?的目標就是解決以上問題,它不是一個框架,而是通過規范,讓你構建更健壯和可維護的 CSS 代碼。 ## Components(組件) ![Components](https://box.kancloud.cn/2015-09-23_5602256c8a58d.png) 從?`Components`?的角度思考,將網站的模塊都作為一個獨立的?`Components`。 ### Naming components (組件命名) `Components`?**最少以兩個單詞命名**,通過?`-`?分離,例如: * 點贊按鈕 (`.like-button`) * 搜索框 (`.search-form`) * 文章卡片 (`.article-card`) ## Elements (元素) ![Elements](https://box.kancloud.cn/2015-09-23_5602256f4f0e5.png) `Elements`?是?`Components`?中的元素 ### Naming elements (元素命名) `Elements`?的類名應盡可能僅有一個單詞。 ~~~ .search-form { > .field { /* ... */ } > .action { /* ... */ } } ~~~ ### On multiple words (多個單詞) 對于倘若需要兩個或以上單詞表達的?`Elements`?類名,不應使用中劃線和下劃線連接,應**直接連接**。 ~~~ .profile-box { > .firstname { /* ... */ } > .lastname { /* ... */ } > .avatar { /* ... */ } } ~~~ ### Avoid tag selectors (避免標簽選擇器) 任何時候盡可能使用?`classnames`。標簽選擇器在使用上沒有問題,但是其性能上稍弱,并且表意不明確。 ~~~ .article-card { > h3 { /* ? avoid */ } > .name { /* ? better */ } } ~~~ ## Variants (變體) ![Variants](https://box.kancloud.cn/2015-09-23_5602257207f27.png) `Components`?和?`Elements`?可能都會擁有?`Variants`。 ### Naming variants (變體命名) `Variants`?的?`classname`?應帶有前綴中劃線?`-` ~~~ .like-button { &.-wide { /* ... */ } &.-short { /* ... */ } &.-disabled { /* ... */ } } ~~~ ### Element variants (元素變體) ~~~ .shopping-card { > .title { /* ... */ } > .title.-small { /* ... */ } } ~~~ ### Dash prefixes (中劃線前綴) 為什么使用中劃線作為變體的前綴? * 它可以避免歧義與?`Elements` * CSS class 僅能以單詞和?`_`?或?`-`?開頭 * 中劃線比下劃線更容易輸出 ## Layout (布局) ![Layout](https://box.kancloud.cn/2015-09-23_560225748096c.png) ### Avoid positioning properties (避免定位屬性) Components 應該在不同的上下文中都可以復用,所以應避免設置以下屬性: * Positioning (position, top, left, right, bottom) * Floats (float, clear) * Margins (margin) * Dimensions (width, height) * ### Fixed dimensions (固定尺寸) 頭像和 logos 這些元素應該設置固定尺寸(寬度,高度...)。 ### Define positioning in parents (在父元素中設置定位) 倘若你需要為組件設置定位,應將在組件的上下文(父元素)中進行處理,比如以下例子中,將?`widths`和?`floats`?應用在?`list component(.article-list)`?當中,而不是?`component(.article-card)`?自身。 ~~~ .article-list { & { @include clearfix; } > .article-card { width: 33.3%; float: left; } } .article-card { & { /* ... */ } > .image { /* ... */ } > .title { /* ... */ } > .category { /* ... */ } } ~~~ ## Avoid over-nesting (避免過分嵌套) 當出現多個嵌套的時候容易失去控制,應保持不超過一個嵌套。 ~~~ /* ? Avoid: 3 levels of nesting */ .image-frame { > .description { /* ... */ > .icon { /* ... */ } } } /* ? Better: 2 levels */ .image-frame { > .description { /* ... */ } > .description > .icon { /* ... */ } } ~~~ ## Apprehensions (顧慮) * **中劃線`-`是一坨糟糕的玩意**:其實你可以選擇性的使用,只要將?`Components, Elements, Variants`記在心上即可。 * **我有時候想不出兩個單詞唉**:有些組件的確使用一個單詞就能表意,比如?`aleter`?。但其實你可以使用后綴,使其意識更加明確。 比如塊級元素: * .alert-box * .alert-card * .alert-block 或行內級元素 * .link-button * .link-span ## Terminologies (術語) RSCSS 與其他 CSS 模塊組織系統相似的概念 | RSCSS | BEM | SMACSS | | --- | --- | --- | | Component | Block | Module | | Element | Element | ? | | Layout | ? | Layout | | Variant | Modifier | Theme & State | ## Summary (總結) * 以?`Components`?的角度思考,以兩個單詞命名(`.screenshot-image`) * `Components`?中的?`Elements`,以一個單詞命名(`.blog-post .title`) * `Variants`,以中劃線`-`作為前綴(`.shop-banner.-with-icon`) * `Components`?可以互相嵌套 * 記住,你可以通過繼承讓事情變得更簡單 * * * [譯自:Reasonable System for CSS Stylesheet Structure](https://github.com/rstacruz/rscss#readme)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看