konvensyen am
. /code> Code> dipisahkan oleh satu baris kosong dan
blok subkomponen
dipisahkan oleh tiga baris kosong Komen yang baik adalah sangat penting. Sila berikan masa untuk menerangkan cara komponen berfungsi, hadnya dan cara membinanya. Jangan serahkan kepada ahli pasukan anda yang lain untuk meneka tujuan sekeping kod yang tidak umum atau jelas.
- Petua: Dengan mengkonfigurasi editor, kekunci pintasan boleh disediakan untuk mengeluarkan corak ulasan yang dipersetujui.
/* ========================================================================== 组件块 ============================================================================ */ /* 子组件块 ============================================================================ */ .selector { padding: 15px; margin-bottom: 15px; } /* 子组件块 ============================================================================ */ .selector-secondary { display: block; /* 注释*/ } .selector-three { display: span; }
Kelas dan ID- Gunakan penamaan semantik dan universal
组件块和子组件块
以及声明块
之间使用一空行分隔,子组件块
之间三空行分隔; - 如果使用了多个 CSS 文件,将其按照组件而非页面的形式分拆,因为页面会被重组,而组件只会被移动;
良好的注释是非常重要的。请留出时间来描述组件(component)的工作方式、局限性和构建它们的方法。不要让你的团队其它成员 来猜测一段不通用或不明显的代码的目的。
提示:通过配置编辑器,可以提供快捷键来输出一致认可的注释模式。
/* Not recommended */ .red {} .box_green {} .page .header .login #username input {} ul#example {} /* Recommended */ #nav {} .box-video {} #username input {} #example {}
Class 和 ID
- 使用语义化、通用的命名方式;
- 使用连字符 - 作为 ID、Class 名称界定符,不要驼峰命名法和下划线;
- 避免选择器嵌套层级过多,尽量少于 3 级;
- 避免选择器和 Class、ID 叠加使用;
出于性能考量,在没有必要的情况下避免元素选择器叠加 Class、ID 使用。
元素选择器和 ID、Class 混合使用也违反关注分离原则。如果HTML标签修改了,就要再去修改 CSS 代码,不利于后期维护。
/* Not recommended */ .selector, .selector-secondary, .selector[type=text] { padding:15px; margin:0px 0px 15px; background-color:rgba(0, 0, 0, 0.5); box-shadow:0px 1px 2px #CCC,inset 0 1px 0 #FFFFFF } /* Recommended */ .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; }
声明块格式
- 选择器分组时,保持独立的选择器占用一行;
- 声明块的左括号
{
前添加一个空格; - 声明块的右括号
}
应单独成行; - 声明语句中的
:
后应添加一个空格; - 声明语句应以分号
;
结尾; - 一般以逗号分隔的属性值,每个逗号后应添加一个空格;
rgb()
、rgba()
、hsl()
、hsla()
或rect()
括号内的值,逗号分隔,但逗号后不添加一个空格;- 对于属性值或颜色参数,省略小于 1 的小数前面的 0 (例如,
.5
代替0.5
;-.5px
代替-0.5px
); - 十六进制值应该全部小写和尽量简写,例如,
#fff
代替#ffffff
; - 避免为 0 值指定单位,例如,用
margin: 0;
代替margin: 0px;
Gunakan tanda sempang - sebagai pembatas nama ID dan Kelas, jangan gunakan penamaan dan garis bawah
Elakkan terlalu banyak peringkat bersarang daripada 3 tahap;
Elakkan penggunaan pemilih bertindih dengan Kelas dan ID
Untuk Pertimbangan prestasi, elakkan menggunakan pemilih elemen yang ditindih pada Kelas dan ID apabila tidak perlu. Penggunaan campuran pemilih elemen, ID dan Kelas juga melanggar prinsip pengasingan kebimbangan. Jika teg HTML diubah suai, kod CSS mesti diubah suai sekali lagi, yang tidak sesuai untuk penyelenggaraan kemudian..declaration-order { /* Positioning */ position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 100; /* Box model */ display: block; box-sizing: border-box; width: 100px; height: 100px; padding: 10px; border: 1px solid #e5e5e5; border-radius: 3px; margin: 10px; float: right; overflow: hidden; /* Typographic */ font: normal 13px "Helvetica Neue", sans-serif; line-height: 1.5; text-align: center; /* Visual */ background-color: #f5f5f5; color: #fff; opacity: .8; /* Other */ cursor: pointer; }Format blok pengisytiharan🎜Apabila mengumpulkan pemilih, pastikan pemilih bebas menduduki satu baris 🎜🎜Tambahkan ruang sebelum kurungan kiri blok perisytiharan
}
hendaklah pada baris yang berasingan; 🎜🎜 Ruang hendaklah ditambah selepas :
dalam pernyataan pengisytiharan 🎜🎜Pernyataan pengisytiharan hendaklah berakhir dengan koma bertitik rgb()
, rgba()
, hsl() code>, hsla()
atau rect()
Nilai dalam kurungan, dipisahkan dengan koma, tetapi jangan tambahkan ruang selepas koma; 🎜🎜Untuk nilai atribut atau parameter warna, tinggalkan 0 di hadapan perpuluhan kurang daripada 1 (contohnya, .5
bukannya 0.5
; -.5px
bukannya -0.5px
); 🎜🎜Nilai hex seharusnya semua huruf kecil dan dipendekkan sebanyak mungkin, contohnya, #fff
bukannya #ffffff
🎜🎜Elakkan menyatakan unit untuk 0 nilai, contohnya, dengan margin: 0;
bukannya margin: 0px;
; 🎜🎜/* Not recommended */
@import url(//www.google.com/css/maia.css);
html {
font-family: 'open sans', arial, sans-serif;
}
/* Recommended */
@import url("//www.google.com/css/maia.css");
html {
font-family: "open sans", arial, sans-serif;
}
.selector[type="text"] {
}
🎜Perintah pengisytiharan🎜🎜Atribut yang berkaitan hendaklah kumpulan, gaya penulisan yang disyorkan🎜🎜1.Kedudukan🎜 🎜2.Model kotak🎜🎜3.Tipografi🎜🎜4.VisualIni berada di kedudukan pertama kerana kedudukan boleh mengalih keluar elemen daripada aliran dokumen biasa dan juga boleh mengatasi gaya berkaitan model kotak. Model kotak menentukan saiz dan lokasi komponen dan oleh itu menjadi yang kedua.
Sifat-sifat lain hanya menjejaskan bahagian dalam komponen atau tidak menjejaskan dua kumpulan sifat pertama, jadi ia berada di kedudukan di belakang.
.element { ... }
.element-avatar { ... }
.element-selected { ... }
@media (max-width: 768px) {
.element { ...}
.element-avatar { ... }
.element-selected { ... }
}
Gunakan
url()
untuk tanda petikan, pemilih atribut dan nilai atribut menggunakan tanda petikan berganda. Rujukan Adakah memetik nilai url() benar-benar diperlukan ?url()
、属性选择符、属性值使用双引号。 参考 Is quoting the value of url() really necessary?rrreee媒体查询(Media query)的位置
将媒体查询放在尽可能相关规则的附近。不要将他们打包放在一个单一样式文件中或者放在文档底部。如果你把他们分开了,将来只会被大家遗忘。
不要使用 @import
与 <link>
相比,@import
要慢很多,不光增加额外的请求数,还会导致不可预料的问题。
替代办法:
- 使用多个 元素;
- 通过 Sass 或 Less 类似的 CSS 预处理器将多个 CSS 文件编译为一个文件;
- 其他 CSS 文件合并工具;
参考 don’t use @import;
链接的样式顺序:
a:link -> a:visited -> a:hover -> a:active(LoVeHAte)
Kedudukan pertanyaan media
Letakkan pertanyaan media sedekat mungkin dengan peraturan yang berkaitan. Jangan bungkusnya dalam satu fail gaya atau letakkannya di bahagian bawah dokumen. Jika anda memisahkan mereka, mereka hanya akan dilupakan oleh semua orang pada masa hadapan. @import
Alternatif:
Susunan gaya pautan: