css与less规范

89 阅读3分钟

全局

  • 协作开发及分工:公⽤的reset.css统⼀书写(重置部分浏览器自带样式),此⽂件不可随意修改
  • 不允许有空的规则
  • 元素选择器⽤⼩写字⺟
  • 去掉数字中不必要的⼩数点和末尾的 0
  • 属性值 0 后⾯不要加单位
  • 不要在同个规则里出现重复的属性(css规则有三种:行内、内部、外部)
  • 不要在⼀个⽂件里出现两个相同的规则,会导致后面的规则覆盖前面的规则,造成样式混乱和代码冗余
  • ⽤ border: 0; 代替 border: none;
  • 选择器不要超过4层(在 scss\less 中如果超过4层应该考虑⽤嵌套的⽅式来写)
  • 尽量少用 * 选择器
  • 尽量少用 important
  • 分号(每个属性声明末尾都要加分号)
  • ⽆前缀的标准属性应该写在有前缀的属性后⾯
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;

less或sass

  • 代码组织顺序: @import、 变量声明、 样式声明
  • 层级结构要清晰
  • 避免⼤量的嵌套规则,最多不能超过5层;
  • 去掉不必要的父级引⽤符号 &
.element {
    & > .dialog {
        ...
    }
}
/* better */
.element {
    > .dialog {
        ...
    }
}
  • 混⼊(Mixin) mixin 名称(⾮需要使⽤的 className)必须加上括号,否则即使不被调⽤也会输出到 CSS 中,造成不必要的重复
.big-text {
    font-size: 2em;
}
h3 {
    .big-text;
}
// better
.big-text() {
    font-size: 2em;
}
h3 {
    .big-text();
}

属性声明顺序(推荐)

  1. Layout(布局)相关的属性,例如widthheightdisplaypositionfloat等。
  2. Box Model(盒模型)相关的属性,例如paddingbordermargin等。
  3. Typography(排版)相关的属性,例如fontline-heighttext-align等。
  4. Visual(视觉效果)相关的属性,例如backgroundcoloropacitybox-shadow等。
  5. Misc(其他)相关的属性,例如cursoroverflowanimationtransition等。

具有相同功能和目的的属性放在一起,方便了代码的阅读和维护。此外,该顺序也符合CSS解析器的处理顺序,可以优化CSS性能。当然,这只是一种推荐的顺序。

命名规范

  • 使用有意义、易于理解的名称,不要使用无意义或难以理解的缩写或单词。
  • 使用小写字母和短横线分隔符(例如:.header-nav),不要使用大写字母、下划线或驼峰式命名法。
  • 避免使用具体的元素名称(例如:.red-text),而是使用描述性的类名(例如:.highlighted-text)。
  • 根据元素的作用和位置来命名(例如:.footer.sidebar.main-content等)。
  • 如果需要对某个元素进行多次样式定义,则可以使用更加通用的类名,例如:.button.link等。这样可以避免重复编写样式代码。

颜色

统⼀使⽤⼗六进制记号形式 #rrggbb ,或简写 #fff ,不允许使⽤ rgb()。如果需要透明度,可使用rgba()

空格

以下几种情况不需要空格:

  • 属性名后
  • 多个规则的分隔符','前
  • !important '!'后 color :red! important;
  • 属性值中 计算符号 前后:calc(100% - 20px)
  • ⾏末不要有多余的空格

以下几种情况需要空格:

  • 属性值前
  • 选择器 > , + 前后
  • { 前
  • !important ! 前 color :red !important;
  • 属性值中的 , 后
  • 注释 /* 后和 */ 前
.element {
    color :red! important;
    background-color: rgba(0,0,0,.5);
}
/* better */
.element {
    color: red !important;
    background-color: rgba(0, 0, 0, .5);
}
.element ,
.dialog{
    ...
}
/* better */
.element,
.dialog {
    ...
}
.element>.dialog{
    ...
}
/* better */
.element > .dialog{
    ...
}
.element{
    ...
}
/* better */
.element {
    ...
}
@if{
    ...
}@else{
    ...
}
/* better */
@if {
    ...
} @else {
    ...
}

空行

  • ⽂件最后保留⼀个空⾏
  • } 后最好跟⼀个空⾏,包括 scss 中嵌套的规则
  • 属性之间需要适当的空⾏

换行

  • 不需要换⾏: { 前
  • 需要换⾏: } 后
  • 每个属性独占⼀⾏

注释

  • 注释统⼀⽤ /* */
  • 缩进与下⼀⾏代码保持⼀致;
  • 可位于⼀个代码⾏的末尾,与代码间隔⼀个空格。

color: red; /* color red */

引号

  • 最外层统⼀使⽤单引号;
  • url() 的内容要⽤引号;
  • 属性选择器中的属性值需要引号