前端规范与思考(二)———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

    一旦样式使用了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规范)