回想一下在你的前端生涯中是否遇到过如下问题
1.在写css的时候常常会在命名class时绞尽脑汁
2.在团队多人开发中出现css命名冲突
3.在进行组件化开发时如何规范书写csscss
BEM是Yandex团队提出的一种css的命名方式,经过这种命名方式能够很好地解决上面遇到的问题,提升css的开发效率和可读性html
B: 表示块,能够抽象成一个组件前端
E: 表示元素,组件下的一个元素,多个元素造成一个组件设计模式
M:表示修饰符,能够用来表示元素的状态,好比激活状态,颜色,大小ecmascript
BEM这货究竟张啥样呢,颜值高不高,请看下面的代码组件化
.block {} .block__element {} .block__element--modifier {}
看完后你的心里会不会在想,卧槽,这货竟然这么丑,名字还这么长,丑拒...spa
__主要用来表示块(B)和元素(E)间的链接设计
--用来表示块或者元素与状态的链接code
好比咱们要作写一个button的组件,能够这么来component
/* 有一个叫button的组件 */ .button { dispaly: inline-block; pading: 10px; } /* btn组件下面有一个显示图标的元素 */ .button__icont { font-size: 12px; } /* btn组件有好多颜色能够选择 */ .button--primary { background: blue; } .button--success { background: green; } .button--warning { background: red; }
<div class="button button--primary"> <span class="button__text">蓝色按钮</span> </div> <div class="button button--success"> <span class="button__text">绿色按钮</span> </div> <div class="button button--warning"> <span class="button__text">红色按钮</span> </div>
<template> <div class="button" :class="[type ? 'button--primary' : '']"> <i class="button__icon"></i> <span class="button__text"> {{ text }} </span> </div> </template> <style lang="stylus" rel="stylesheet/stylus" scoped> .button background: #dedede &__icon font-size: 12px &__text color: #fff &--primary background: blue; &--success background: green </style> <script type="text/ecmascript-6"> export default { props: { type: { type: String }, text: { type: String } }, data () { return {} }, components: {} } </script>