css命名规范(推荐BEM思想,非常好的规范,是由Yandex团队提出的一种前端命名方法论)

BEM由3部分组成:

  • B ——— block(块)
  • E ——— element(元素)
  • M ——— modifier(修饰符)

命名约定的模式如下:

  <div class="block block--modifier"><div class="block__element"></div></div>
复制代码
  .block {}.block--modifier {}.block__element {}
复制代码

这里的 block 就相当于一个模块,可以看作是命名空间,modifier 是 block 的修饰符(使用两个中划线连接), element 是 block 下面的子元素(使用两个下划线连接)。

例1:下面的代码是定义了一个简单的头部导航,需求如下: 高亮显示当前菜单文字

  <header class="header"><nav class="nav"><a class="active" href="/" title="首页">首页</a><a href="/product.html" title="产品中心">产品中心</a></nav></header>
复制代码
  .header .nav .active {color: blue;}
复制代码

如果按平时去写,可能会这样定义,这样写就有两点不好:

  1. 如果在写后面的代码的时候也用到了 active 这个类,那可能导致样式覆盖或者冲突
  2. 在定义样式的时候多层嵌套会额外增加元素查找的性能开销,虽然多层嵌套无法避免,但是能少则少

如果按照 BEM 规范去命名,则是这样:

  <header class="header"><nav class="header__nav"><a class="header__nav__a--active" href="/" title="首页">首页</a><a href="/product.html" title="产品中心">产品中心</a></nav></header>
复制代码
  .header__nav__a--active {color: blue;}
复制代码

这样一来不仅成功避免了上面的两个问题,另一方面也增加了代码的可读性,让所以元素之间的关系变得更加紧密,如果别人熟悉 BEM 规范,那么就能很轻易的知道这段代码是什么意思,在团队协作中也能提高开发效率。

例2:利用这个规范我们也可以定义自己css公共样式:

  // 公共按钮样式.btn { ... } .btn--lg { ... }.btn--sm { ... }.btn--xs { ... }.btn--round { ... }.btn--disabled { ... }.btn--primary { ... }.btn--success { ... }.btn--warning { ... }// 如果某个模块下的按钮和上面的通用按钮样式不一样,则可以继续增加样式定义// 分享按钮样式.share-btn { ... }.share-btn--lg { ... }.share-btn--sm { ... }.share-btn--xs { ... }// 公共标题样式.tit { ... }.tit--h1 { ... }  // 一级标题.tit--h2 { ... }  // 二级标题.tit--h3 { ... }  // 三级标题// 全局主题样式.global-theme--white { ... }.global-theme--black { ... }.global-theme--christ { ... }// ...
复制代码

这样的命名方式不仅看起来清爽,而且实用,方便维护。

当然也并不是所有的样式都适合用这种方式命名

比如:

  1. 样式重置(reset.css)
  2. 全局通用的的样式,比如:
  .center { text-align: center; }.right { float: right; }.left { float: left; }// ...
复制代码

这一类样式并不属于某一个模块,也没有需要修饰的地方,就是单纯的面向属性的命名。 所以在项目中还需要结合真实场景,相互结合使用。

BEM 规范可以说一种高效、强大的命名约定,虽然看起来会很长,但是压缩之后的代码的体积会小很多,同时也可以尽量精简css的命名来优化。

高效的css命名约定相关推荐

  1. 高效整洁CSS代码原则

    CSS学起来并不难,但在大型项目中,就变得难以管理,特别是不同的人在CSS书写风格上稍有不同,团队上就更加难以沟通,为此总结了一些如何实现高效整洁的CSS代码原则: 1. 使用Reset但并非全局Re ...

  2. [css] 如何写高效的CSS?

    [css] 如何写高效的CSS? 唔,自动补全.预编译这些辅助手段确实能提升一定的效率, 但我觉得真正能提升效率的是,不看预览就敢上手的理论知识. 见过太多加几行就要预览下效果的开发了,哪怕给他双屏其 ...

  3. 精简高效的CSS命名准则/方法

    2019独角兽企业重金招聘Python工程师标准>>> 一."无"的哲学 佛家讲究"因果报应",有果必有应.此段看似与主题没有血缘关系,实际讲 ...

  4. 精简高效的CSS命名准则和方法

    一."无"的哲学 佛家讲究"因果报应",有果必有应.此段看似与主题没有血缘关系,实际讲的是"因". 我个人比较喜欢老子的道家思想,并喜欢以其 ...

  5. [css] 【转载】 精简高效的CSS命名准则/方法

    原文链接:http://www.zhangxinxu.com/wordpress/2010/09/%E7%B2%BE%E7%AE%80%E9%AB%98%E6%95%88%E7%9A%84css%E5 ...

  6. 高效的CSS(2008年7月4日更新)

    本文将介绍 Mozilla UI 在用的一些 CSS 优化规则.第一部分是关于 Mozilla 样式系统如何分类选择器的一般讨论,在理解了这些的基础上,第二部分则罗列了 Mozilla 样式系统书写 ...

  7. 高效整洁CSS代码原则 (下)

    2019独角兽企业重金招聘Python工程师标准>>> 6. 适当的代码注释 代码注释可以让别人更容易读懂你的代码,且合理的组织代码注释,可使得结构更加清晰.你可以选择做的样式表的开 ...

  8. 高效的CSS代码(1)

    --阅读笔记,欢迎纠错 平时写CSS时常用的两个CSS文档(小杂感觉用的蛮喜欢,也是看了些书,尝试使用效果不错) /************CSS reset *********/ /******** ...

  9. css命名_CSS命名约定将节省您的调试时间

    css命名 I have heard lots of developers say they hate CSS. In my experience, this comes as a result of ...

最新文章

  1. python什么时候要缩进_不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)...
  2. js便利json 数组的方法
  3. 探索Julia(part2)--关于IDE
  4. 第三次学JAVA再学不好就吃翔(part25)--成员变量赋值
  5. 面向 Web 前端的原生语言总结手册
  6. JavaScript实现继承机制(3)——通过原型链(prototype chaining)方式
  7. 信息: 开始协议处理句柄[http-nio-8080]_你必须要知道的HTTP协议原理
  8. jenkins乱码解决问题
  9. python模块之codecs: 自然语言编码转换
  10. Ubuntu安装Chromium
  11. 274. H-Index
  12. 《葵花宝典:WPF自学手册》三大网点书评集萃
  13. STM32开发环境搭建
  14. 使用云打码识别验证码
  15. Java微服务和分布式区别
  16. HGAME2022 网络攻防大赛
  17. 不要老是盯着你的对手,要开始盯紧你的用户啦
  18. 【2023王道数据结构】【树与二叉树】通过C++实现中序遍历的非递归算法(手动入出栈)C、C++完整实现(可直接运行
  19. 《2023中国企业数智化转型升级服务全景图/产业图谱1.0版》重磅发布
  20. python爬虫入门教程04:招聘信息爬取

热门文章

  1. vue项目实现详情页后退缓存之前的数据
  2. 暖心社区(2018-07-17)
  3. 微信小程序之 ----API接口
  4. python globle用法
  5. Winform 中 dataGridView 导出到Excel中的方法总结
  6. Web.xml配置详解之context-param (加载spring的xml,然后初始化bean看的)
  7. cognos report上钻下钻报表处理方法(2)
  8. MySQL新建用户,授权,删去用户,修改密码操作
  9. LeetCode-9.回文数(大括号+双目运算符使用)
  10. oracle otl,使用OTL调用Oracle的存储函数