目录

  • 1、BEM
  • 2、实战
    • Block
    • Element
    • Modifier
  • 3、总结

1、BEM

BEM其实是块(block)、元素(element)、修饰符(modifier)的缩写,利用不同的区块,功能以及样式来给元素命名。
通过bem规范来命名元素,可以使得我们对于元素的命名更加规范,见名知意,便于项目后期的维护和样式提取。

2、实战

这是饿了么官网的卡片组件的代码,我们来分析以下这个组件的命名。

Block

首先对于BEM中的B,更高级别的抽象或组件,这里是el-card,表示饿了么的card卡片组件。

Element

Element代表 block 的后代(或者组成部分),用于形成一个完整的 block 的整体。对于el-card,它的Element有卡片头部、卡片主体等。

BEM规范规定B和E之间使用双下划线___连接起来,例如上图中的:

el-card__header (el-card的头部header)
el-card__body (el-card的主体body)

Modifier

Modifier代表 block 的不同状态或不同版本(用于描述每一个元素的具体的属性。可以看出范围在一步步缩小,使命名更加具体。)

BEM规定使用双中线--来连接block和modifier或者element和modifier:

上图中,el-button代表block,是饿了么的按钮,然后对于警告按钮,有自己的warning状态,所以使用:

el-button--warning

3、总结

经过分析饿了么组件库的元素命名规范,可以看到BEM规范的基本命名规则:

【前端开发】CSS BEM命名规范相关推荐

  1. BEM 命名规范简介

    1.什么是 BEM 命名 BEM 是一个简单又非常有用的命名约定.让你的前端代码更容易阅读和理解,更容易协作,更容易控制,更加健壮和明确,而且更加严密.这篇文章主要介绍了CSS BEM 命名规范简介. ...

  2. css BEM书写规范

    [规范]css BEM书写规范 BEM是基于组件的web开发方法.其思想是将用户界面分隔为独立的块,从而使开发复杂的UI界面变得更简单和快,且不需要粘贴复制便可复用现有代码. BEM由Block.El ...

  3. 前端开发要遵守什么规范 如何成为企业急需人才

    前端开发要遵守什么规范?如何成为企业急需人才?一个项目大多都是由一个团队来完成,如果没有统一的代码规范,每个人的代码必定会风格迥异,在沟通对接时就会消耗大量的时间.下面小编就给大家介绍一下Web前端开 ...

  4. 前端开发css禁止选中文本

    在我们日常的Java web前端开发的过程中呢,程序员们会遇到各种各样的要求,所以不每天学的东西感觉自己都退步了,都更不上时代的发展了. 每天应对各种需求,每天活在疑问中就是我们程序员的真是写照.但我 ...

  5. day01--java基础编程:计算机基础知识 ,java语言概述,java开发环境搭建,eclipse概述,创建简单java项目,JDK JRE JVM的关系,java开发中的命名规范,编程风格

    1 Day01–Java开发环境+HelloWorld 1.1 计算机基础知识 资料下载网址:刘沛霞 18600949004 code.tarena.com.cn tarenacode code_20 ...

  6. css外部命名规范,前端开发较全CSS命名规范

    前端开发用什么框架吗 前端开发新框架 前端开发app混合开发框架 文件名命名规范 模块:module. 基本共用:base. 布局.版面:layout.css 主题:themes.css 专栏:col ...

  7. 前端开发的流程与规范

    先仍2篇网上找的: 在团队不断成长的过程中,需要处理的需求也在逐渐增长,团队中成员如何分工配合决定了开发的效率.产品的质量,在这个时候我们就需要一个流程来规范.指导我们,下面就将咱们前端组的一些经验跟 ...

  8. FleaPHP 开发指南 - 4. 命名规范和目录结构

    FleaPHP 的命名规则和目录结构初看上去比较复杂,但习惯以后,你会发现这种命名规则带来许多好处.因此像 Zend Framework 也是采用同样的做法. 当然,FleaPHP 对于应用程序的命名 ...

  9. div+css中命名规范

    上次给别人演示div的效果时,写了css样式却一直不能呈现,最后不小心发现自己在写css样式时候,给一个class命名为数字开头的名称,才想起来自己去年刚学习样式表时候也出现此问题,最后被我解决掉的, ...

最新文章

  1. linux关机告诉用户,在Linux服务器关机前向用户显示一条自定义消息
  2. Linux下的vim文本替换,Linux下文本的vim文本替换
  3. Linux 下如何查找 MySQL 数据库的数据根目录呢?
  4. mysql怎么制作柱状图_从数据库中取出最近三十天的数据并生成柱状图
  5. 第二十九课、主窗口中的状态栏------------------狄泰软件学院
  6. python项目开发实例-Python小项目:快速开发出一个简单的学生管理系统
  7. 在移动端H5开发中(关于安卓端position:fixed和position:absolute;和虚拟键盘冲突的问题,以及解决方案)...
  8. 张宇基础30讲 第8讲
  9. 蛋白质二级结构预测-Chou-Fasman预测方法
  10. python招聘杭州拉勾网_Python爬虫:爬取拉勾网招聘信息
  11. 7-38 寻找大富翁 (25分)
  12. MCE公司:MCE 中国生命科学研究促进奖获奖论文集锦三
  13. python特征选择relieff图像特征优选_基于Relief特征选择算法的研究与应用
  14. Error contacting service. It is probably not running解决
  15. MYSQL 中UNIQUE 用法 意思
  16. 小程序源码:全新圣诞节头像框制作生成
  17. Windows 钩子,基本的dll注入
  18. 计算机按键音乐文爱,文爱_CG贺敬轩_单曲在线试听_酷我音乐
  19. MySQL-存储过程与函数(PRECEDURE/FUNCTION/DECLARE/SET/CALL/DELIMITER)
  20. android view上下滚动条,Android自定义View六(ViewGroup水平垂直滚动实现类似支付宝年度账单的效果)...

热门文章

  1. AutoCAD文件清晰线条打印方法
  2. 集合类(常见的集合类:Collection、List、Set、ArrayList、linkedList、Vector、HashSet、TreeSet)...
  3. 翻翻git之---实现QQ空间点赞部分实现的自定义控件 EasyLikeArea
  4. android jni jobject,关于android:无法更新JNI中的jobject
  5. 第三方直播SDK对比(腾讯云,阿里云,网易云信,七牛云,金山云,声网,即构科技)
  6. EMIF接口时序和参考代码
  7. Rxjava2入门教程三:Operators操作符
  8. sublime text 小技巧
  9. docker是什么,能做什么,如何用
  10. c语言下的dns解析