标签:
(1)每行不得超过 120 个字符,除非单行不可分割。
(1)属性定义后必须以分号结尾。
(1)如果使用CSS3的属性,如果有必要加入浏览器前缀,则按照(-webkit- / -moz- / -ms- / -o- / std)的顺序进行添加,标准属性写在最后,并且属性名称要对齐。
示例:
.animation-demo { -webkit-animation: mymove 5s infinite; -moz-animation: mymove 5s infinite; -o-animation: mymove 5s infinite; animation: mymove 5s infinite; }
(1)添加文件顶部注释
示例:
/* * @description: xxxxx中文说明 * @author: hejf * @update: 2016-01-18 18:32 */
(2)添加模块注释
示例:
/* module: module1 by sunshilang */ /* module: module2 by sunshilang */
(1)如无必要,不得为 id、class 选择器添加类型选择器进行限定。(解释:在性能和维护性上,都有一定的影响。)
示例:
/* good */ #error, .danger-message { font-color: #c00; } /* bad */ dialog#error, p.danger-message { font-color: #c00; }
(2)选择器的嵌套层级应不大于 3 级,位置靠后的限定条件应尽可能精确。
/* good */ #username input {} .comment .avatar {} /* bad */ .page .header .login #username input {} .comment div * {}
(3)命名避免使用拼音,应该采用更简明有语义的英文单词进行组合,避免通过1、2、3等序号进行命名
(4)避免直接给标签设置样式。
(5)禁止在css中使用*选择符。
(1) 在可以使用缩写的情况下,尽量使用属性缩写。
示例:
/* good */ .post { font: 12px/1.5 arial, sans-serif; } /* bad */ .post { font-family: arial, sans-serif; font-size: 12px; line-height: 1.5; }
(2) 同一 rule set 下的属性在书写时,应按功能进行分组,并以 Formatting Model(布局方式、位置) > Box Model(尺寸) > Typographic(文本相关) > Visual(视觉效果) 的顺序书写,以提高代码的可读性。
解释:
Formatting Model 相关属性包括:position / top / right / bottom / left / float / display / overflow 等
Box Model 相关属性包括:border / margin / padding / width / height 等
Typographic 相关属性包括:font / line-height / text-align / word-wrap 等
Visual 相关属性包括:background / color / transition / list-style 等
链接的样式请严格按照如下顺序添加:a:link > a:visited > a:hover > a:active
另外,如果包含 content 属性,应放在最前面。
示例:
.sidebar { /* formatting model: positioning schemes / offsets / z-indexes / display / ... */ position: absolute; top: 50px; left: 0; overflow-x: hidden; /* box model: sizes / margins / paddings / borders / ... */ width: 200px; padding: 5px; border: 1px solid #ddd; /* typographic: font / aligns / text styles / ... */ font-size: 14px; line-height: 20px; /* visual: colors / shadows / gradients / ... */ background: #f5f5f5; color: #333; -webkit-transition: color 1s; -moz-transition: color 1s; transition: color 1s; }
(3) 0后面不需要单位,比如0px可以省略成0,0.8px可以省略成.8px。
(4) 如果可以,颜色尽量用三位字符表示,例如#aabbcc写成#abc,颜色值不允许使用命名色值。颜色值中的英文字符采用小写。如不用小写也需要保证同一项目内保持大小写一致。
(5) 在保持代码解耦的前提下,尽量合并重复的样式。
示例:
h1 { color: #000; } p { color: #000; } h1, p { color: #000; }
(6) 长度为 0 时可省略单位。
示例:
/* good */ body { padding: 0 5px; } /* bad */ body { padding: 0px 5px; }
(1) 尽量不使用 !important 声明。
(2) 当需要强制指定样式且不允许任何场景覆盖时,通过标签内联和 !important 定义样式。
(1) 与 <link> 相比,@import 要慢很多,不光增加额外的请求数,还会导致不可预料的问题。
替代办法:
使用多个 元素;
通过 Sass 或 Less 类似的 CSS 预处理器将多个 CSS 文件编译为一个文件;
其他 CSS 文件合并工具;
(1) 将 z-index 进行分层,对文档流外绝对定位元素的视觉层级关系进行管理。(解释:同层的多个元素,如多个由用户输入触发的
Dialog,在该层级内使用相同的 z-index 或递增 z-index。建议每层包含100个 z-index
来容纳足够的元素,如果每层元素较多,可以调整这个数值。)
替代办法:
(2) 在可控环境下,期望显示在最上层的元素,z-index 指定为 999999。
(1) 文本内容必须用双引号包围。(解释:文本类型的内容可能在选择器、属性值等内容中。)
示例:
/* good */ html[lang|="zh"] q:before { font-family: "Microsoft YaHei", sans-serif; content: "“"; } html[lang|="zh"] q:after { font-family: "Microsoft YaHei", sans-serif; content: "”"; } /* bad */ html[lang|=zh] q:before { font-family: ‘Microsoft YaHei‘, sans-serif; content: ‘“‘; } html[lang|=zh] q:after { font-family: "Microsoft YaHei", sans-serif; content: "”"; }
(1) font-family 属性中的字体族名称应使用字体的英文 Family Name,其中如有空格,须放置在引号中。
解释:
所谓英文 Family Name,为字体文件的一个元数据,常见名称如下:
字体 | 操作系统 | Family Name |
---|---|---|
宋体 (中易宋体) | Windows | SimSun |
黑体 (中易黑体) | Windows | SimHei |
微软雅黑 | Windows | Microsoft YaHei |
微软正黑) | Windows | Microsoft JhengHei |
华文黑体 | Mac/iOS | STHeiti |
冬青黑体 | Mac/iOS | Hiragino Sans GB |
文泉驿正黑 | Linux | WenQuanYi Zen Hei |
文泉驿微米黑 | Linux | WenQuanYi Micro Hei |
示例:
h1 { font-family: "Microsoft YaHei"; }
(1) 需要在 Windows 平台显示的中文内容,其字号应不小于 12px。(解释:由于中文字体没有 italic 风格的实现,所有浏览器下都会 fallback 到 obilique 实现 (自动拟合为斜体),小字号下 (特别是 Windows 下会在小字号下使用点阵字体的情况下) 显示效果差,造成阅读困难。)
(1) 使用 transition 时应指定 transition-property。
示例:
/* good */ .box { transition: color 1s, border-color 1s; } /* bad */ .box { transition: all 1s; }
(2) 尽可能在浏览器能高效实现的属性上添加过渡和动画。
解释:
在可能的情况下应选择这样四种变换:
transform: translate(npx, npx);
transform: scale(n);
transform: rotate(ndeg);
opacity: 0.1;
典型的,可以使用 translate 来代替 left 作为动画属性。
示例;
/* good */ .box { transition: transform 1s; } .box:hover { transform: translate(20px); /* move right for 20px */ } /* bad */ .box { left: 0; transition: left 1s; } .box:hover { left: 20px; /* move right for 20px */ }
(1) 需要添加 hack 时应尽可能考虑是否可以采用其他方式解决。(解释:如果能通过合理的 HTML 结构或使用其他的 CSS 定义达到理想的样式,则不应该使用 hack 手段解决问题。通常 hack 会导致维护成本的增加。)
(2) 尽量使用 选择器 hack 处理兼容性,而非属性 hack。(解释:尽量使用符合 CSS 语法的 selector hack,可以避免一些第三方库无法识别 hack 语法的问题。)
示例:
/* IE 7 */ *:first-child + html #header { margin-top: 3px; padding: 5px; } /* IE 6 */ * html #header { margin-top: 5px; padding: 4px; }
(3) 尽量使用简单的属性 hack。
示例:
.box { _display: inline; /* fix double margin */ float: left; margin-left: 20px; } .container { overflow: hidden; *zoom: 1; /* triggering hasLayout */ }
尽量避免使用 Expression
编写css样式时,需要先引入reset样式。
网站的CSS架构按照CSS reset > 基本通用样式 > 网站通用样式(包括通用按钮、网站头部、网站底部、网站通用分页等) > 各个网页特殊样式的顺序进行编写。
示例:
/*reset*/ body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,form,legend,input,textarea,p,th,td{ margin:0; padding:0; } a,button,select,textarea,input{ outline:none; } img{ border:0; vertical-align:bottom; } em{ font-style:normal; } textarea{ resize:none; } body{ font:12px/1.5 \5B8B\4F53,Helvetica,Arial,sans-serif; } a{ text-decoration:none; } a:hover{ text-decoration:none; } ol,ul{ list-style:none } /*基本通用样式*/ .mL30{ margin-left:30px; } .abs{ position:aboulute; } ..... /*网站通用样式*/ .submit-btn{ background:#ff0; color:#fff; padding:3px 2px; } cancel-btn{ background:#bf2; color:#fff; padding:3px 2px; } ..... /*首页样式*/ .... /*客户服务页面样式*/ ...... /*联系我们页面样式*/ ......
标签:
原文地址:http://www.cnblogs.com/herofei/p/5499370.html