国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

通過宜家的家具設計方法學習CSS模塊化

2024-07-11 08:21:56
字體:
來源:轉載
供稿:網友

很久之前就知道 宜家 ,以前在廣州的時候也去過一次,給我的印象就是:大、貴、巧。地方很大,東西很貴,設計很巧。現在住的地方離宜家不遠,這個月找時間去逛了下,地方還是那么大,東西還是那么貴,設計還是那么的巧。雖然沒有買什么東西,不過也還是有所收獲的,通過宜家的家具設計方法,我們可以聊聊模塊化。

去過宜家的同學應該都有注意到,宜家的家具基本都是組合的,可拆裝。模塊化的特點也是這樣,可以組合,相對獨立,在需要的時候可以很方便的加上。那怎么寫可以基本實現這種方式呢?給個簡單的例子:

<div class="mode-a">
  <h3>模塊化demo</h3>
  <p>模塊化結構的例子。</p>
</div>

對應的css可以這么寫:

.mode-a{...}
.mode-a h3{...}
.mode-a p{...}

其中“mode-a”就是這個模塊的名稱,表示這是名為“a”的模塊,現在這個模塊可以被放到你所需要的地方。既然是做模塊,就不會只有一個,我們再加一個“mode-b”:

<div class="mode-b">
  <h3>模塊化demo</h3>
  <div>
    <h4>模塊化的特點:</h4>
    <ul>
      <li>相對獨立</li>
      <li>可移植性高</li>
    </ul>
  </div>
</div>

對應的css可以這么寫:

.mode-b{...}
.mode-b h3{...}
.mode-b div{...}
.mode-b h4{...}
.mode-b ul li{...}

實際應用中大多需要加一些classname來減少類定義的復雜度,這個例子比較簡單,但足以說明模塊化的特點。上面兩個模塊可同時被使用到一個或多個頁面中。

在宜家的賣場中,也許你也注意到了,基本是以設計師來劃分商品區的,特別是那些小件的商品。模塊化后的代碼也可以被分配給不同的人進行編寫,提高效率。當然要實現這種方式,我們也需要做些工作,如模塊的命名規范、模塊中哪些地方是需要留接口的等等。如上面的例子中可以約定的就有:命名以“mode”開頭,模塊標題使用h3標簽。這樣不管是哪個人寫出來的模塊都可兼容項目中的頁面。

看到這你可能會發現,既然上面已經約定了模塊固定的結構,每個模塊的樣式定義中所寫的這一部分不就是冗余的嗎?是的。如果已經形成相關的約定,這部分的樣式定義可以被提出來放到項目的公共定義中,減少代碼的冗余。如上面的例子可以變成:

/* =s global */
h3{
/* 第一種寫法 */
...
}
.mode-a h3,
.mode-b h3{
/* 第二種寫法 */
...
}
/* =e global */
/* =s mode-a */
.mode-a{...}
.mode-a p{...}
/* =e mode-a */
/* =s mode-b */
.mode-b{...}
.mode-b div{...}
.mode-b h4{...}
.mode-b ul li{...}
/* ==e mode-b */

不知你有沒注意到宜家那些小件的商品,往往可以組合到不同的其它商品上面。這也帶出了模塊化的另一個話題:模塊中的模塊。即在模塊中可以存在其它的模塊,也很好理解,就像我們做網站的時候,整個頁面的結構就像是一個大的模塊,而上面所講的例子就是模塊中的模塊了,只不過我們把這個定義縮小一層。上面例子中對h3的定義,就可以看成是一個模塊,它在“mode-a”、“mode-b”兩個模塊中都出現,并且結構表現相對固定。

ok,這只是對一個標簽的定義,如果不只一個標簽呢?我們重新改下例子:


<div class="mode-b">
  <div class="mode-a">
    <h3>模塊化demo</h3>
    <p>模塊化結構的例子。</p>
  </div>
  <div class="cont">
    <h4>模塊化的特點:</h4>
    <ul>
      <li>相對獨立</li>
      <li>可移植性高</li>
    </ul>
  </div>
</div>
<div class="mode-c">
  <div class="mode-a">
    <h3>模塊化demo</h3>
    <p>這個是“模塊中的模塊”的例子。</p>
  </div>
  <div class="cont">
    <h4>模塊中的模塊:</h4>
    <p>模塊“mode-a”就是一個模塊中的模塊。</p>
  </div>
</div>

/* =s mode-a */
.mode-a{...}
.mode-a h3{...}
.mode-a p{...}
/* =e mode-a */
/* =s mode-b */
.mode-b{...}
.mode-b h4{...}
.mode-b .cont{...}
.mode-b .cont ul li{...}
/* =e mode-b */
/* =s mode-c */
.mode-c{...}
.mode-c h4{...}
.mode-c .cont{...}
.mode-c .cont p{...}
/* =e mode-c */

從上面可以看到,“mode-a”是一個獨立的模塊,當它作為“mode-b”和“mode-c”的一部分時,就成了模塊中的模塊了。拋下磚,希望能引出更多相關的討論。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河北区| 和田县| 夹江县| 河池市| 酒泉市| 澜沧| 玉龙| 宜君县| 呼伦贝尔市| 新兴县| 乌拉特前旗| 仪陇县| 千阳县| 巴青县| 堆龙德庆县| 万州区| 汨罗市| 常宁市| 安阳县| 周口市| 台安县| 山阳县| 中牟县| 旺苍县| 锦州市| 宁阳县| 荆门市| 平武县| 庆城县| 达日县| 包头市| 长兴县| 宜章县| 长葛市| 当涂县| 白山市| 望江县| 自贡市| 黄平县| 栾城县| 桐庐县|