编写可维护性的CSS

作者: 7091a52ac9e5 | 来源:发表于2016-05-11 23:22 被阅读355次

语义化

为什么重要?

  1. 易理解
  2. 现在的网站是响应式的,语义化而非形容化功能化能让调整更清楚
  3. 易查找
  4. 不用担心更新困难
  5. 帮助自动功能测试
  6. 易重用

代码重用

不必重用?

  1. 不同情况样式改变

ID

不要使用ID来确定样式

权重太高,不利于覆盖修改;
ID的使用情况应该为提供额外的功能,比如说label的for,以及页面内定位。

惯例

/* Square brackets denote optional parts */
.<moduleName>[-<componentName>][-<state>] {}

命名实例

/* module container/root */
.searchResults {}

/* components of a module */
.searchResults-heading {}

.searchResults-item {}

/* state: such as AJAX loading */
.searchResults-isLoading {}

备注:这一块是我收获最大的地方,这样命名确实易于惯例,作者也给出了很多原因,详情可以看看原文。

总体-局部-状态

模块化(Modules)

什么是模块?

模块是一个明显独立的单元,可以跟其它模块一起组成更加复杂的结构。这就有点像一个屋子里面的电视机,沙发等,如果你取走其中一个,另外一个还是可以继续好好工作的。

在一个网站中可以看做模块的有:header,footer,搜索栏,登录框,购物车,文章,产品列表,导航栏,主页宣传等等。
模块由元件(components)组成,缺少元件,模块就不完整,比如说一个logo模块由图片,链接组成,这些就是logo模块的元件。
元件和模块有时候是不好区分的,比如说一个header里面可能包含一个logo,这个logo在这里是header的元件,但是本身又是一个模块

一个模块的实例-简化购物车

<div class="basket">
    <h2 class="basket-title">Basket</h2>
    <div class="basket-item">
        <h3 class="basket-productTitle">Product title</h3>
        <form>
            <input type="submit" class="basket-removeButton" value="Remove">
        </form>
    </div>
</div>
/* module container */
.basket {}

/* components */
.basket-title {}
.basket-item {}
.basket-productTitle {}
.basket-removeButton {}

注意这里类的命名。

宁愿复制也不要想着重用了。

状态(state)

当与用户有交互的时候,我们需要不同的样式来表现不同的状态,这些状态包括:showing, hiding, active, inactive, disabled, loading, loaded 等等,为了完成这个,需要额外的类属性。

状态应该与组件相关

.myModule {}

.myModule-isDisabled {}
.myModule-isActive {}
.myModule-hasProducts {}
.myModule-isHidden {}
.myModule-isLoading {}

<div class="myModule myModule-isDisabled">
    <p class="myModule-title myModule-title-isDisabled"></p>
</div>

修饰语(modifiers)

修饰语与状态类似,在对同一模块应用在不同地方,但是又有个别不同时特别有效。这一点在代码重用的时候特别有效。
例子:除了背景图片不同,其余的都相同

<!-- when viewing the "boys" category page -->
<div class="categoryHeader categoryHeader-boys">

<!-- when viewing the "girls" category page -->
<div class="categoryHeader categoryHeader-girls">

.categoryHeader {
    padding-top: 50px;
    padding-bottom: 50px;
    /* etc */
}

.categoryHeader-boys {
    background-image: url(/path/to/boys.jpg);
}

.categoryHeader-girls {
    background-image: url(/path/to/girls.jpg);
}

版本

推荐创造不同的版本,不要混用,单独更改。

编写可维护性的CSS

相关文章

  • 编写可维护性的CSS

    语义化 为什么重要? 易理解 现在的网站是响应式的,语义化而非形容化功能化能让调整更清楚 易查找 不用担心更新困难...

  • 编写可维护性CSS之二,语义化

    这是一个系列,谈论所有有关编写可维护性CSS。翻译自:MaintainableCSS完整版:maintainabl...

  • 编写可维护性CSS之一,前言

    这是一个系列,谈论所有有关编写可维护性CSS。翻译自:MaintainableCSS完整版:maintainabl...

  • 无标题文章

    # CSS 编码规范 此为前端开发团队遵循和约定的 CSS 编码规范,意在提高代码的规范性和可维护性。 ## 代码...

  • 如何提高CSS的可维护性

    为了排版的正确,请查看我的原文:如何提高CSS的可维护性为CSS正确的命名可以提高代码的可读性,便于后期查找修改。...

  • day2 前端css(样式)(2022-02-22)

    css代码编写方式 嵌入编写 将css代码写在html代码文件中 必须将css代码写在style标记中(style...

  • CSS代码-BEM命名规范

    背景 在为大型网站写页面的css时候,经常会出现如下的css编写效果。 这样的css编写效果就是传统的命名空间的方...

  • 教你在Vue项目中使用React超火的CSS-in-JS库: s

    什么是CSS-in-JS? 顾名思义,CSS-in-JS就是可以使用JS来编写CSS样式,那么为什么要用JS来编写...

  • module_function & extend sel

    更多文章请访问独立博客 https://huangwenwei.com 在阅读开源的 Ruby 代码和编写可维护性...

  • 自定义PostCSS插件实现主题切换

    对于主题切换这一话题,社区上介绍的方案往往通过CSS 变量(CSS 自定义属性)来实现,但其自动化程度以及可维护性...

网友评论

    本文标题:编写可维护性的CSS

    本文链接:https://www.haomeiwen.com/subject/yuiurttx.html