什么是BEM
BEM是一种前端 CSS 命名方法论
BEM 是块(block)、元素(element)、修饰符(modifier)的简写
为什么需要BEM
假如编写项目的 CSS 代码只有你一个人,或者项目的 CSS 代码量很小,你可以用你喜欢,习惯的方式去组织你的 CSS 代码。但是项目更大,更复杂,有多人编写项目的 CSS 代码,代码量大的时候,就需要一种统一形式去组织 CSS 代码,这时候 BEM 就派上用场了
BEM 命名规范
- 中划线 :仅作为连字符使用,表示某个块或者某个子元素的多单词之间的连接记号
__ 双下划线:双下划线用来连接块和块的子元素
_ 单下划线:单下划线用来描述一个块或者块的子元素的一种状态
在 CSS 预处理器中使用 BEM 格式
<div class="article">
<div class="article__body">
<button class="article__button--primary"></button>
<button class="article__button--success"></button>
</div>
</div>
.article {
max-width: 1200px;
&__body {
padding: 20px;
}
&__button {
padding: 5px 8px;
&--primary {background: blue;}
&--success {background: green;}
}
}
BEM 缺点
- 命名方式长而难看,书写不雅
- 什么时候使用或不使用它
常用CSS class名
包裹类:
container, wrapper, outer, inner, box, header,
footer,main, content, aside, page, section, block
文本类:
title, desc //描述, content, date, author, category //栏目,label,tag
状态类:
primary, secondary, success, danger, warning, info,
error, Link, light, dark, disabled, active, checked, loading
尺寸类:
large, middle, small, bigger, smaller
组件类:
card, list, picture, carousel, swiper, menu, navs, badge, hint, modal, dialog
位置类:
first, last, current, prev, next, forward, back
布局常用名称
- 外套:wrap/wrapper
- 站点:site
- 导航:nav
- 主题:main
- 布局:layout
- 侧栏:sidebar
- 容器:container
- 内容块:content/container
- 栏:column
模块常用名称
- 标志:logo
- 登录:login
- 注册:regsiter
- 搜索:search
- 列表:list
- 购物车:shop
- 工具条:tool/toolbar
- 标签页:tab
- 资源:source
- 合作伙伴:partner
- 页眉:header
- 页脚:footer
- 服务:service
- 新闻:news
- 下载:download
- 版权:copyright
- 友情链接:friendlink
- 投票:vote
- 标签:tab
常用类名
- 标题:title
- 标签:label
- 注释:note
- 摘要:summary
- 提示信息:msg
- 状态:status
- 小技巧:tips
- 滚动:scroll
- 图标:icon
- 当前:current
- 特别:spec
- 提交:submit
- 文本框:textbox
- 下拉菜单:drop
- 按钮:btn
- 表单:form
- 统计:count
- 导航:crumb
- 导航提示:breadcrumb
- 箭头:arr/arrow
- 转角/圆角:cor/corner
导航栏常用名称
- 导航:nav
- 子导航:sub_nav
- 主/全局导航:main_nav/global_nav
- 顶导航:top_nav
- 边导航:sidebar
- 边导航图标:sidebar_icon
- 左导航:left_sidebar
- 右导航:right_sidebar
- 菜单:menu
- 子菜单:submenu
- 下拉菜单:dropmenu
- 菜单容器:menu_container
文件名
- 主要文件:master.css
- 基本公共文件:base.css / global.css
- 布局/版面文件:layout.css
- 主题文件:themes.css
- 表单文件:form.css
- 文字样式文件:font.css
- 模块文件:module.css
- 补丁文件:mend.css
- 打印样式文件:print.css
- 专栏文件:columns.css