通过宜家的家具设计方法学习CSS模块化

2016-02-19 23:42 2 1 收藏

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐通过宜家的家具设计方法学习CSS模块化,希望大家看完后也有个好心情,快快行动吧!

【 tulaoshi.com - Web开发 】

很久之前就知道 宜家 ,以前在广州的时候也去过一次,给我的印象就是:大、贵、巧。地方很大,东西很贵,设计很巧。现在住的地方离宜家不远,这个月找时间去逛了下,地方还是那么大,东西还是那么贵,设计还是那么的巧。虽然没有买什么东西,不过也还是有所收获的,通过宜家的家具设计方法,我们可以聊聊模块化。

去过宜家的同学应该都有注意到,宜家的家具基本都是组合的,可拆装。模块化的特点也是这样,可以组合,相对独立,在需要的时候可以很方便的加上。那怎么写可以基本实现这种方式呢?给个简单的例子:

div class="mode-a"
  h3模块化Demo/h3
  p模块化结构的例子。/p
/div

对应的CSS可以这么写:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

.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可以这么写:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

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

实际应用中大多需要加一些classname来减少类定义的复杂度,这个例子比较简单,但足以说明模块化的特点。上面两个模块可同时被使用到一个或多个页面中。

在宜家的卖场中,也许你也注意到了,基本是以设计师来划分商品区的,特别是那些小件的商品。模块化后的代码也可以被分配给不同的人进行编写,提高效率。当然要实现这种方式,我们也需要做些工作,如模块的命名规范、模块中哪些地方是需要留接口的等等。如上面的例子中可以约定的就有:命名以mode开头,模块标题使用h3标签。这样不管是哪个人写出来的模块都可兼容项目中的页面。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

看到这你可能会发现,既然上面已经约定了模块固定的结构,每个模块的样式定义中所写的这一部分不就是冗余的吗?是的。如果已经形成相关的约定,这部分的样式定义可以被提出来放到项目的公共定义中,减少代码的冗余。如上面的例子可以变成:

/* =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的一部分时,就成了模块中的模块了。抛下砖,希望能引出更多相关的讨论。

来源:https://www.tulaoshi.com/n/20160219/1630423.html

延伸阅读
标签: Web开发
为了更有效地管理 CSS,下面是 Sofish 讲解了模块化CSS的概念与观点,希望这些对你有所帮助。 在刚学习CSS初期,就接触了模块化CSS这样的概念,不过,一直没有很好的理解。说起来,理由很简单:因为几乎所有的代码都是为了博客的设 计,而像博客这么小的架构,CSS文件根本不用多,因为本身代码量就小,使用不同表现形式的页面模板并不...
标签: Web开发
自己对css框架,css模块这些感念一直比较模糊,完全跟风状态。最近在工作中遇到的问题,让自己不得不重视起这个问题。习惯了一个人搞定一切,策划-设计-出页面,当一个项目需要短时间多人协作完成时,样式文件的规划,css模块、框架的思想就先的尤其重要。 下面这个问题最近比较困扰:如果几个人同时 做一个网站前台,怎么样分配能让整站 风格...
标签: Web开发
首先,不管了不了解,鬼哥的这篇文章都可以看一下,从宜家的家具设计讲模块化http://www.webjx.com/css/divcss-10075.html 并不是多高深的东西,在工作中,应用div+css操作,你应该会逐步的去想,怎样提高效率,怎样兼容,怎样精炼代码,怎样让后期维护变的更加简单。你可能每过一段时间,都想把自己以前写的东西重构一下。这是很好的想法...
标签: Web开发
写在前面的话: 所有写程序的人都知道,当你逐渐对您要实现的功能展开的时候,很大的时候,第一天写的东西第二天就忘了写到那里了,很多的时候,不得不写上详细的程序开发笔记,这在ASP的系统开发中感觉尤其文件、函数复杂的时候,当我们打算对网站的一部分功能进行修改的时候,感觉无从下手或者感觉要修改的地方。这时候,如果您学过任...
扁平化设计流行起来之后,现代简约风与之结合产生了许多视觉上以区块为主的网页设计作品。对于设计师而言,这种设计方式既时尚,又富于功能化,网站结构流畅、简单,与响应式的设计也有着天然的兼容性。 这种设计趋势的出现,追根溯源就是模块化设计。模块化设计并不是什么新鲜的东西,有过编程开发经验的同学对此应该不陌生,对于工程学有...

经验教程

873

收藏

60
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部