本文介绍的以下几种都是对CSS模块化的各种实现,你可能工作中使用不到,甚至部分有些被淘汰。但是希望你看到这些词的时候不会一脸懵逼!!!

BEM

本人的上篇文章有详细的介绍:2020年你还没用BEM?
这里不再赘述

OOCSS

Object Oriented CSS 面向对象的CSS
OOCSS主要提倡两种规范

  • 结构和样式分开(定义一个元素的时候,将本身的结构和对元素外观的样式分开,增强css的复用性)
<div class="header bg"></div>
.header{width: 500px;height: 100px;
}
.bg{background: #f00;
}
  • 容器和内容分开(最好不要直接使用标签名定义样式,减少对html的依赖)
<div class="container"><h2 class="list"></h2><h2 class="list"></h2><h2 class="list"></h2>
</div>// 错误定义
.container h2{ ... }
// 正确定义
.list{ ... }

AMCSS

Attribute Modules for CSS CSS的属性模块
AM是一种使用HTML 属性及其值而非样式元素的类的技术。这样,每个属性都可以有效地声明一个单独的命名空间来封装样式信息,从而使HTML和CSS更具可读性和可维护性。

简单来说就是通过css属性选择器来模块化CSS

优势:
属性值得灵活性,相当于通过属性值来增加命名空间,减少全局名称空间,以便更好的将css模块化

  <div am-blockName><div am-blockname-chilElement></div><p am-tritName="one two">hello</p></div>
  [am-blockName] {width: 500px;}[am-blockname-chilElement] {height: 50px;}[am-tritName~="one"] {font-size: 30px;}

SMACSS

Scalable and Modular Architecture for CSS 可扩展和模块化的css架构
SMACSS主要是介绍遵循SMACSS的基本规则和命名规则,按照SMACSS的规则,书写规范的CSS

五种类别

  • Base
  • Layout
  • Module
  • State
  • Theme

