加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

CSS的模块化方案有哪些,怎么挑选好

发布时间:2023-10-19 15:24:58 所属栏目:语言 来源:
导读:css的模块化方案可能和js的一样多,下面简单介绍几种主要的模块方案。

oocss

面对对象的规则,主要的原则是两种:分离结构和外观,分离容器和内容。

名词解释

分离结构和外观:增加可重复的设计单元
css的模块化方案可能和js的一样多,下面简单介绍几种主要的模块方案。
 
oocss
 
面对对象的规则,主要的原则是两种:分离结构和外观,分离容器和内容。
 
名词解释
 
分离结构和外观:增加可重复的设计单元,同时去推进产品和ui对这方面的思考,比如下面的css使用时对象模式的命名和模块化规则。
 
分离容器和内容:指的是样式的使用不以元素位置唯一匹配,在任何位置你都可以使用这个样式,如果你不适用这个样式,会保持默认的样式。
 
实例
 
// dom结构
 
<div class="toogle simple">
 
  <div class="toogle-control open">
 
    <div class="toogle-tittle">标题</div>
 
  </div>
 
  <div class="toogle-details "></div>
 
</div>
 
// 模块的标记 唯一标识
 
.toggle{
 
}
 
// 皮肤样式的写法,如果基本结构是一样的,你可以用complex的一个辅助样式
 
.toggle.simple{
 
}
 
// 是否做嵌套写法 相信很多预处理器的部分会支持嵌套 然后很多人会这样写,不被推荐的
 
.toogle{
 
 .toogle-control{
 
 }
 
 .toogle-details{
 
 }
 
}
 
// 其实你会这样组织么 不是很建议 这样会降低查询效率 如果能确认唯一性的时候 其实直接写子即可
 
.toogle{}
 
.toogle-control{}
 
.toogle-details{}
 
smacss
 
sma和oocss有很多类似之处,但区分的地方有很多,主要是对样式的分类。分别是:基础、布局、模块、状态、主题
 
基础
 
可以适用于任何位置,我也称全局样式
 
布局
 
主要是用来实现不同的特色布局,提高布局的复用率,
 
模块
 
设计中的模块化,可重复使用的一个单元,一般是dom+css的耦合绑定。
 
状态
 
描述在特定状态下的布局或者模块的特殊化表现,这里我觉得要推荐下《css禅意花园》,在dom结构不变的情况下,可以通过css的皮肤化实现样式的改版。
 
主题
 
与状态相比更加定制的是,我们会针对有些特殊的模块,进行主题的设置,包括一系列的颜色、尺寸、交互等进行重度设计,参数化设计。
 
案例
 
// dom结构
 
<div class="toogle toogle-simple">
 
  <div class="toogle-control is-active">
 
    <div class="toogle-tittle">标题</div>
 
  </div>
 
  <div class="toogle-details "></div>
 
</div>
 
与oocss相比,其实大部分设计思路是一样的,以一个类作为css的作用域(作用域就是两个限制,1 不符合场景时限制禁止使用 2 符合场景时要正确的使用),另外的区别就是针对皮肤和状态的不同书写规则。
 
bem
 
bem就是块、元素、修饰符的思维去写样式。它不涉及具体的css结构,只是建议你如何命名css.
 
案例
 
// dom结构
 
<div class="toogle toogle--simple">
 
  <div class="toogle_control toogle_control--active">
 
    <div class="toogle_tittle">标题</div>
 
  </div>
 
  <div class="toogle_details "></div>
 
</div>
 
解释
 
块级:所属组件的名称
 
元素:元素在组件里的名称
 
修饰符:任何与元素修饰相关的类
 
这种命名方式的缺点,样式名会很长,但实际上在smacss以及oocss中都会一定程度的使用,命名很语义化,在不清楚模块时,我们可以根据样式名得出对应的结构可能是如何的。
 
选择合适的方案
 
无论哪种方案,关键是哪种是最合适团队的,我们目前的方式是:bem和smacss集合的方式。
 
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章