BEM 中文翻译
BEM
原文请看 getBEM
Introduction(介绍)
Block
独立实体,独立的意义
Examples:header, container, menu, checkbox, input
Element
block的一部分,没有独立的意义。语意上和block有关系
Examples:menu item, list item, checkbox caption, header title
Modifier
block或element上的flag。使用他来改变外观或行为
Examples:disabled, highlighted, checked, fixed, size big, color yellow
实例
页面上一个特定的元素在BEM中的实现。
一般情况下我们有一个正常的按钮,还有两个不同的状态。因为我们使用了BEM的风格块的类选择器,我们可以使用任何标签来实现(button,a,div)。命名规则告诉我们使用 block--modifier-value
语法
HTML
<button class="button">
Normal button
</button>
<button class="button button--state-success">
Success button
</button>
<button class="button button--state-danger">
Danger button
</button>
CSS
.button {
display: inline-block;
border-radius: 3px;
padding: 7px 12px;
border: 1px solid #D5D5D5;
background-image: linear-gradient(#EEE, #DDD);
font: 700 13px/18px Helvetica, arial;
}
.button--state-success {
color: #FFF;
background: #569E3D linear-gradient(#79D858, #569E3D) repeat-x;
border-color: #4A993E;
}
.button--state-danger {
color: #900;
}
优点
模块化
block样式从来不依赖页面上的其他元素。你还可以将blocks从已经完成的项目转移到新的项目
重用性
以不同的方式组成独立的blocks,减少可维护css代码量。通过一套风格,你可以使用你的超级牛叉效果构建一个库
结构
BEM方法为你的css代码提供了一个简单易懂的结构
Naming(命名)
正确的命名可以提高开发效率、调试和实现旧代码中的功能。遗憾的是,大多数css没有任何结构和命名规范。这导致时间长了css代码不可维护。
BEM方法确保每个网站的开发人员使用单个代码库和同一种语言。使用正确的命名将会为你的网站设计改变做好准备
Block
封装一个独立的实体,他具有意义。虽然Block可以相互嵌套,但是在语意上让他们保持相互的独立,没有优先级或层次结构。整体实体没有DOM表示(如controllers或models)也可以是Block
Naming
Block名称可以由字母、数字和破折号组成一个类,增加一个简短的前缀为命名空间:
.block
HTML
任何DOM节点如果接收一个类名他能成为一个Block。
<div class="block">...</div>
CSS
- 仅使用类名选择器
- 没有标签名或ID
- 不依赖页面上的其他Block/Elements
.block { color: #042; }
Element
Block的一部分,没有独立的意义。任何元素在语意上是绑在他的Block上
Naming
Elements名称可以由字母、数字、破折号和下划线。CSS类名由Block名称加两个下划线加Elements名:
.block__elem
HTML
在给定的Block内的任何DOM都可以成为一个Elements。所有Elements在语意上相等。
<div class="block">
...
<span class="block__elem"></span>
</div>
CSS
- 仅使用类名选择器
- 没有标签名或ID
- 不依赖页面上的其他Block/Elements
正确的
.block__elem { color: #042; }
错误的
.block .block__elem { color: #042; }
div.block__elem { color: #042; }
Modifier
在Block或Elements上的Flags,使用它们来改变外观、行为或状态。
Naming
Modifier名称可以由字母、数字、破折号和下划线。CSS类名由Block或Element的名称加上两个破折号。
.block--mod
或.block__elem--mod
和.block--color-black
与.block--color-red
Spaces in complicated modifiers are replaced by dash.HTML
Modifier是添加到你的Block/Elements类名中额外的扩展。只给Block/Elements他们的修饰添加Modifier,并且保持他们原来的类
正确的
<div class="block block--mod">...</div>
<div class="block block--size-big block--shadow-yes">...</div>
错误的
<div class="block--mod">...</div>
CSS
使用Modifier的类名选择:
.block--hidden { }
改变Elements基于一个块级Modifier:
.block--mod .block__elem { }
Elements Modifier
.block__elem--mod { }
Example
假设你有一个From Block与modifierstheme: "xmas
和simple: true
和elementsinput
、submit
和元素submit
他具有自己的修饰符disabled: true
没填写表单时的样式。
HTML
<form class="form form--theme-xmas form--simple">
<input class="form__input" type="text" />
<input
class="form__submit form__submit--disabled"
type="submit" />
</form>
CSS
.form { }
.form--theme-xmas { }
.form--simple { }
.form__input { }
.form__submit { }
.form__submit--disabled { }
扩展阅读:
- MindBEMding – getting your head ’round BEM syntax 让你的脑壳充满BEM语法
BEM 中文翻译的更多相关文章
- 《Entity Framework 6 Recipes》中文翻译系列 目录篇 -持续更新
为了方便大家的阅读和学习,也是响应网友的建议,在这里为这个系列做一个目录.在目录开始这前,我先来回答之前遇到的几个问题. 1.为什么要学习EF? 这个问题很简单,项目需要.这不像学校,没人强迫你学习! ...
- Spark官方文档 - 中文翻译
Spark官方文档 - 中文翻译 Spark版本:1.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linki ...
- PS网页设计教程——30个优秀的PS网页设计教程的中文翻译教程
PS网页设计教程--30个优秀的PS网页设计教程的中文翻译教程 作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,"熟读唐诗三百首,不会作 ...
- Spark SQL 官方文档-中文翻译
Spark SQL 官方文档-中文翻译 Spark版本:Spark 1.5.2 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 Data ...
- Learning Spark: Lightning-Fast Big Data Analysis 中文翻译
Learning Spark: Lightning-Fast Big Data Analysis 中文翻译行为纯属个人对于Spark的兴趣,仅供学习. 如果我的翻译行为侵犯您的版权,请您告知,我将停止 ...
- 苹果App Store审核指南中文翻译(2014.9.1更新)
转:http://www.cocoachina.com/appstore/20140901/9500.html CocoaChina对<苹果应用商店审核指南>中文翻译最近一次更新时间为20 ...
- (转)PK系列之六:该不该读中文翻译的专业书
本文引用地址:http://blog.sciencenet.cn/blog-2999994-956596.html 此文来自科学网王立新博客,转载请注明出处. 刘新建:这几天在读一本译著:投入产出分析 ...
- Umbraco官方技术文档 中文翻译
Umbraco 官方技术文档中文翻译 http://blog.csdn.net/u014183619/article/details/51919973 http://www.cnblogs.com/m ...
- 《Introduction to Tornado》中文翻译计划——第五章:异步Web服务
http://www.pythoner.com/294.html 本文为<Introduction to Tornado>中文翻译,将在https://github.com/alioth3 ...
随机推荐
- 【BZOJ3993】星际战争(网络流,二分答案)
[BZOJ3993]星际战争(网络流,二分答案) 题面 Description 3333年,在银河系的某星球上,X军团和Y军团正在激烈地作战.在战斗的某一阶段,Y军团一共派遣了N个巨型机器人进攻X军团 ...
- Luogu3242:[HNOI2015]接水果
题面 Luogu3242 Sol 考虑每个盘子怎样才能接到一个水果 分两种情况: 盘子的\(x, y\)在一条链上,那么水果的两点就要在这条链之外 不在的话,水果的两点就分别在盘子的两点的子树中 记录 ...
- redis笔记总结之redis数据类型及常用命令
三.常用命令 3.1 字符串类型(string) 字符串类型是Redis中最基本的数据类型,一个字符串类型的键允许存储的数据的最大容量为512MB. 3.1.1 赋值与取值: SET key valu ...
- [转]SVN使用log,list,cat,diff查看所有及特定文件版本信息
[转]SVN使用log,list,cat,diff查看所有及特定文件版本信息 http://onefishum.blog.163.com/blog/static/5184730520113153402 ...
- asp.net core 四 IOC&DI Autofac
其实关于IOC,DI已经有了很多的文章,但是自己在使用中还是有很多困惑,而且相信自己使用下,印象还是会比较深刻的 关于这段时间一直在学习.net core,但是这篇文章是比较重要的,也是我自己觉得学习 ...
- 14.C++-二阶构造模式、友元(详解)
首先回顾以前所学的构造函数 类的构造函数用于对象的初始化 构造函数与类同名并且没有返回值 构造函数在定义时被自动调用 由于构造函数没有返回值不能判断执行结果,所以不能保证初始化对象能否成功 比如: c ...
- loadrunner 录制中文出现乱码的解决办法
- 深度学习——优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)
在机器学习.深度学习中使用的优化算法除了常见的梯度下降,还有 Adadelta,Adagrad,RMSProp 等几种优化器,都是什么呢,又该怎么选择呢? 在 Sebastian Ruder 的这篇论 ...
- svn从Windows服务器上迁移到Linux上
svn从Windows服务器迁移到Linux服务器 author:headsen chen 2017-10-16 16:50:32 个人原创,转载请注明.否则依法追究法律责任 ...
- Mycat 常用管理命令说明
Mycat 提供了类似数据库的管理监控方式,可以通过 MySQL 命令行登陆管理端口 9066 执行相应的 SQL 语句进行管理,可以可以通过 JDBC 的方式进行远程连接管理,使用 MySQL 命令 ...