nicenote/source/_posts/css的命名规范.md
2018-01-23 19:05:40 +08:00

74 lines
1.9 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: css的命名规范
date: 2017-07-17 10:51:20
tags: [css命名规范]
categories: CSS
---
## 关于 css 的一些命名规范
* css设计模式SMACSS
* BEM 命名规范
* javascript Hook
### SMACSS
首先,它定义了五种样式:
* base基本
* layout布局
* module模块
* state状态
* theme皮肤
#### base基本
* 在该样式中不适用classid等选择只对标签元素本身做设定可以有属性选择器和伪类
```
html{}
input[type=text] {}
a:hover {}
```
#### layout(布局)
* 整个网站的【大架构】的外观类似headerfooter
```
#header {}
.sidebar {}
```
> 通常只有一个选择器一个id或一个class
#### module组件
* 可复用组件不需要任何prefix
#### partial
比 layout 范围小,可以是特定单一领域下特别的设定,通常会将名称加在子 class 作为 prefix
```
.nav--main_item {}
```
#### state
* 定义状态,例如:.active, .on
```
<ul>
<li> </li>
<li class="active"> </li>
<ul>
```
> .is-active 比.active 来的好读
#### skin皮肤
* 画面上所有主视觉的定义例如border-colorbackground-imagefont-family等负责大架构上的视觉样式。
### BEM 命名规范
* BEM 即 blockelementmodifier 缩写
* 将 block 区块作为起始开头element为 block下的元素modifier为该元素的属性。
* block 和 element 用 __ 双下划线区分, 不同的modifier 则用 两个--区分,一个-表示这个 class 不依赖任何 block 或者 element ,是个独立的存在:.page-container
示范:
```
.sidebar {
.sidebar--left__section {
.sidebar--left__section--header {}
}
}
```
### javascript hook
* 我理解的是,在 css 选择器的前缀加个动作或者 “js”来表示该标签被 js 调用过
> html 里 class 之间用两个空格比一个空格好阅读