美文网首页
CSS工程化

CSS工程化

作者: xiayujlu | 来源:发表于2017-01-03 18:33 被阅读243次

目的

  • 提供一致,合理的开发基础
  • 应对变化
  • 提升效率

CSS reset和normalize.css

  • CSS reset设置HTML标签的默认样式,使其在各个浏览器表现基本一致,让默认样式归零
  • normalize.css置HTML标签的默认样式,使其在各个浏览器表现基本一致保留默认样式。

CSS模块

  • 可复用的CSS代码段
  • 与模块在HTML中的位置无关
  • (一般)与使用的HTML标签无关

CSS模块原则

  • 面向对象(OOCSS)
    • 结构和皮肤的分离
      举个栗子: .btn(结构) .btn-info(皮肤) .btn-danger(皮肤)
    • 容器和内容的分离
  • 单一职责(SRP)
    • 尽可能的拆分成可独立复用的组件
    • 使用组合方式使用多个组件
    • 比如将布局和其他样式拆分
      举个栗子:
/* bad example */
.error-massage{
      display:block;
      padding:10px;
      border-top:1px solid #f00;
      border-bottom:1px solid #f00;
      background-color:#fee;
      color:#f00;
      font-weight:bold;
}
.success-massage{
      display:block;
      padding:10px;
      border-top:1px solid #f00;
      border-bottom:1px solid #f00;
      background-color:#efe;
      color:#0f0;
      font-weight:bold;
}
/* better example */
.box{
      display:block;
      padding:10px;
}
.massage{
      border-top:1px solid #f00;
      border-bottom:1px solid #f00;
      font-weight:bold;
}
.massage-error{
      background-color:#fee;
  color:#f00;
}
.massage-success{
      background-color:#efe;
      color:#0f0;
}
  • 开闭原则
    • 对扩展开发
    • 对修改封闭
      举个栗子:
.box{
      display:block;
      padding:10px;
}  
/* bad example */
.content .box{
      padding:20px;
}
/* better example */
.box-large{
      padding:20px;
}
  • DRY(Don't Repeat Yourself)
    举个栗子:
/* bad example */
selector{
      border-top:1px solid #eee;
      border-left:1px solid #eee;
      border-bottom:1px solid #eee;
}
/* better example */
selector{
      border:1px solid #eee;
      border-right:none;
}

命名Naming

  • 基于功能
    • 它是用来做什么的
    • .btn/.list/.form/.external-link
  • 基于内容
    • 元素里面放置什么内容
    • .news/.help/.user-info
  • 基于视觉
    • 看起来是什么样
    • .nowrap

命名原则

  • 优先使用基于功能的命名
    样式与功能无关
  • 中小型网站可以基于内容命名
  • 大型网站可以使用基于视觉命名
    不要使用太具体的样式

命名规范

BEM

  • Block
  • Element
  • Modifer
    举个栗子
<!-- Block(moudle/compuent) --> 
 <nav class="tabs">
 </nav>
<!-- Element --> 
      <a href="#" class="tabs_items">HTML</a>
      <a href="#" class="tabs_items">CSS</a>
      <a href="#" class="tabs_items">JavaScript</a>
<!-- Modifer(修饰) --> 
 <nav class="tabs tabs--stacked">
        <a href="#" class="tabs_items tabs_items--active">HTML</a>
 </nav>
  <!-- .block__element---modifer--> 
<nav class="tabs tabs--stacked">
      <a href="#" class="tabs_items tabs_items--active">HTML</a>
      <a href="#" class="tabs_items" class="tabs-items">CSS</a>
      <a href="#" class="tabs_items">JavaScript</a>
  </nav>

编写简洁易维护的CSS代码

CSS预处理器

  • less
  • Sass
  • Stylus
  • PostCSS

相关文章

  • 前端编码规范

    Vue项目规范 项目工程化,工程化的项目结构拥有多方面的好处,下文链接有详细的说明。 说明: CSS代码规范 1、...

  • CSS工程化

    目的 提供一致,合理的开发基础 应对变化 提升效率 CSS reset和normalize.css CSS res...

  • 前端开发整理

    语言基础 HTML / CSS JavaScript Bootstrap 工程化方案 使用node做中间层,前端工...

  • React CSS工程化解决方案总结

    react css样式 在工程化中,很重要的一点就是保持各组件名称的不同,对于css来说,这点尤为重要,为了不使诸...

  • 这些 SCSS 使用技巧真好用

    随着css工程化的普及,sass在前端工程中越来越举足轻重。当然sass并不局限于管理css全局变量、mixin之...

  • 什么是前端工程化

    一、前端工程化 1. 小白眼中的前端开发 会写 HTML + CSS + JavaScript 就会前端开发 需要...

  • 八、CSS工程化

    CSS工程化 组织 优化 构建 维护 PostCSS 介绍PostCSS本身只有解析能力各种神奇的特性全靠插件目前...

  • CSS工程化问题

    如何解决CSS模块化问题 Less Sass 等CSS预处理器 PostCSS 插件 (postcss-impor...

  • 2018-03-27 初识webpack

    什么是工程化:自动化、模块化、性能优化scss → sassy css先玩一下scss (ruby社区发明的)...

  • 说说前端工程化利器 webpack

    1 工程化 前端自动化或者半自动化工程,需要实现以下功能: 合并和压缩 Javascript、CSS 代码 。...

网友评论

      本文标题:CSS工程化

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