美文网首页
CSS架构(命名组织方式)札记

CSS架构(命名组织方式)札记

作者: thisiswoa | 来源:发表于2018-02-05 11:37 被阅读27次

    css组织命名方式(CSS架构)主要有OOCSS,BEM,SMACSS,MVCSS等。关于css framework,请参考演讲稿前两者侧重于命名方式,后两者侧重于组织方式

    OOCSS

    OOCSS按照语义是面向对象的样式组织方式,是将类名划分到最基础的原子层次,再根据不同标签的需要分别重新设置组合各种类名,例如:f12,len200。详情参考w3cplus的概念篇。按照OOCSS来组织样式,最明显的特点就是会在一个标签上铺设很多的类名
    举例如下:

    <!-- 结构 -->
    <div class="cf f12 L1000">
      <div class="fl long">
        区块一的内容
      </div>
      <div class="fl middle">
        区块二的内容
      </div>
      <div class="fl short">
        区块三的内容
      </div>
    </div>
    
    /* 样式 */
    .cf {
      zoom: 1;
    }
    .cf:before, .cf:after {
      content: "";
      display: table;
    }
    .cf:after {
      clear: both;
    }
    .fl {
      float: left;
    }
    .fr {
      float: right;
    }
    .long{
      width: 1000px;
    }
    .middle{
      width: 600px;
    }
    .short{
      width: 200px;
    }
    

    BEM

    BEM按照模块的思想组织类名,一个单独的模块以一个特殊的名称命名,如panel(面板)。
    内部元素命名以模块名称为基础,例如:内部第一个元素:panel-hd,主体部分:panel-bd,末尾元素:panel-ft。再内层的元素命名可以继续嵌套,如:panel-hd-icon。不过为了防止命名不至于太长,可以直接命名成:panel-icon,根据实际情况适当简省类名。
    BEM中还有一个重要的概念是样式修饰符,可以表示一个元素的不同状态。例如某个span元素,可以根据不同的用户交互状态分别设置类名:ele__focus,ele_focusout等状态修饰类
    使用不同预编译语法编写时要注意适当剥离嵌套,不同编译器语法都有相应的跳出冗余嵌套的方式。

    <!-- 基础版 -->
    <div class="panel">
      <!-- panel head -->
      <div class="panel-hd">
        <span class="panel-hd-title">标题</span>
        <i class="panel-hd-icon"></i>
      </div>
      <!-- panel body -->
      <div class="panel-bd">
        <div class="panel-bd-content">
          内容
        </div>
        <div class="panel-bd-news">
        </div>
      </div>
    </div>
    
    <!-- 推荐版 -->
    <div class="panel">
      <!-- panel head -->
      <div class="panel-hd">
        <span class="panel-title">标题</span>
        <i class="panel-icon">more</i>
      </div>
      <!-- panel body -->
      <div class="panel-bd">
        <!-- 简化 -->
        <div class="panel-content">
          content
        </div>
        <!-- 简化 -->
        <div class="panel-news">
        </div>
      </div>
    </div>
    

    SMACSS,MVCSS

    SMACSS是将样式按照功能分成base,layout,module,state等类型。MVCSS在SMACSS基础上,进一步将不同功能的样式文件划分到foundation,component,structure几个核心文件夹中去。css预编译语言引入开发后,这种组织形式可以使样式代码更易于管理。
    MVCSS举例如下:

    +--./foundation(基础)
    +-----helpers/
    ---------_animation.scss
    ---------_function.scss
    ---------_mixin.scss
    ---------_placeholder.scss
    ---------_tool.scss
    ------_base.scss
    ------_config.scss(配置)
    ------_helpers.scss(对应helpers文件夹)
    ------_reset.scss(重置)
    +--./component(组件)
    ------_tab.scss
    +-----tab/(不同页面的组件样式微调)
    ---------_common.scss
    ---------_for-page-xxx.scss
    +-----custom_plugin/(插件样式)
    ---------_pluginnamexxx.scss
    +--------pluginnamexxx/(分页面微调)
    ------------_common.scss
    ------------_for-page-xxx.scss
    +--./structure(结构)
    ------_index.scss
    +-----_index/(_index.scss样式组成部分)
    ---------_common.scss
    ---------_animation.scss
    +-----page/(其他页面)
    ---------_setting.scss
    

    本文原创,转载请注明出处。不足之处,恳请指正。

    相关文章

      网友评论

          本文标题:CSS架构(命名组织方式)札记

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