用了这些css命名小技巧,我的代码优雅了不少!

CSS命名——BEM

BEM是什么

BEM是一种CSS命名规范。

BEM代表 “块(block),元素(element),修饰符(modifier)”。

在选择器中,由以下三种符号来表示扩展的关系:

  1. - 中划线 :仅作为连字符使用,表示某个块或者某个子元素的多单词之间的连接记号。 __ 双下划线:双下划线用来连接块和块的子元素 _ 单下划线:单下划线用来描述一个块或者块的子元素的一种状态`

使用BEM示例对比

Block

如下面的例子,li.item 是列表的一个子元素

  1. /* 常规写法和BEM写法相同 */ .list

元素(Element)

  1. /* 常规写法 */
  2. <ul class="list">
  3. <li class="item">Pricing</li>
  4. <li class="item">Contact</li> </ul>
  5. /* BEM写法 */
  6. <ul class="list">
  7. <li class="list__item">Pricing</li>
  8. <li class="list__item">Contact</li> </ul>`
  1. /* 常规写法 */ .list{} .list .item{}
  2. /* BEM写法 */ .list{} .list__item{}

修饰符(modifier)

一个“修饰符”可以理解为一个块的特定状态!

  1. /* 常规写法 */
  2. <ul class="list">
  3. <li class="item">Pricing</li>
  4. <li class="item">Contact</li> </ul>
  5. /* BEM写法 */
  6. <ul class="list">
  7. <li class="list__item-active">
  8. Pricing
  9. </li>
  10. <li class="list__item">Contact</li> </ul>
  1. /* 常规写法 */ .list{} .list .item{} .list .item.active{}
  2. /* BEM写法 */ .list{} .list__item{} .list__item_active{}

BEM 的好处

  • 摆脱特异性的困扰
  • 修复继承问题
  • 停止担心命名

css命名几大原则

短命名比长命名会更好

因为短命名缩短书写时间,也减小了css文件大小!例如这个例子:

  1. // 推荐 .some-intro{...}
  2. // 不推荐 .some-introduction{...}

组合命名比单命名会更好

  1. // 不建议 .header{...}
  2. //推荐 .cs-header{...}

面向属性的命名和面向语义的命名

面向属性的命名指选择器的命名是跟着具体的CSS样式走的,与项目、页面、模块统统没有关系。例如,比较经典的清除浮动类名.clearfix:

  1. .clearfix:after { content : ''; display: table; clear: both; }

面向语义的命名则是根据应用元素所处的上下文来命名的。例如:

  1. .header { background-color: #333; color: #fff; } .logo {font-size: 0; color : transparent;}

上述两种命名方式各有优缺点:

  1. 面向属性
  • 「优点」:在于CSS的重用率高,性能最佳,即插即用,方便快捷,开发也极为迅速,因为它省去了大量在 HTML 和CSS文件之间切换的时间。
  • 「缺点」:在于由于属性单一,其适用场景有限,另外因为使用方便,易被过度使用,从而带来更高的维护成本。
  1. 面向语义
  • 「优点」是应用场景广泛,可以实现非常精致的布局效果,扩展方便;
  • 「缺点」:在于代码啰唆,开发效率一般,因为所有HTML都需要命名,哪怕是一个10像素的间距。这就导致很多开发者要么选择直接使用标签选择器,要么就选择一个简单的类名,然后通过父子关系限定样式,结果带来了更糟糕的维护问题。

命名汇总推荐

状态

  1. 前一个 prev
  2. 后一个 next
  3. 当前的 current
  4. 显示的 show
  5. 隐藏的 hide
  6. 打开的 open
  7. 关闭的 close
  8. 选中的 selected
  9. 有效的 active
  10. 默认的 default
  11. 反转的 toggle
  12. 禁用的 disabled
  13. 危险的 danger
  14. 主要的 primary
  15. 成功的 success
  16. 提醒的 info
  17. 警告的 warning
  18. 出错的 error
  19. 大型的 lg
  20. 小型的 sm
  21. 超小的 xs

布局

  1. 文档 doc
  2. 头部 header(hd)
  3. 主体 body
  4. 尾部 footer(ft)
  5. 主栏 main
  6. 侧栏 side
  7. 容器 box/container

通用部件

  1. 列表 list
  2. 列表项 item
  3. 表格 table
  4. 表单 form
  5. 链接 link
  6. 标题 caption/heading/title
  7. 菜单 menu
  8. 集合 group
  9. bar
  10. 内容 content
  11. 结果 result

组件

  1. 按钮
  2. button(btn)
  3. 字体
  4. icon
  5. 下拉菜单
  6. dropdown
  7. 工具栏
  8. toolbar
  9. 分页
  10. page
  11. 缩略图
  12. thumbnail
  13. 警告框
  14. alert
  15. 进度条
  16. progress
  17. 导航条
  18. navbar
  19. 导航
  20. nav
  21. 子导航
  22. subnav
  23. 面包屑
  24. breadcrumb(crumb)
  25. 标签
  26. label
  27. 徽章
  28. badge
  29. 巨幕
  30. jumbotron
  31. 面板
  32. panel
  33. 洼地
  34. well
  35. 标签页
  36. tab
  37. 提示框
  38. tooltip
  39. 弹出框
  40. popover
  41. 轮播图
  42. carousel
  43. 手风琴
  44. collapse
  45. 定位浮标
  46. affix

语义化小部件

  1. 品牌
  2. brand
  3. 标志
  4. logo
  5. 额外部件
  6. addon
  7. 版权
  8. copyright
  9. 注册
  10. regist(reg)
  11. 登录
  12. login
  13. 搜索
  14. search
  15. 热点
  16. hot
  17. 帮助
  18. help
  19. 信息
  20. info
  21. 提示
  22. tips
  23. 开关
  24. toggle
  25. 新闻
  26. news
  27. 广告
  28. advertise(ad)
  29. 排行
  30. top
  31. 下载
  32. download

功能部件

  1. 左浮动 fl
  2. 右浮动 fr
  3. 清浮动 clear

命名网站推荐

codelf

参考文档:

1.张鑫旭的《css选择世界》

2.https://www.cnblogs.com/qianxiaox/p/13816077.html

本文转自 https://mp.weixin.qq.com/s/_65tXqfYkSm9wInPuyvK_w,如有侵权,请联系删除。
https://mp.weixin.qq.com/s/_65tXqfYkSm9wInPuyvK_w