淘宝css分析

淘宝在CSS优化,命名规范方面还是比较值得称赞的。
淘宝本身的css规范是由YUI CSS二次开发的的来的,但是相对于原有YUI CSS有了很大的改善,包括变量名上面都有自己的特性,阅读起来比较人性化。

保留ID关键字:
page 页面
header 页面头部
content 页面主内容块
footer 页面脚部
site-nav 页面额外导航链接
links 相关服务链接

//下面是与淘宝网关系比较紧密的ID关键字
product 产品导航块
main-promo 主要推荐slice
mail 淘宝商城
category 商品分类(淘宝页面主要构成)
help 帮助导航块
announce 公告
recom 推荐
info 资讯
expressway 充值邮递(等)

抽象成class的关键字:
login_info 登录信息
quick-link 快速链接
col-main 主列
main-wrap 主列辅助块
foot-nav 脚部导航
ali-group 阿里巴巴连接组
server-num 服务标示号

从上面的保留的关键字可以看出一个比较良好的命名规则:
常见的唯一性的关键字声明为ID。 例如page, content(这个有点歧义),footer,product,category等

常见范类性如  col-*,hd,bd,rc-* 之类定义成二次定义使用class,也就是说这些class只有在大于等于2层选择器下面才可以使用。
例如 #mall .hd 才可以对hd使用。

通用范类关键字尽量定义少相关属性,如box,tab-holder 等。
在附加范类属性上,taobao使用的是命名扩展方式进行定义。如box-skin-blue就是对box 的一个属性追加而添加的

遵循上面的规则,基本可以完成淘宝首页的大部分class的命名定义了。

我们来看看taobao.com的页面基本结构:

<body>
	<div id="page">
		<div id="header">
			<!-- 头部 -->	
		</div>
		<div id="content">
			<!-- 内容块 -->
		</div>
		<div id="footer">
			<!-- 尾部 -->
		</div>
	</div>
</body>

其中主内容块采用了“圣杯”的设计:

 
<div class="layout">
	<div class="col-main">
		<div class="main-wrap"><!-- 主要内容块 --></div>
	</div>
	<div class="col-sub">
		<!-- 右边附属块 -->
	</div>
</div>

细节规划:
1、所有背景、边线的附加设计都是用了 <s></s> <b></b> <i></i> 标记
2、class粒度上,能够保持比较少的仅仅用于属性性质的class定义