理解BEM的命名方式

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值