一、什么是BEM?

  BEM代表块(Block),元素(Element),修饰符(Modifier)。无论是什么网站页面,都可以拆解成这三部分。

二、带你认识网页

  我们来看一下qq的官网,它可以由三个块组成:logo,导航nav和页面主题mian三个模块构成,如果再细分一下呢?logo是由图片和文字两个元素组成,导航由三个元素组成,页面主题中包含图片,文字和按钮三个元素,

如果把一个块看作是一个数组的话,那么元素就是数组中的每一项。

  什么是修饰符呢?你可以看作是元素的属性,或者是他的形态、状态,比如导航中的三个元素有的长,有的短,页面主体文字有的大,有的小

三、BEM命名如何书写

  BEM给我们的规定是块和元素之间用 — 连接,元素和修饰符之间用 _  连接。例如:我们要设置表格某一行的背景颜色为红色,我们可以如下命名

<div class="table-row_red"></div>

四、实战篇

  下面,我们来用bem的命名规范来写一下qq的官网

  <header>
<div class="logo">
<img class="logo-img" src="./logo.png" alt="">
<span class="logo-words_big">QQ·</span>
<span class="logo-word_small">PC版</span>
</div>
<ul class="nav">
<li class="nav-item">QQ官网首页</li>
<li class="nav-item">申请QQ</li>
<li class="nav-item">当前在线用户:2559393943</li>
</ul>
</header>
<div class="main">
<img class="main-img" src="./img.png" alt="" >
<div class="main-words_small">QQ PC版9.0.8</div>
<div class="main-words_big">从新出发·趣无止境</div>
<button class="mian-button_blue">立即下载</button>
</div>

是不是清晰了很多,即使是换作另一个人修改这个页面也是一眼就能找到的。这样就大大减少了我们的维护成本。

五、拓展

  

  如果你还是不太理解什么是BEM,没关系,我们和人体结合一下,看看他们之间有什么相似之处。

  上面是一张小女孩的人体结构图,我们可以把她分成三个部门,也就是三个块(Block),分别是头(header),身体(body)和脚(footer),我们单看头部,里边有很多个元素(Element)组成,比如头发(hair)、眼睛(eye)、耳朵(ear)、牙齿(tooth)等等,

身体里呢?包含胳膊(arm)、手指(finger)等元素构成,脚部由脚(foot)和脚趾(toe)组成。小女孩的头发是棕色的(brown),好了,我们可以用BEM规范来命名一下小女孩的结构了

    <div class="header">
<div class="header-hair_brown"></div>
<div class="header-eye"></div>
<div class="header-ear">
<div class="header-ear_left"></div>
<div class="header-ear_right"></div>
</div>
.......
</div>
<div class="body">
<div class="body-arm">
<div class="body-arm_left"></div>
<div class="body-arm_right"></div>
</div>
<div class="finger"></div>
.......
</div>
<div class="footer">
<div class="footer-foot"></div>
<div class="footer-toe"></div>
</div>

六、结束语

  BEM是一个非常有用,强大,简单的命名约定,以至于让你的前端代码更容易阅读和理解,更容易协作,更容易控制,更加健壮和明确而且更加严密。它对前端开发者都是一个巨有价值的工具。