使用类别主要是将重复的操作简化,减少代码量,简化维护,并提高用户体验的一致性

  1. 基本规则(Base)
  • css重置,设置css重置样式表
  1. 布局规则(Layout)
  • 将页面分为主要部分和次要部分,主要部分位于主要部分之间,因此布局样式分为主要样式和次要样式
  • 主要部分使用id选择器,含有布局样式的话可以这么写(.l-fixed #header)
  1. 模块规则(Module)
  • 模块是页面中更离散的组件,可以是导航栏、对话框等等,模块位于lauout组件或其他组件内部
  • 每个模块都应设计为作为独立组件存在。这样,页面将更加灵活。如果操作正确,则可以轻松地将模块移动到布局的不同部分,而不会中断。
  • 请避免使用ID和元素选择器,而仅使用类名
  1. 状态规则(State)
  • 状态是增加和覆盖所有其他样式,例如打开关闭、正确和错误
  • 可以使用!important
  • 例如:is-、has-
  1. 主题规则(Theme)
  • 主题定义了颜色和图像,使您的应用程序或站点具有外观。将主题分成自己的样式集,可以轻松地为其他主题重新定义这些样式。

SUITCSS

SUIT CSS是一种专注于为基于组件的开发改善CSS创作体验的方法
基于组件的系统允许将松散耦合的独立单元实现和组合为定义明确的复合对象。组件已封装,但能够通过接口/事件进行互操作

命名约定:

工具 class
语法:u-[sm-|md-|lg-] utilityName使用驼峰式命名

<div class="u-cf"><a class="u-floatLeft" href="{{url}}"><img class="u-block" src="{{src}}" alt=""></a><p class="u-sizeFill u-textBreak">…</p>
</div>

组件 (负责组件特定样式的css)
语法:[-][-descendentName][–modifierName]

  • namespace(命名空间 可选)
.twt-Button { / * … * / }
.twt-Tabs { / * … * / }
  • ComponentName(组件名称)
    使用驼峰式写法
<article class="MyComponent"></article>
  • descendentName(组件子节点名称)
    使用驼峰式写法
<article class="Tweet"><div class="Tweet-bodyText"></div>
</article>
  • modifierName(修饰符名称)
    用于描述组件修饰符,使用驼峰式写法
<button class="Button Button--default"></button>

变量
语法:–ComponentName[-descendant|–modifier][-onState]-(cssProperty|variableName)

:root {---ComponentName-backgroundColor --ComponentName-descendant-backgroundColor --ComponentName--modifier-backgroundColor --ComponentName-onHover-backgroundColor --ComponentName-descendant-onHover-backgroundColor
}

这里只是简单介绍,如需深入了解可以自行查看官网

ITCSS

nverted Triangle CSS 倒三角CSS
可扩展和可维护的CSS架构

ITCSS的主要原则之一是将CSS代码库分为几个部分(称为layer),这些部分采用倒三角形的形式:

  • Settings –与预处理器一起使用,并包含字体,颜色定义等。
  • Tools–全局使用的mixin和功能。重要的是不要在前2层中输出任何CSS。
  • Generic –重置或规范化样式,框大小定义等。这是生成实际CSS的第一层。
  • Elements –HTML元素(例如H1,A等)的样式。这些带有浏览器的默认样式,因此我们可以在此处重新定义它们
  • Objects –定义未装饰设计模式的基于类的选择器,例如OOCSS已知的媒体对象
  • Components –特定的UI组件。这是我们大部分工作的地方,我们的UI组件通常由对象和组件组成
  • Utilities –工具程序类能够覆盖三角形中之前发生的样式
  • 这里只是简单介绍,如需深入了解可以自行查看官网

到此为止,以上就是介绍的全部内容,如有不正确之处。还望在评论中指出,谢谢

关注我:前端Jsoning

简述BEM, OOCSS,AMCSS,SMACSS,SUITCSS,ITCSS相关推荐

  1. 好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM

    为什么80%的码农都做不了架构师?>>>    好程序员web前端分享值得参考的css理论:OOCSS.SMACSS与BEM 最近在The Sass Way里看到了Modular C ...

  2. 如何写好CSS?(OOCSS DRY SMACSS)

    同一个样式在同一个element上作用了好几遍,而同一个样式又分散在4,5个class上,优先级有很多层.可以看得出这个怪物不是一个人造就的,早期的开发者选择了SCSS技术,但混乱的import导致了 ...

  3. 什么是前端工程化?如何实现前端工程化?

    一.什么是前端工程化 前端工程化是使用软件工程的方法来解决前端的开发流程中模块化.组件化.规范化.自动化的问题,其主要目的为了提高效率和降低成本. 二.为什么需要前端工程化? Web业务日益复杂化和多 ...

  4. Atitit.css 规范 bem  项目中 CSS 的组织和管理

    Atitit.css 规范 bem  项目中 CSS 的组织和管理 1. 什么是BEM?1 1.1. 块(Block)2 1.2. 元素(Element)2 1.3. BEM树(和DOM树类似).3 ...

  5. 问答:如何规划CSS 中 的命名方式 如何看待 CSS 中 BEM 的命名方式?

    好多盆友 很纠结 css命名规则 怎么弄,还没起步就被绊住了,那么今天蝈蝈就针对这个问题来讨论一下 没什么技术 含量,但却对效率开发至关重要的 "问题". 下文是一些知乎大神的个人 ...

  6. 现代前端开发路线图:从零开始,一步步成为前端工程师

    https://36kr.com/p/5128487.html 编者按:很多人都想学编程.但是苦于没有具体的步骤和指导.比如想找份前端开发的工作,却不知道应该先学习什么再学习什么,也不知道该选择什么样 ...

  7. 前端新手入门必读!前端开发线路图分享

    很多人都想学编程.但是苦于没有具体的步骤和指导.比如想找份前端开发的工作,却不知道应该先学习什么再学习什么,也不知道该选择什么样的工具.因为经常被人问到类似的问题,全栈开发者Kamran Ahmed索 ...

  8. Vue3 企业级优雅实战 - 组件库框架 - 4 组件库的 CSS 架构

    1 常见的 CSS 架构模式 常见的 CSS 架构模式有很多:OOCSS.ACSS.BEM.SMACSS.ITCSS 等,其中 SMACSS 和 ITCSS 很相似.我在企业级项目中最常使用的是简化版 ...

  9. css 倒三角_倒三角结构:如何管理大型CSS项目

    css 倒三角 by Luuk Gruijs Luuk Gruijs着 倒三角结构:如何管理大型CSS项目 (The Inverted Triangle Architecture: how to ma ...

最新文章

  1. vs编译protobuf 3.0.0
  2. telnet 退出命令
  3. r shiny app的学习和使用,这个我认为是作为大学生最适合的入门网页开发工具!!!
  4. IJCAI2019报告:基于无监督学习和图学习的大数据挖掘
  5. 动态规划之硬币表示问题
  6. 前端学习(595):使用network进行详细分析
  7. 运行地址与加载地址估计大部分人没弄明白~
  8. Spring Boot基础学习笔记19:自定义RedisTemplate与RedisCacheManager
  9. postgresql 字符串转整数 int、integer
  10. linux使用.rpm包安装mysql
  11. idea 15 license server
  12. Java 中的volitle 关键字
  13. [导入]【布鲁斯威利斯】【虎胆龙威4最终珍藏版】【1024x432RMVB 1.41GB】【20:50】...
  14. 羽毛球 中的 切球 与 旋球
  15. c++ 读取html,C++ 使用MSHTML分析html 转发
  16. MathType|强大的数学公式编辑器
  17. 文华财经数据导出工具
  18. 2019年架构软考论文押题(一)
  19. android sqlite多条件查询,sqlite 多条件查询
  20. MATLAB plotyy总结

热门文章

  1. 【Kettle 工具】如何安装及连接达梦数据库
  2. 音乐背景声提取 matlab,获取抖音背景音乐Bgm提取方案-下载抖音背景音乐方法
  3. 【四】【vlc-android】播放控制交互与demux解复用层、媒体数据流拉取层的具体数据传递和控制流程源码分析
  4. 数组:合并同为升序或者降序的数组
  5. 缺项目经验?线上实训机会来咯!!后端企业项目盖章实习,可写进简历
  6. 个人形象设计之衣橱管理
  7. Eureka快速启动
  8. Envoy Corp键盘鼠标驱动有的请进来看下
  9. Linux-apache阿帕奇
  10. 湖南粮食局长禁食一天称给我白米饭都觉得美味-禁食