前言
本文内容部分参考自网易前端规范:NEC
样式属性顺序
单个样式规则下的属性在书写时,应该按以下规则书写。
Positioning Model > Box Model > Typographic > Visual的顺序书写,提高代码的可读性。
- Positioning Model 布局方式、位置,相关属性包括:position, top, z-index, display, float等
- Box Model 盒模型,相关属性包括:width, height, padding, margin,border,overflow
- Typographic 文本排版,相关属性包括:font, line-height, text-align
- Visual 视觉外观,相关属性包括:color, background, list-style, transform, animation
一个小例子1
2
3
4
5
6
7
8
9
10
11
12
13
14.box {
// 先书写位置相关
position: relative;
top: 0;
// 其次书写盒子相关
width: 50%;
margin: 0 auto;
// 在书写文本相关
font-size: 14px;
line-height: 1.5;
// 最后就是视觉外观
color: red;
transform: scale(1.2);
}
CSS选择器命名规则
分类式命名法(前端组件化)
- 布局(grid)(.g-): 将页面分割为几个大块,通常有头部,主体,主栏等。
- 模块(module)(.m-): 通常是一个语义化的可以重复的较大的整体。比如导航,登陆,注册等。
- 元件(unit)(.u-): 通常是一个不可再分的较为小巧的个体,通常被重复用于各种模块,比如按钮,loading等。
- 功能(function)(.f-): 一些常用样式,将使用频率高的样式剥离出来,按需使用,通常这些选择器具有固定样式表现,比如清楚浮动等。
- 状态(.z-): 为状态类样式加入前缀,同一标示,方便识别,只能作为组合或者后代出现。
- javascript(.j-): 专用于JS获取节点,请勿使用.j定义样式
不要使用”_”下划线来命名css
id采用驼峰式命名(不要乱用id,最好不使用id,除非作为锚点)
scss中的变量、函数、混合、placeholder采用驼峰式命名
命名方式(BEM): 类-体(例如: g-head)、类-体-修饰符(例如: u-btn-active)
最佳写法
1 | /* 这是某个模块 */ |
统一语义理解和命名
布局(.g-)
| 语义 | 命名 | 简写 |
|---|---|---|
| 文档 | doc | doc |
| 头部 | head | hd |
| 主体 | body | bd |
| 尾部 | foot | ft |
| 主栏 | main | mn |
| 主栏子容器 | mainc | mnc |
| 侧栏 | side | sd |
| 侧栏子容器 | sidec | sdc |
| 盒容器 | wrap/box | wrap/box |
模块(.m-)、元件(.u-)
| 语义 | 命名 | 简写 |
|---|---|---|
| 导航 | nav | nav |
| 子导航 | subnav | snav |
| 面包屑 | crumb | crm |
| 菜单 | menu | menu |
| 选项卡 | tab | tab |
| 标题区 | head/title | hd/tt |
| 内容区 | body/content | bd/ct |
| 列表 | list | lst |
| 表格 | table | tb |
| 表单 | form | fm |
| 热点 | hot | hot |
| 排行 | top | top |
| 登录 | login | log |
| 标志 | logo | logo |
| 广告 | advertise | ad |
| 搜索 | search | sch |
| 幻灯 | slide | sld |
| 提示 | tips | tips |
| 帮助 | help | help |
| 新闻 | news | news |
| 下载 | download | did |
| 注册 | regist | reg |
| 投票 | vote | vote |
| 版权 | vcopyright | cprt |
| 结果 | result | rst |
| 标题 | title | tt |
| 按钮 | button | btn |
| 输入 | input | ipt |
功能(.f-)
| 语义 | 命名 | 简写 |
|---|---|---|
| 清楚浮动 | clearboth | cb |
| 左浮动 | floatleft | fl |
| 内联 | inlineblock | ib |
| 文本居中 | textaligncenter | tac |
| 垂直居中 | verticalalignmiddle | vam |
| 溢出隐藏 | overflowhidden | oh |
| 完全消失 | displaynone | dn |
| 字体大小 | fontsize | fz |
| 字体粗细 | fontweight | fs |
皮肤(.s-)
| 语义 | 命名 | 简写 |
|---|---|---|
| 字体颜色 | fontcolor | fc |
| 背景颜色 | backgroundcolor | bgc |
| 边框颜色 | bordercolor | bdc |
状态(.z-)
| 语义 | 命名 | 简写 |
|---|---|---|
| 选中 | selected | sel |
| 当前 | current | crt |
| 显示 | show | show |
| 隐藏 | hide | hide |
| 打开 | open | open |
| 关闭 | close vclose | |
| 出错 | error | err |
| 不可用 | disabled | dis |
注意事项
- 一律小写,中划线
- 尽量不用缩写
- 不要随意使用id
- 去掉小数点前面的0:0.9rem => .9rem
- 使用简写:margin:0 1rem 3rem