bem什么意思_BEM规范你应该了解
作者的话
这几天一直在忙着公司网站标准版的前台页面模块化,大面积的书写css代码,然后发现规范不同意,命名不规范导致的问题确实会很严重,极大影响了开发效率,刚好今天又看到了这个关于css的bem规范,就想和大家分享一下关于bem的知识,直到现在,我才理解了之前用的一些ui库,类似于weui (微信的一套样式)、 zanui(有赞的一套样式)等,他们的命名才理解了,后面用起来估计更加顺手了。
BEM的含义
对于bem来历,我就不多介绍了,反正大家也不想看,直接跟大家解释什么是BEM吧。一般来说,像这种名称都是英文单词的缩写,是的没错,这也是。它是Block、Element、Modifier的缩写,中文意思是块、元素、修饰。
在某种程度上,BEM和OOP是相似的。它是一种用代码和一系列模式来描述现实情况的方法,它只考虑程序实体而无所谓使用什么编程语言。
在这里,我就只是对css这类的应用进行简单解释。
一个简单网站的构成
要想学习好css如何编写,首先需要对你面对的产品结构有个大致的了解,至少它的骨架结构你要非常清楚的。
我们先来看下一个网站大致的组成吧!
基本网站结构的组成
我们公司业务上网站和在上图中结构差不多,有Head,Main Layout和Foot块。Head由Logo,Search,Auth块和Menu组成。MainLayout包括一个Page Title和一个Text块。
网站分块
那名字的命名肯定有约定的好,不然项目经理只能说,那个部分给我大点,这个部分小点,或者说加个qq截张图....好麻烦呀!
加上特定的命名就不一样了,那就非常方便额
这样的话一个项目经理就可以这么说:
让Head再大点;
创建一个Head中不带Search的页面。
对于网站开发人员可以对重构开发人员说:
给Auth块来点动画,等等
真是一句话就可以搞定的,看来还是真的非常有必要了解下了。
Block(块)的含义
通过上面的图片大家也大致了解了块,其实类比积木,块就是组成的单位。
搜索表单块
Element (元素) 的含义
一个元素是块的一部分,具有某种功能。元素是依赖上下文的:它们只有处于他们应该属于的块的上下文中时才是有意义的。
例如一个输入域和一个按钮是Search块的中的元素。
元素
Modified (修饰) 的含义
块和元素构成了页面的内容。它们不仅仅是被呈现在一个页面上,它们的排列顺序也同样重要。
块(或元素)彼此之间可能遵循着某种顺序。
例如,新闻网站上的一个信息列表:
信息列表
或者说tab菜单项
tab菜单
一个header块
header块
块的独立性
其实我们使用规范也就是为了能更好复用一些代码,减少我们的代码量,那我们就需要保证一定的独立性
例如,你可能想要互换Logo和Auth块,或者把Menu放到Search块下面。
独立性
为了让这个过程更加简化,块必须是独立的。
一个独立的块可以放置在页面的任意位置 ,包括嵌套在其他块里。
为独立的CSS类命名
下面是一种可能的CSS类命名方案:
一个块的CSS类名就是这个块的名字(block name)。
一个元素的CSS类名是一个块名和一个元素名的组合,它们中间用一些符号隔开。
在一个元素的CSS类名中包含一个块名是必要的,这样可以让级联最小化。
我们在长名称中使用连字符分隔单词(例如,block-name),使用两个下划线来分隔块名和元素名(block-name__element-name)。
例如:
block-name--element-name
blockName-elementName
我们可以先多看看使用bem规范命名的css
在我的思想里,我就一直模仿,模仿别人写代码的风格,模仿别人命名的风格,反正在我还没有自己思想的之前,我就一直模仿,等模仿到非常像的时候,我想我应该就会形成我自己的思想了
该怎么命名呢!
对于模块来说,块就是用模块名,比如:搜索表单, search-form 这是一个块
对于模块内的元素,比如,搜索表单的输入框,search-form__input、search-form__button,用双下划线隔开
对于修饰,比如用weui-cell_primary一个下划线进行修饰,后面应该就是修饰的意思了。
欣赏一段weui的代码
对于上面的那段代码,就是weui-panel一个模块,里面有weui-panel__hd(header元素)、weui-panel__bd(body元素),
那个这个body元素中又有个weui-media-box模块、这个模块里面有个weui-cells模块,weui-cells,里面两个weui-cell模块
weui-cell里面可以放三个元素weui-cell__hd,weui-cell__bd,weui-cell__ft",还用weui-cell_access修饰了。
上面的效果就是:
weui效果
其实,说到学习,纸上谈太多,效果不会太好,了解了基本的概念,剩下就是多去实践,多去看,多去阅读别人的代码,至少我认为:只有学会了读代码,才能写出优秀的代码!。其实就跟写作文一样。
部分图片来源网络,如有侵权,请联系作者!
bem什么意思_BEM规范你应该了解相关推荐
- bem什么意思_BEM命名法
摘要 当你在编写css代码的时候,是否遇到这样的困扰: 不知道取什么class名? 修改某个组件的样式,担心影响了其他组件? 编写的组件样式如何复用?为了解决这些问题,聪明的程序猿发明了BEM命名法. ...
- bem什么意思_bem是什么意思_bem的翻译_音标_读音_用法_例句_爱词霸在线词典
全部 Methods Three different concentrations of the n - butanol extract of MOH ( BEM ) : 0.038 g · L ~ ...
- bem什么意思_bem
In a year or so, Bem coolly suggests, we may have to agree with the Queen. 本冷静地提出,一两年后,我们可能会被迫同意女王的观 ...
- bem什么意思_BEM的定义
特别声明:此篇文章由David根据<Block, Element, Modifier>进行翻译,整个译文带有我们自己的理解与思想,如果译得不好或不对之处还请同行朋友指点.如需转载此译文,需 ...
- bem什么意思_BEM思想之彻底弄清BEM语法
人们问我最多的问题之一是在CSS类名中"--"和"__"是什么意思?它们的出现是源于BEM和Nicolas Gallagher... BEM的意思就是块(blo ...
- bem什么意思_BEM是什么意思
1. This method has the advantages of both FEM and BEM, which can be seen in its engineering applicat ...
- bem什么意思_BEM是什么?
BEM的含义 1.BEM是业务事件管理(business event management)的缩写. BEM是能够让机器在业务流程出现问题时迅速做出反应,提醒人们重新回到正确轨道上的一种方法. 从Fo ...
- bem什么意思_BEM是什么意思中文翻译
音标:abbr.British Empire Meda不列颠帝国勋章 网络边界元:边界元法:边界单元法:边界元方法 网络释义 1 . 边界元 Time domain BEMfor wave propa ...
- Atitit.css 规范 bem 项目中 CSS 的组织和管理
Atitit.css 规范 bem 项目中 CSS 的组织和管理 1. 什么是BEM?1 1.1. 块(Block)2 1.2. 元素(Element)2 1.3. BEM树(和DOM树类似).3 ...
最新文章
- oracle600错误,oracle在导入数据时报600错误的解决方法
- 微信硬件平台智能路由行业解决方案
- 通告,消息,提醒 DB
- Java对象序列化详解
- @Test的作用以及Testcase和TestSuite的用法
- 训练测试数据大小不一致_三步学会训练狗狗不随地大小便
- python数值类型_Python数值类型
- 最大正方形(洛谷-P1387)
- 【FPGA】——UART串口通信
- 计算机网络实验报告3-tcp,计算机网络实验报告3-TCP.doc
- Node.js:Node模块简介
- windows C盘瘦身
- 早停法的应用(keras)
- android图片添加文字,android图片上添加文字
- 如何设置ddns动态域名服务实现外网访问
- 学习笔记——PWM脉宽调制信号的发生与控制
- CSS3边框图片效果
- C语言中时间相关函数总结
- antares任务调度系统预研
- docker适合初学者吗_简化了Docker:面向绝对初学者的动手指南
热门文章
- 防止按钮快速点击的方法
- c语言中math的作用,C语言math常用方法
- java学习day005+day006
- 修改jupyter notebook的默认主页(默认工作空间)
- AndroidKiller之APK 编译失败,无法继续下一步签名【BUG解决】【App反向解析】
- Linux --- vim 安装、支持python3的配置、插件自动补全YCM的安装配置及全过程错误总结...
- 目标检测论文解读复现之一:基于改进YOLOv5的整车原木数量检测方法——TWD-YOLOv5(代码已复现)
- ADI ADV7611BSWZ-RL 低功耗165 MHz HDMI接收器
- diary with u
- python写圣诞祝福语_有哪些高逼格的猪年春节祝福语?