前端规范与思考(二)———css规范

本文属于原创文章,转载请注明--来自桃源小盼的博客
前言 由于团队使用了vue框架,所以有些规范是在vue规则下制定的。
命名规则参考上一篇文章前端规范与思考(一)———命名规范。
标准规范 1.组件中的style标签使用scoped属性,如果有全局生效的样式,新增一个无scoped属性的style标签


2.选择器命名使用串行命名法
// bad .activityTitle { }.activity_title { }// good .activity-title { }

为什么不采用复杂的BEM方式? 因为现在我们有了更好的方式:css模块化。vue的scoped是其中的一种实现方式,我们不再需要BEM中的模块前缀,来隔离不同的模块。
3.禁止选择器嵌套
特殊情况:覆盖第三方库的样式时。
如果选择器嵌套,那么当html结构改变时,css样式也要改变,增加维护成本。
// bad.activity .item { }// good.activity-item { }

4.类名组合单词长度不要超过5级
// bad .activity-box-item-ul-li-a { }// good .activity-item-li-a { }

5.禁止使用标签选择器
标签选择器会同时命中多个标签,修改单条css样式会影响多个地方。
// bad
  • li { }// good
  • .activity-item { }

    6.禁止使用!important
    【前端规范与思考(二)———css规范】一旦样式使用了important,如果需要被覆盖时,难以被覆盖。
    7.禁止使用id选择器
    id选择器具有唯一性,并且权重过高。
    8.禁止使用*号选择器
    理由:影响范围太大,造成的结果很难预料。
    9.z-index不要设置过大, 一般的浮层元素1-9,弹窗之类的10-99
    特殊情况:覆盖第三方类库
    10. 块级元素默认width: 100%,不用声明
    经常会有小伙伴写出这个样式,只是为了提醒。
    推荐规范 1.盒子、容器命名
    .activity-box {} .activity-wrapper {} .activity-container {}

    2.图片命名
    .activity-img {}

    3.列表命名
    .activity-item {} .activity-li {}

    4..超链接a标签命名
    .activity-a {} .activity-link {}

    5.相关描述命名
    .activity-desc {}

    6.表单元素命名
    .activity-input {} .activity-radio {} .activity-checkbox {}

    7.交互状态命名
    激活状态类名:.active
    禁用状态类名:.disabled
  • .item.active { color: red; }

    8. 优先使用flex布局
    结语 其实对于一个团队来说,任何可能重复、经常会犯错的点、更好的写法。这一类的事情都可以去提炼成规范。
    对于css来说,制定团队的reset.css也是必不可少的一部分。
    任何别人的规范,都不是银弹,我们只能去探索最适合自己的css规范。
    参考资料
    • 《深入解析css》
    • 《css选择器世界》
    • 凹凸实验室

      推荐阅读