标签:
一、文件规范
1、文件均归档至约定的目录中
所有的CSS分为两大类:通用类和业务类。通用的CSS文件,放在如下目录中:
外联CSS文件适用于全站级和产品级通用的大文件。内联CSS文件适用于在一个或几个页面共用的CSS。另外一对具体的CSS进行文档化的整理。如:
2、文件引入可通过外联或内联方式引入
link和style标签都应该放入head中,原则上,不允许在html上直接写样式。避免在CSS中使用@import,嵌套不要超过一层。
3、文件名、文件编码及文件大小
二、注释规范
1、文件顶部注释(推荐使用)
2、模块注释
模块注释必须单独写在一行
3、单行注释与多行注释
单行注释可以写在单独一行,也可以写在行尾,注释中的每一行长度不超过40个汉字,或者80个英文字符。
多行注释必须写在单独行内
4、特殊注释
用于标注修改、待办等信息
5、区块注释
对一个代码区块注释(可选),将样式语句分区块并在新行中对其注释。
三、命名规范
使用有意义的或通用的ID和class命名:ID和class的命名应反映该元素的功能或使用通用名称,而不要用抽象的晦涩的命名。反映元素的使用目的是首选;使用通用名称代表该元素不表特定意义,与其同级元素无异,通常是用于辅助命名;使用功能性或通用的名称可以更适用于文档或模版变化的情况。
常用命名(多记多查英文单词):page、wrap、layout、header(head)、footer(foot、ft)、content(cont)、menu、nav、main、submain、sidebar(side)、logo、banner、title(tit)、popo(pop)、icon、note、btn、txt、iblock、window(win)、tips等。
ID和class命名越简短越好,只要足够表达涵义。这样既有助于理解,也能提高代码效率。
类型选择器避免同时使用标签、ID和class作为定位一个元素选择器;从性能上考虑也应尽量减少选择器的层级。
使用类选择器,放弃ID选择器
ID在一个页面中的唯一性导致了如果以ID为选择器来写CSS,就无法重用。
NEC特殊字符:"-"连字符
"-"在本规范中并不表示连字符的含义。
她只表示两种含义:分类前缀分隔符、扩展分隔符,详见以下具体规则。
分类的命名方法:使用单个字母+"-"为前缀
布局(grid)(.g-);模块(module)(.m-);元件(unit)(.u-);功能(function)(.f-);皮肤(skin)(.s-);状态(.z-)。
对以上的解释详情参见:分类方法中的“CSS内部的分类及其顺序”。
注:在你样式中的选择器总是要以上面前五类开头,然后在里面使用后代选择器。
如果这五类不能满足你的需求,你可以另外定义一个或多个大类,但必须符合单个字母+"-"为前缀的命名规则,即 .x- 的格式。
特殊:.j-将被专用于JS获取节点,请勿使用.j-定义样式。
后代选择器命名
通过使用后代选择器的方法,你不需要考虑他的命名是否已被使用,因为他只在当前模块或元件中生效,同样的样式名可以在不同的模块或元件中重复使用,互不干扰;在多人协作或者分模块协作的时候效果尤为明显!
后代选择器不需要完整表现结构树层级,尽量能短则短。
注:后代选择器不要在页面布局中使用,因为污染的可能性较大;
1
2
3
4
5
6
7
8
|
/* 这里的.itm和.cnt只在.m-list中有效 */ .m-list{ margin : 0; padding : 0; } .m-list .itm{ margin : 1px ; padding : 1px ;} .m-list .cnt{ margin-left : 100px ;} /* 这里的.cnt和.num只在.m-page中有效 */ .m-page{ height : 20px ;} .m-page .cnt{ text-align : center ;} .m-page .num{ border : 1px solid #ddd ;} |
命名应简约而不失语义
1
2
3
4
5
6
|
/* 反对:表现化的或没有语义的命名 */ .m-abc .green2{} .g-left2{} /* 推荐:使用有语义的简短的命名 */ .m-list .wrap2{} .g-side2{} |
相同语义的不同类命名
方法:直接加数字或字母区分即可(如:.m-list、.m-list2、.m-list3等,都是列表模块,但是是完全不一样的模块)。
其他举例:.f-fw0、.f-fw1、.s-fc0、.s-fc1、.m-logo2、.m-logo3、u-btn、u-btn2等等。
模块和元件的扩展类的命名方法
当A、B、C、...它们类型相同且外形相似区别不大,那么就以它们中出现率最高的做成基类,其他做成基类的扩展。
方法:+“-”+数字或字母(如:.m-list的扩展类为.m-list-1、.m-list-2等)。
补充:基类自身可以独立使用(如:class="m-list"即可),扩展类必须基于基类使用(如:class="m-list m-list-2")。
如果你的扩展类是表示不同状态,那么你可以这样命名:u-btn-dis,u-btn-hov,m-box-sel,m-box-hov等等,然后像这样使用:class="u-btn u-btn-dis"。
如果你的网站可以不兼容IE6等浏览器,那么你标识状态的方法也可以采取独立状态分类(.z-)方法:.u-btn.z-dis,.m-box.z-sel,然后像这样使用:class="u-btn z-dis"。
模块和元件的后代选择器的扩展类
有时候模块内会有些类似的东西,如果你没有把它们做成元件和扩展,那么也可以使用后代选择器和扩展。
后代选择器:.m-login .btn{}。
后代选择器扩展:.m-login .btn-1{},.m-login .btn-dis{}。
同样也可以采取独立状态分类(.z-)方法:.m-login .btn.z-dis{},然后像这样使用:class="btn z-dis"。
注:此方法用于类选择器,直接使用标签做为选择器的则不需要使用此命名方法。
注:为防止后代选择器的扩展类和大类命名规范冲突,后代选择器不允许使用单个字母。
比如:.m-list .a{}是不允许的,因为当这个.a需要扩展的时候就会变成.a-bb,这样就和大类的命名规范冲突。
分组选择器有时可以代替扩展方法
有时候虽然两个同类型的模块很相似,但是你希望他们之间不要有依赖关系,也就是说你不希望使用扩展的方法,那么你可以通过合并选择器来设置共性的样式。
使用本方法的前提是:相同类型、功能和外观都相似,写在同一片代码区域方便维护。
1
2
3
4
5
6
7
8
9
10
|
/* 两个元件共性的样式 */ .u-tip1,.u-tip2{} .u-tip1 .itm,.u-tip2 .itm{} /* 在分别是两个元件各自的样式 */ /* tip1 */ .u-tip1{} .u-tip1 .itm{} /* tip2 */ .u-tip2{} .u-tip2 .itm{} |
防止污染和被污染
当模块或元件之间互相嵌套,且使用了相同的标签选择器或其他后代选择器,那么里面的选择器就会被外面相同的选择器所影响。
所以,如果你的模块或元件可能嵌套或被嵌套于其他模块或元件,那么要慎用标签选择器,必要时采用类选择器,并注意命名方式,可以采用.m-layer .layerxxx、.m-list2 .list2xxx的形式来降低后代选择器的污染性。
命名时需要注意的点:
1.文件命名规范
全局样式:global.css;
框架布局:layout.css;
字体样式:font.css;
链接样式:link.css;
打印样式:print.css;
主要的 master.css
模块 module.css
基本共用 base.css
主题 themes.css
专栏 columns.css
表单 forms.css
补丁 mend.css
2.常用类/ID命名规范
(1) 页面结构
(2) 导航
(3) 功能
3、常用class的命名:
(1) 颜色:使用颜色的名称或者16进制代码,如
(2) 字体大小,直接使用”font+字体大小”作为名称,如
(3) 对齐样式,使用对齐目标的英文名称,如
(4) 标题栏样式,使用”类别+功能”的方式命名,如
四、书写规范
1、排版规范
(1) 使用4个空格,而不使用tab或者混用空格+tab作为缩进;
(2) 规则可以写成单行,或者多行,但是整个文件内的规则排版必须统一;
单行形式书写风格的排版约束:
多行形式书写风格的排版约束:
2、属性编写顺序
3、规则书写规范
4、代码性能优化
5、CSS Hack的使用
请不用动不动就使用浏览器检测和CSS Hacks,先试试别的解决方法吧!考虑到代码高效率和易管理,虽然这两种方法能快速解决浏览器解析差异,但应被视为最后的手段。在长期的项目中,允许使用hack只会带来更多的hack,你越是使用它,你越是会依赖它!
推荐使用下面的:
因为不同浏览器对W3C标准的支持不一样,各个浏览器对于页面的解释呈视也不尽相同,比如IE在很
多情况下就与FF存在3px的差距,对于这些差异性,就需要利用css 的hack来进行调整,当然在没有必要的
情况下,最好不要写hack来进行调整,避免因为hack而导致页面出现问题。
1、 IE6、IE7、Firefox之间的兼容写法:
写法一:
IE都能识别*;标准浏览器(如FF)不能识别*;
IE6能识别*,但不能识别 !important,
IE7能识别*,也能识别!important;
FF不能识别*,但能识别!important;
根据上述表达,同一类/ID下的CSS hack可写为:
.searchInput {
/*三者皆可*/
*background-color:#666 !important; /*仅IE7*/
*background-color:#999; /*仅IE6及IE6以下*/
}
一般三者的书写顺序为:FF、IE7、IE6.
写法二:
IE6可识别“_”,而IE7及FF皆不能识别,所以当只针对IE6与IE7及FF之间的区别时,可这样书写:
.searchInput {
/*通用*/
_background-color:#666;/*仅IE6可识别*/
}
写法三:
*+html 与 *html 是IE特有的标签, Firefox 暂不支持。
.searchInput {}
*html .searchInput {background-color:#666;}/*仅IE6*/
*+html .searchInput {background-color:#555;}/*仅IE7*/
屏蔽IE浏览器:
select是选择符,根据情况更换。第二句是MAC上safari浏览器独有的。
*:lang(zh) select {font:12px !important;} /*FF的专用*/
select:empty {font:12px !important;} /*safari可见*/
IE6可识别:
这里主要是通过CSS注释分开一个属性与值,注释在冒号前。
select { display /*IE6不识别*/:none;}
IE的if条件hack写法:
所有的IE可识别:
<!–[if IE]> Only IE <![end if]–>
只有IE5.0可以识别:
<!–[if IE 5.0]> Only IE 5.0 <![end if]–>
IE5.0包换IE5.5都可以识别:
<!–[if gt IE 5.0]> Only IE 5.0+ <![end if]–>
仅IE6可识别:
<!–[if lt IE 6]> Only IE 6- <![end if]–>
IE6以及IE6以下的IE5.x都可识别:
<!–[if gte IE 6]> Only IE 6/+ <![end if]–>
仅IE7可识别:
<!–[if lte IE 7]> Only IE 7/- <![end if]–>
2、清除浮动:
在Firefox中,当子级都为浮动时,那么父级的高度就无法完全的包住整个子级,那么这时用这个清除
浮动的HACK来对父级做一次定义,那么就可以解决这个问题。
select:after {
content:”.”;
display:block;
height:0;
clear:both;
visibility:hidden;
}
6、字体规则
为保证不同浏览器上字号保持一致,字号用点数pt和像素px来定义。
(注:中文宋体的9pt和11pt和中文宋体12px 和14.7px 这是经过优化的字号建议考虑,另外黑体字或
者宋体字加粗时,建议选用11pt和14.7px 的字号比较合适。)
7、选择DOCTYPE
XHTML 1.0 提供了三种DTD声明可供选择:
过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写
法)。完整代码如下:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>。完整代码如下:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>
框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种
DTD。完整代码如下:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd“>
理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML
1.0 Transitional)是目前理想选择(包括本站,使用的也是过渡型DTD)。因为这种DTD还允许我们使用表现
层的标识、元素和属性,也比较容易通过W3C的代码校验。
网页必须调用w3c规范
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
(解释: DTD是词汇表, CSS是数据的表现形式)
8、 指定语言及字符集
为文档指定语言:
<html xmlns=”http://www.w3.org/1999/xhtml” lang=”en”>
为了被浏览器正确解释和通过W3C代码校验,所有的XHTML文档都必须声明它们所使用的编码语言;
如:
常用的语言定义:
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
标准的XML文档语言定义:
<?xml version=”1.0″ encoding=” utf-8″?>
针对老版本的浏览器的语言定义:
<meta http-equiv=”Content-Language” content=” utf-8″ />
为提高字符集,建议采用“utf-8”。
(解释: 如果网页格式是utf-8 ,最简单的方法就是在写样式表之前将这个css文件用记事本打开,然后另存为utf-8格式。
9、调用方法
方法1: <link rel="stylesheet" rev="stylesheet" href="css/52css_page.css" type="text/css" media="all" />
每个页面调用全局css和这个页面用单独用到的css
说明:(1)rel="stylesheet"和 rev="stylesheet" 为设置或获取对象和链接目的的关系。用来告诉浏览器
你link进来的是个样式表文件,(只写一个就可以了,由于目前的CSS还不能抓取rel与rev的属
性值,所以没有办法给不同关系的链接提供不同的样式,所以现在rel与rev只是用来使得网页的
语义性更为完善。)
(2)media="all" 所有媒体类型的样式;media="screen"设置显示器的样式;media=" print"设置打印的样式。
方法2: <link rel="stylesheet" rev="stylesheet" href="css/common.css" type="text/css" media="all" />
将整个项目的css 都先用common.css引用,这样每个页面只需调用common.css即可
(解释: common.css 写法 : @import url("style.css"); @import url("header.css"); 依次排列。
注:@import引用的CSS会等到页面全部被下载完再被加载,速度相对会较慢。)
10、表格
建议:用百分比控制表格,并利用css的从属关系控制表格
解释:这里定义一个样式为div ,控制这个区域的表格为
.div table{width:100%; border-collapse:collapse;}
.div td{ height:20px; text-align:center; border:solid #000000 1px;}
11、空格
a) 不要在网页中连续出现多于一个的也尽量少使用全角空格(英文字符集下,全角空格会变成乱码)。
b) 转意符号 ,也要尽量少使用,火狐和IE效果不一样
(解决:空白应该尽量使用 text-indent, padding, margin, hspace, vspace 以及透明的gif 图片来实现。)
12、缩进
排版中遇到需要进行首行缩进的时候,处理做法是在样式表中定义 p { text-indent: 2em; } 然后给每一段加上 <p> 标记。注意,不要省略 </p> 结束标记 。
13、行距
行距建议用百分比来定义,通常为120%或150%
14、 浏览器兼容
制作的代码应对以下浏览器兼容:
1.IE6
2.IE7
3.firefox2.0
在不同的浏览器中界面显示一致,不能出现错位及效果不一的结果。
15、目录命名
在网站根目录中开设images、common 、temp 三个子目录,根据需要再开设media 子目录。
1. images目录中放不同栏目的页面都要用到的公共图片,例如公司的标志、banner 条、菜单、按钮等等,可以根据需要开设子目录;
2. common 子目录中放css、js,、include 等公共文件;
3. temp 子目录放演示内容和样例,比如车型演示图片等等;(因temp文件过多,建议以时间为名称开设目录,将客户陆续提供的资料归类整理。)
4. media 子目录中放flash, avi, quick time 等多媒体文件。
建议: “media”子目录放在“images” 子目录方便CDN加速。
16、鼠标手势
在XHTML标准中,hand只被IE识别,当需要将鼠标手势转换为“手形”时,则将“hand”换为“pointer”,
即“cursor:pointer;”
17、基本全局样式
style.css 中的内容
*{ margin:0; padding:0;}
body{ font-family:"宋体",arial; font-size:12px; background:#fff; color:#000; }
img,a img{ border:0px;}
a img{ vertical-align:middle;}
div,form,img,ul,li,dl,dt,dd{padding:0px; margin:0px; }
td,p,div,li,select,input,textarea{font-family:"宋体";font-size:12px;}
td,p,div,li,input,textarea {word-break:break-all;}
select,input{vertical-align:middle;}
table,tr,td,th{ font-size:12px;}
ol,li{list-style-type:none;}
ul,li{list-style-type:none;}
h1,h2,h3,h4,h5,h6{ padding:0px; margin:0px;}
.css2007 { color: #333; }
* html .css2007 { color: #00ffff; }
*+html .css2007 { color: #999; }
a:link{ color:#000000; text-decoration: none;}
a:visited{color:#000000; text-decoration: none;}
a:hover{color:#ff0000; text-decoration: underline;}
a:active{ color:#999999; text-decoration: none;}
.clear { clear:both;}
.hidden { display: none;}
.nobreak {white-space:nowrap;}
.alpha {filter:alpha(opacity=30); -moz-opacity:0.3;}
.bgalpha {background:transparent;}
五、测试规范
1、了解浏览器特效支持
为了页面性能考虑,如果浏览器不支持CSS3相关属性的,则该浏览器的某些特效将不再支持,属性的支持情况如下表所示(Y为支持,N为不支持):
2、 设定浏览器支持标准
标签:
原文地址:http://www.cnblogs.com/jymz/p/4397962.html