前端知识框架 前端知识框架
首页
基础
框架
插件
Node
地图
更多
前端须知
  • 分类
  • 标签
  • 归档

BestIdea

首页
基础
框架
插件
Node
地图
更多
前端须知
  • 分类
  • 标签
  • 归档
  • 国产机环境浏览器兼容问题收集(持续收集)
  • canvas电子画板,适用于H5版本,组件产出为blob类型的文件流
  • Css3 filter(滤镜) 属性
  • css选择器
  • http缓存
  • less语法
  • New date()浏览器时间兼容性
  • rem自动适应性布局方案
  • 浏览器缓存机制
  • 屏幕适配
  • 前端基础方法汇总
  • 图片转码下载方式(解决浏览器下载图片时直接打开图片问题)
  • CSS命名规范
    • BEM
      • Block(块)
      • Element(元素)
      • Modifier(修饰符)
      • 优点
    • CSS 命名规则
      • 短的比长的好
      • 组合比单命名更好
      • 面向属性和面向语义
    • 命名推荐
      • 状态
      • 布局
      • 通用部件
      • 组件
      • 语义化
  • 大屏定位解决方案
  • TypeScript入门
  • 解决有些浏览器rem不以html的font-size为基准问题
  • 解决Vue项目页面缩放问题
  • H5扫一扫功能
  • crypto前端加密
  • 基础
郝东建
2023-04-03
目录

CSS命名规范

BEM 是一种 CSS 命名规范。

# BEM

BEM(块、元素、修饰符)是一种基于组件的 Web 开发方法。其背后的想法是将用户界面划分为独立的块。这使得即使使用复杂的 UI 也能轻松快速地进行界面开发,并且允许重用现有代码而无需复制和粘贴。该笔记将围绕 BEM 核心模块,块(block)、元素(element)、修饰符(modifier)进行简述。

在选择器中可以使用以下三种符号来表示扩展关系

  • 中划线(-) :仅作为连字符使用,表示某个块或者某个子元素的多单词之间的连接记号。
  • 双下划线(__):双下划线用来连接块和块的子元素
  • 单下划线(_):单下划线用来描述一个块或者块的子元素的一种状态

# Block(块)

如下面的例子,li.item 是列表的一个子元素

/* 常规写法和BEM写法相同 */
.list
1
2

# Element(元素)

/* 常规写法 */
<ul class="list">
  <li class="item">Pricing</li>
  <li class="item">Contact</li>
</ul>

/* BEM写法 */
<ul class="list">
  <li class="list__item">Pricing</li>
  <li class="list__item">Contact</li>
</ul>
1
2
3
4
5
6
7
8
9
10
11
/* 常规写法 */
.list {
}
.list .item {
}

/* BEM写法 */
.list {
}
.list__item {
}
1
2
3
4
5
6
7
8
9
10
11

# Modifier(修饰符)

/* 常规写法 */
<ul class="list">
  <li class="item">Pricing</li>
  <li class="item">Contact</li>
</ul>

/* BEM写法 */
<ul class="list">
  <li class="list__item_active">Pricing</li>
  <li class="list__item">Contact</li>
</ul>
1
2
3
4
5
6
7
8
9
10
11
/* 常规写法 */
.list {
}
.list .item {
}
.list .item.active {
}

/* BEM写法 */
.list {
}
.list__item {
}
.list__item_active {
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 优点

BEM 难点在于明确节点的作用域,开始和结束,如何正确的使用,科学的使用。 BEM 保证样式不冲突的核心就是:在元素名中加入唯一的标识。这个标识在 BEM 中对应的是模块名,也可能是一个独一无二的乱序字符串。

  • 摆脱特异性的困扰
  • 修复继承问题
  • 停止担心命名

# CSS 命名规则

# 短的比长的好

//  推荐
.some-intro {
  ...;
}

// 不推荐
.some-introduction {
  ...;
}
1
2
3
4
5
6
7
8
9

# 组合比单命名更好

// 不建议
.header {
  ...;
}

//推荐
.cs-header {
  ...;
}
1
2
3
4
5
6
7
8
9

# 面向属性和面向语义

/* 面向属性 */
.clearfix:after {
  content: "";
  display: table;
  clear: both;
}
/* 面向语义 */
.header {
  background-color: #333;
  color: #fff;
}
.logo {
  font-size: 0;
  color: transparent;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 面向属性

  • 优点:在于 CSS 的重用率高,性能最佳,即插即用,方便快捷,开发也极为迅速,因为它省去了大量在 HTML 和 CSS 文件之间切换的时间。
  • 缺点:在于由于属性单一,其适用场景有限,另外因为使用方便,易被过度使用,从而带来更高的维护成本。

# 面向语义

  • 优点是应用场景广泛,可以实现非常精致的布局效果,扩展方便; -缺点:在于代码啰唆,开发效率一般,因为所有 HTML 都需要命名,哪怕是一个 10 像素的间距。这就导致很多开发者要么选择直接使用标签选择器,要么就选择一个简单的类名,然后通过父子关系限定样式,结果带来了更糟糕的维护问题。

# 命名推荐

# 状态

前一个    prev
后一个    next
当前的    current

显示的    show
隐藏的    hide
打开的    open
关闭的    close

选中的    selected
有效的    active
默认的    default
反转的    toggle

禁用的    disabled
危险的    danger
主要的    primary
成功的    success
提醒的    info
警告的    warning
出错的    error

大型的    lg
小型的    sm
超小的    xs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 布局

文档    doc
头部    header(hd)
主体    body
尾部    footer(ft)
主栏    main
侧栏    side
容器    box/container
1
2
3
4
5
6
7

# 通用部件

列表    list
列表项  item
表格    table
表单    form
链接    link
标题    caption/heading/title
菜单    menu
集合    group
条      bar
内容    content
结果    result
1
2
3
4
5
6
7
8
9
10
11

# 组件

按钮        button(btn)
字体        icon
下拉菜单    dropdown
工具栏      toolbar
分页        page
缩略图      thumbnail
警告框      alert
进度条      progress
导航条      navbar
导航        nav
子导航      subnav
面包屑      breadcrumb(crumb)
标签        label
徽章        badge
巨幕        jumbotron
面板        panel
洼地        well
标签页      tab
提示框      tooltip
弹出框      popover
轮播图      carousel
手风琴      collapse
定位浮标    affix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 语义化

品牌        brand
标志        logo
额外部件    addon
版权        copyright
注册        regist(reg)
登录        login
搜索        search
热点        hot
帮助        help
信息        info
提示        tips
开关        toggle
新闻        news
广告        advertise(ad)
排行        top
下载        download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
上次更新: 2024/01/18, 10:44:15
图片转码下载方式(解决浏览器下载图片时直接打开图片问题)
大屏定位解决方案

← 图片转码下载方式(解决浏览器下载图片时直接打开图片问题) 大屏定位解决方案→

最近更新
01
webpack打包替换类名命名空间
05-01
02
Vite常用配置
02-26
03
crypto前端加密
01-18
更多文章>
Theme by Vdoing | Copyright © 2022-2024
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式