博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS编码规范
阅读量:4604 次
发布时间:2019-06-09

本文共 6227 字,大约阅读时间需要 20 分钟。

CSS编码规范

1 代码风格

1.1 行长度

(1)每行不得超过 120 个字符,除非单行不可分割。

1.2 属性

(1)属性定义后必须以分号结尾。

1.3 其他

(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;}

2 通用

2.1 注释

(1)添加文件顶部注释

示例:

/** @description: xxxxx中文说明* @author: hejf* @update: 2016-01-18 18:32*/

(2)添加模块注释

示例:

/* module: module1 by sunshilang *//* module: module2 by sunshilang */
2.2 选择器

(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中使用*选择符。

2.3 属性

(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;}
2.4 !important

(1) 尽量不使用 !important 声明。

(2) 当需要强制指定样式且不允许任何场景覆盖时,通过标签内联和 !important 定义样式。

2.5 @import

(1) 与 <link> 相比,@import 要慢很多,不光增加额外的请求数,还会导致不可预料的问题。

替代办法:
  使用多个 元素;
  通过 Sass 或 Less 类似的 CSS 预处理器将多个 CSS 文件编译为一个文件;
  其他 CSS 文件合并工具;

2.6 z-index

(1) 将 z-index 进行分层,对文档流外绝对定位元素的视觉层级关系进行管理。(解释:同层的多个元素,如多个由用户输入触发的 Dialog,在该层级内使用相同的 z-index 或递增 z-index。建议每层包含100个 z-index 来容纳足够的元素,如果每层元素较多,可以调整这个数值。)

替代办法:
(2) 在可控环境下,期望显示在最上层的元素,z-index 指定为 999999。

3 值与单位

3.1 文本

(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: "”";}

4 文本编排

4.1 字体族

(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";}
4.2 字号

(1) 需要在 Windows 平台显示的中文内容,其字号应不小于 12px。(解释:由于中文字体没有 italic 风格的实现,所有浏览器下都会 fallback 到 obilique 实现 (自动拟合为斜体),小字号下 (特别是 Windows 下会在小字号下使用点阵字体的情况下) 显示效果差,造成阅读困难。)

5 变换与动画

(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 */}

6 兼容性

6.1 hack

(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 */}
6.2 Expression

尽量避免使用 Expression

7 网站CSS架构

7.1 CSS reset

编写css样式时,需要先引入reset样式。

7.2 网站CSS架构

网站的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; }...../*首页样式*/..../*客户服务页面样式*/....../*联系我们页面样式*/......

 

转载于:https://www.cnblogs.com/herofei/p/5499370.html

你可能感兴趣的文章
远程服务器git搭建
查看>>
牛人们的博客地址
查看>>
Zabbix是什么?
查看>>
源码:COCO微博
查看>>
面向对象预习随笔
查看>>
大数据概念炒作周期模型
查看>>
排序模型
查看>>
Dede推荐文章与热点文章不显示?
查看>>
React 3
查看>>
Topshelf 使用
查看>>
Linux --Apache服务搭建
查看>>
20145325张梓靖 实验三 "敏捷开发与XP实践"
查看>>
JavaScript面试题
查看>>
[转帖]架构师眼中的高并发架构
查看>>
ios的一些开源资源
查看>>
HTTP 错误 500.21 - Internal Server Error 解决方案
查看>>
Bucks sign Sanders to $44 million extension
查看>>
【PHP】Windows下配置用mail()发送邮件
查看>>
Nhibernate和EF的区别
查看>>
基于java spring框架开发部标1078视频监控平台精华文章索引
查看>>