konvensyen am


. /code> Code> dipisahkan oleh satu baris kosong dan blok subkomponen dipisahkan oleh tiga baris kosong
Jika berbilang fail CSS digunakan, Bahagikan kepada komponen dan bukannya halaman, kerana halaman akan disusun semula dan komponen hanya akan dialihkan

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 { 🎜🎜Kurungan kanan perisytiharan blok } hendaklah pada baris yang berasingan; 🎜🎜 Ruang hendaklah ditambah selepas : dalam pernyataan pengisytiharan 🎜🎜Pernyataan pengisytiharan hendaklah berakhir dengan koma bertitik ;; 🎜 🎜Secara amnya, untuk nilai atribut yang dipisahkan dengan koma, ruang harus ditambah selepas setiap koma 🎜🎜rgb(), rgba(), hsl(), 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.Visual

Ini 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)的位置

将媒体查询放在尽可能相关规则的附近。不要将他们打包放在一个单一样式文件中或者放在文档底部。如果你把他们分开了,将来只会被大家遗忘。

rrreee

不要使用 @import

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

替代办法:

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

参考 don’t use @import;

链接的样式顺序:

a:link -> a:visited -> a:hover -> a:active(LoVeHAte)

rrreee

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.

  • Gunakan berbilang elemen
  • Kompilasi berbilang fail CSS ke dalam satu fail melalui prapemproses CSS seperti Sass atau Less
  • Alat penggabungan fail CSS yang lain ;
Rujukan jangan gunakan @import;


Susunan gaya pautan:

🎜a:pautan -> a:dilawati -> aktif (LoVeHAte)
🎜🎜Tidak perlu menambah awalan vendor penyemak imbas🎜🎜Gunakan 🎜Autoprefixer🎜 untuk menambah awalan vendor penyemak imbas secara automatik Tidak perlu menambah awalan penyemak imbas semasa menulis CSS, gunakan CSS standard terus tulis. 🎜🎜Autoprefixer menambah awalan vendor penyemak imbas pada kod CSS yang sepadan mengikut keperluan keserasian melalui 🎜Bolehkah saya menggunakan🎜. 🎜🎜🎜🎜🎜🎜