[TOC]
(2) CSS编码规范
class 名称中只能出现小写字符和破折号(例如.btn 和 .btn-danger
),名称可能短并且意义明确,避免过度任意的简写。
标准格式化用两个空格来代替制表符(tab),为了代码的易读性在每个声明块的左花括号前添加一个空格
,为每条声明语句的 : 后应该插入一个空格
,且在每一条语句和声明后建议加上 ‘;’。对于以逗号分隔的属性值每个逗号后面都应该插入一个空格(例如,box-shadow)。
为选择器分组时,将单独的选择器单独放在一行,声明块的右花括号应当单独成行。
为了获得更准确的错误报告,每条声明都应该独占一行。
对于属性值或颜色参数省略小于 1 的小数前面的 0 (例如,.5 代替 0.5;-.5px 代替 -0.5px)并且避免为 0 值指定单位,例如,用 margin: 0; 代替 margin: 0px;
尽量使用简写形式的十六进制值而且全部小写,例如,用 #fff 代替 #ffffff
,在扫描文档时,小写字符易于分辨,因为他们的形式更易于区分。
为选择器中的属性添加双引号例如 input[type="text"]
,为了代码的一致性,建议都加上双引号。
尽量不要使用 @import , 与 <link>
标签相比,@import 指令要慢很多,不光增加了额外的请求次数,还会导致不可预料的问题; (解决办法:使用多个 <link>
元素,通过 Sass 或 Less 类似的 CSS 预处理器进行编译,通过 Rails、Jekyll 或其他系统中提供过 CSS 文件合并功能)
媒体查询(Media query)的位置放在尽可能相关规则的附近。
当使用特定厂商的带有前缀的属性时,通过缩进的方式,让每个属性的值在垂直方向对齐,这样便于多行编辑。
Less 和 Sass 中避免非必要的嵌套;
选择器要尽可能短,并且尽量限制组成选择器的元素个数,建议不要超过 3 。
声明顺序:
Positioning : 定位
Box model : 模型
Typographic : 字体颜色
Visual : 背景边框
Misc : 其他
基础实例: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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 <link rel="stylesheet" href="core.css"> .selector ,.selector-secondary ,.selector [type="text"] { padding : 15px ; margin-bottom : 15px ; background-color : rgba (0,0,0,.5); box-shadow : 0 1px 2px #ccc , inset 0 1px 0 #fff ; } .declaration-order { position : absolute; top : 0 ; right : 0 ; bottom : 0 ; left : 0 ; z-index : 100 ; display : block; float : right; width : 100px ; height : 100px ; font : normal 13px "Helvetica Neue" , sans-serif; line-height : 1.5 ; color : #333 ; text-align : center; background-color : #f5f5f5 ; border : 1px solid #e5e5e5 ; border-radius : 3px ; opacity : 1 ; } //特定厂商的带有前缀的属性 .selector { -webkit-box-shadow : 0 1px 2px rgba (0,0,0,.15); box-shadow : 0 1px 2px rgba (0,0,0,.15); } .span1 { width : 60px ; }.span2 { width : 140px ; }.span3 { width : 220px ; }.sprite { display : inline-block; width : 16px ; height : 15px ; background-image : url (../img/sprite.png); } //简写形式的属性声明 .element { margin-bottom : 10px ; background-color : red; background-image : url ("image.jpg" ); border-top-left-radius : 3px ; border-top-right-radius : 3px ; } // class 命名 .tweet { ... } .important { ... } .tweet-header { ... } //选择器 .avatar { ... } .tweet-header .username { ... } .tweet .avatar { ... }
1 2 3 {} @import url('http://1.2.3.4/' ); {} body {background : url (http://ip:port);} #或者加载背景 background-image:url(data:image/gif;base64,R0lGODlhAQAcALMAAMXh96HR97XZ98Hf98Xg97DX97nb98Lf97vc98Tg973d96rU97ba97%2Fe96XS9wAAACH5BAAAAAAALAAAAAABABwAAAQVMLhVBDNItXESAURyDI2CGIxQLE4EADs%3D);
数据展示方式:1 2 3 4 5 6 7 8 9 10 11 data:text/plain,<文本数据 > data:text/html,<HTML代码 > data:text/html;base64,<base64编码的HTML代码 > data:text/css,<CSS代码 > data:text/css;base64,<base64编码的CSS代码 > data:text/javascript,<Javascript代码 > data:text/javascript;base64,<base64编码的Javascript代码 > data:image/gif;base64,base64编码的gif图片数据 data:image/png;base64,base64编码的png图片数据 data:image/jpeg;base64,base64编码的jpeg图片数据 data:image/x-icon;base64,base64编码的icon图片数据