更好用的css命名方式——BEM命名的更多相关文章

  1. CSS命名方式=》BEM

    时间:2016-11-04 20:04:53 原文地址:https://github.com/zhongxia245/blog/issues/48 一.背景 挺早就听说过BEM了,也大概的知道怎么用, ...

  2. 问答:怎样规划CSS 中 的命名方式 怎样看待 CSS 中 BEM 的命名方式?

    好多盆友 非常纠结 css命名规则 怎么弄,还没起步就被绊住了.那么今天蝈蝈就针对这个问题来讨论一下 没什么技术 含量.但却对效率开发至关重要的 "问题". 下文是一些知乎大神的个 ...

  3. CSS BEM 命名方式

    简介 简易 css 命名方式,减小命名冲突,使得 css 更有组织感和识别感.但如今写 react 项目大多可以忽略对 css 的命名约束了. 官网介绍:http://getbem.com/intro ...

  4. CSS命名规范——BEM思想(非常赞的规范)

    人们问我最多的问题之一是在CSS类名中“--”和“__”是什么意思?它们的出现是源于BEM和Nicolas Gallagher... BEM的意思就是块(block).元素(element).修饰符( ...

  5. CSS BEM 命名规范简介

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

  6. 前端css命名规范----BEM

    一.什么是BEM BEM就是块(block).元素(element).修饰符(modifier),是由Yandex团队提出的一种前端命名方法论.这种巧妙的命名方法可以使css类对其他开发者来说更加透明 ...

  7. 项目复习期总结3:CSS引入方式,凝视,命名规范,背景,行高,文本属性

    文件夹: 1.CSS凝视的书写 怎么写?优点? 2.CSS引入方式  各种的优缺点 3.选择器的写法与选择器的优先级 4.CSS命名规范 5.背景,行高 6.文本(text与font开头)等全部属性 ...

  8. CSS — BEM 命名规范

    推荐阅读: https://juejin.im/post/5b925e616fb9a05cdd2ce70d 1 什么是 BEM 命名规范 Bem 是块(block).元素(element).修饰符(m ...

  9. css 命名规范 BEM

    在项目的开发过程当中, 我们往往因为日益复杂的css代码而感到力不从心. 如何合理的组织css代码成为了我们前端开发过程中必须考虑到的环节. 在读element源代码的时候, 了解到了BEM的命名风格 ...

随机推荐

  1. Jquery浅克隆与深克隆

    Jquery浅克隆与深克隆 JavaScript部分 $("div").on('click', function() {//执行操作}) //clone处理一 $("di ...

  2. springboot~为Money类型添加最大值和最小值的注解校验

    在spring框架里,为我们集成了很多校验注解,直接在字段上添加对应的注解即可,这些注解基本都是简单保留类型的,即int,long,float,double,String等,而如果你自己封装了新的类, ...

  3. 用户注册登录系统 V2.0

    # 准备空列表 users = [] # 准备当前在线用户 online_user = {} while True: # 打印系统提示 print("欢迎使用 用户注册登录系统V2.0&qu ...

  4. webpack bug及解决方案

    1.webpack打包后z-index失效 解决方案:z-index设置成行内样式,例如:root.style.cssText = 'z-index:100000 !important;';

  5. PAT1127:ZigZagging on a Tree

    1127. ZigZagging on a Tree (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...

  6. TCP的作用

    1. 首先,TCP提供客户与服务器之间的连接.TCP客户先与某个给定服务器建立一个连接,然后通过该连接与服务器交换数据,最后终止该连接. 2. 其次,TCP提供了可靠性.超时重传.当TCP向另一端发送 ...

  7. mysql管理工具navicat的快捷键

    1. ctrl + q  或者 ctrl+n: 打开新查询窗口 2. ctrl + r: 运行当前窗口内的所有语句 3. ctrl + shit + r: 只运行选中的语句 4. ctrl + w: ...

  8. Kali Linux安装VMWare Tools

    操作环境: 虚拟机操作系统: Kali Linux 2017.2 虚拟化软件: VMWare workstation 14 pro 加载光盘 在VMWare上依次点击"虚拟机->安装V ...

  9. Spring Cloud实践:降级、限流、滚动、灰度、AB、金丝雀的实现思路

    端口:8888,方便起见直接读取配置文件,生产环境可以读取git.application-dev.properties为全局配置.先启动配置中心,所有服务的配置(包括注册中心的地址)均从配置中心读取. ...

  10. 软件配置管理及SVN的使用

    一.配置管理   1. 管理整个软件生命周期中的配置项    配置项:软件生命周期中产出的各种输出成果,如需求文档.设计文档.代码.测试相关文档   2.管理配置项的变化(核心)   3.使用配置管理 ...