白天 |  黑夜

符合WEB标准 CSS也要语义化

船长 发表于 2009-02-12 11:08 | 分类:css | 阅读数:428 次

  首先声明的我不是反对关于设计的网格化,我是反对重构的网格化。这里应该特指是YUI方式的类名绑定式的网格化。大家可以看看下面的一段代码:

1
2
3
4
5
6
7
8
<div id="yui-main"> 
<div class="yui-b"> 
<div class="yui-g"> 
<div class="yui-u first"></div> 
<div class="yui-u"></div> 
</div> 
</div> 
</div>

  大家可以很清晰的看到这里的yui-u,或者yui-g他的名称是并无意义的。还有与表现相关的first。不知道大家都看过的《网站重构》一书当时配同的PPT里面的一句话——“把页面中的外观标记去除以后,重新设计现有的站点和内容将变得非常节省人力 (同时便宜得多)。如果想改变站点的输出,你只需要改动一下样式表就行了,而完全不必改动页面本身。”像上面的那段代码不能达到结构、表现、行为三者分离,如果强行改变会出现下面的一些问题:

  改变表现的时候必须动到html,一次美观上面的修改要动到三条工作线,极大的人力资源耗费。
  会出现排在第五个的叫做“first”的框
  会出现实际为240宽的叫做“180宽”的框
  会出现实际为三列的叫做“四列”的布局
  会出现实际为红色的叫做“blue”的字
  这些也就是相当于现在很多人流行的“left_box”和“right_box”,快速改版以后变成了在左边的“right_box”。这不就是相当于歪曲事实的真理么?但其实最重要的是第一点,这样的工作方式和我们以往的table布局工作方式有差别么?你提个改个样式需求,全公司(设计、页面、开发、功能测试、CE数据监测)都跟着你去跑,这是很不智的。

  写到这里回看下,顺带改了改标题变成《这将是一场革命》系列的第二篇关于CSS的文章算了。上面说完不对的,下面给大家看看一个我最近刚接手的一个新版项目代码段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<div id="index_news" class="mode"> 
<h3 class="title">公益新闻</h3> 
<div class="content"> 
<ul> 
<li><a href="#">新闻标题,新闻标题,新闻标题,新闻标题</a></li> 
<li><a href="#">新闻标题,新闻标题,新闻标题,新闻标题</a></li> 
<li><a href="#">新闻标题,新闻标题,新闻标题,新闻标题</a></li> 
<li><a href="#">新闻标题,新闻标题,新闻标题,新闻标题</a></li> 
<li><a href="#">新闻标题,新闻标题,新闻标题,新闻标题</a></li> 
<li><a href="#">新闻标题,新闻标题,新闻标题,新闻标题</a></li> 
<li><a href="#">新闻标题,新闻标题,新闻标题,新闻标题</a></li> 
<li><a href="#">新闻标题,新闻标题,新闻标题,新闻标题</a></li> 
</ul> 
</div> 
<a class="more" href="#">更多</a> </div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
.mode{ 
position:relative; 
float:left; 
font-size:12px; 
} 
.mode h3.title, 
.mode h4.title{ 
color:#234C00; 
padding:5px 10px; 
font-size:14px; 
} 
.mode .more{ 
top:5px; 
right:10px; 
font-size:12px; 
color:#4282ab; 
position:absolute; 
} 
.mode .content{ 
clear:both; 
} 
.mode .content:after { 
content:""; 
display:block; 
height:0; 
line-height:0; 
clear:both; 
visibility:hidden; 
} 
#index_news.mode, 
#index_bbs.mode, 
#index_area.mode{ 
background:url(small_gray_grid.png) repeat-y -400px bottom; 
width:200px; 
margin:5px 0 5px 5px; 
} 
#index_news.mode h3.title, 
#index_bbs.mode h3.title{ 
background:url(small_gray_grid.png) no-repeat -200px top; 
} 
#index_news.mode .content, 
#index_bbs.mode .content, 
#index_area.mode .content{ 
background:url(small_gray_grid.png) no-repeat -600px bottom; 
display:table; 
}

  大家可以看到模块化思想的优势在于哪:
  可以半自动化的取用当前已有的模块来节省代码开发时间以及精力。
  可以高度自由化的适应任何产品经理、任何老板的不同变态需求。
  任何关于表现上面的修改不需要动用到开发人员,不需要功能测试。
  CE数据监测绑定到id,不需要重新调整接口。
  每个人担任单个模块的快速迭代开发。
  另外就代码而言。标题就是标题,内容就是内容;总不会那种歪曲事实、自己打自己嘴巴的状态。

  我有个怪癖。我很喜欢在面试的时候我总是要先考面试人XHTML。就好像以前师傅招收学徒一样,能力和慧根属其次,人品首当其冲。
  我以为,XHTML好比一个人的本质,CSS好比人的处事方式和态度,JS好比人做事的行为以及作风。三者的分离再加上些周边的SEO、人机交互也就是我们所说的网站重构,也就是一个很不错的人。之前总是有一部分人认为CSS就是网站的最主要的元素,其实自然而然的也就代表了一种人生观。的确,一个人没有好的处事方式和态度很难在现在的社会很好的存活;但是这个处事的方式和态度位置过于偏重了,就成了一个善于欺骗、做事不择手段的人。
  这个是一直想说的,有了CSS你可以将左右顺序变成右左顺序,他就是一个网页中的魔术师。你总不能把他乱用,去成了一个善于欺骗、做事不择手段的人。

本站QQ交流群:16524922,一起交流学习,互帮互助
转载请注明出处:http://www.songlecn.com/2009/02/252/
我要评论 标签: ,
上一篇
下一篇
喜欢web集结号的文章,那就通过 RSS Feed 功能订阅阅读吧!

我要评论

* 必填

* 绝不会泄露


Css Tutorials

web集结号致力于

  • Css技巧及模板
  • Javascript技巧及特效
  • JQuery插件及应用
  • 建站图片资源
  • 网络休闲及生活感悟