美文网首页
BEM命名法

BEM命名法

作者: 舞月奇影 | 来源:发表于2019-05-12 03:12 被阅读0次

简述

试想在一个html页面中引入各种外部css样式文件,如果外部的样式的命名不能确定,那么就不能保证该html页面内样式没有命名冲突。 而对于一个UI组件库,我们可以通过css命名规范来统一控制样式,来解决上面这个问题。

例如:
将css的一个职责命名为 .block{} ,而其子职责可以表示为 .block1-block2{}
若属于同一职责里的功能,则可命名为 .block__element{}
若是该选择器的功能有不同形态,则可命名为 .block--modifier{}

Element UI示例

.el-input,
.el-input__inner {  
    cursor: pointer;
}
.el-input.is-focus .el-input__inner {  
    border-color: $--input-focus-border;
}
.el-input__icon {  
    transition: none;
}

&.el-pagination--small {  
    .btn-prev,  
    .btn-next,  
    .el-pager li {    
        margin: 0 3px;   
        min-width: 22px;  
    }
}

element-ui对BEM命名法用SCSS对上述的语法进行了封装。并且将SCSS统一放在了./packages/theme-chalk文件夹下(放在一起是为了将样式提供给用户修改并打包,即使这样做会造成编写样式代码的不便)

主要源码如下:

// config.scss
$namespace: 'el';
$element-separator: '__';
$modifier-separator: '--';
$state-prefix: 'is-';

// mixins.scss
@mixin b($block) {  
  $B: $namespace+'-'+$block !global;
  .#{$B} {  
    @content;
  }
}
@mixin e($element) {  
    ...
}  
@mixin m($modifier) {
    ...
}

@mixin when($state) {
    ...
}

@mixin pseudo($pseudo) {
    ...
}

// alert.scss
@include b(alert) {
    ...
}

采用封装好的BEM命名方法,其中设置了 namespace和以文件名作为块名的方法使冲突发生的概率大大减小,并将该混合样式编译到文档根部(比如我们遇见过需要覆盖一个库的样式,直接将对应的类名覆盖...)。

相关文章

  • 简单好用的CSS命名规范

    CSS命名规范 BEM命名法 BEM(Block, Element, Modifier)是由Yandex团队提出的...

  • SCSS 基础语法

    1. 选择器扩展 1. BEM 命名法(CSS 命名) BEM 全称为 Block Element Modifi...

  • BEM命名法

    简述 试想在一个html页面中引入各种外部css样式文件,如果外部的样式的命名不能确定,那么就不能保证该html页...

  • BEM 命名法

    【前言】BEM 是一个简单又非常有用的命名约定。让前端代码更容易阅读和理解,更容易协作,更容易控制,更加健壮和明确...

  • SCSS初探-2

    SCSS选择器扩展 了解BEM 命名法 Bem 是块(Block)、元素(Element)、修饰符(Modifie...

  • Sass 基础用法(下)

    BEM命名法 Block Element Modifier Block: 主要名字 -> user-card。 E...

  • BEM CSS命名法

    BEM是Block(块) Element(元素) Modifier(修饰器)的简称。 一个独立的(语义上或视觉上)...

  • 【译】前端BEM命名方法论之二:BEM中的重要概念

    【译】前端BEM命名方法论之一:BEM 官方简介文档【译】前端BEM命名方法论之三:命名惯例 重要概念 Block...

  • 【译】前端BEM命名方法论之三:命名惯例

    【译】前端BEM命名方法论之一:BEM 官方简介文档【译】前端BEM命名方法论之二:BEM中的重要概念 使用 BE...

  • 【译】前端BEM命名方法论之一:BEM 官方简介

    【译】前端BEM命名方法论之二:BEM中的重要概念【译】前端BEM命名方法论之三:命名惯例 Yandex 发明 B...

网友评论

      本文标题:BEM命名法

      本文链接:https://www.haomeiwen.com/subject/kfsqaqtx.html