千家信息网

如何用SMACSS规范来编写CSS

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇文章为大家展示了如何用SMACSS规范来编写CSS,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。这是一个相对繁杂的CSS理论,分为Base、Layout、
千家信息网最后更新 2025年11月08日如何用SMACSS规范来编写CSS

本篇文章为大家展示了如何用SMACSS规范来编写CSS,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

这是一个相对繁杂的CSS理论,分为Base、Layout、Module、Status和Theme共五个部分。不过它的核心思想仍然和OOCSS类似,鼓励使用class。

1. Base 基本属性

基础属性很容易理解,就是最基本的东西,很多样式简单的网站都采用一个简单的二级CSS文件模式,一个base.css通用于所有页面,而每个页面有一个特定的CSS文件,我想这就是Base的雏形。要说具体是什么,比如reset文件,再比如放置clearfix或BFC的一些类似工具集的文件。

其实最终会发现,在Base中的CSS属性将会是几乎全站都要用到的属性,但我不想这么描述Base,因为这会误导人。大多数情况下,在一个网站建立之初也只会有几个简单的页面,于是这几个页面都要用到的属性就变成了通用属性,但并不是这么简单的。随着网站规模的扩大,需求的增加,设计师们灵感的迸发,所谓的通用和统一也在发生着潜移默化。所以在编写Base时,应该遵循的基准是,哪些样式是你做下一个网站时也会想用的,哪些样式即使设计改变了也只需要改变一些数值和颜色,哪些样式是一些基本原则;而不应该将目前大部分页面都在使用的样式放在Base中,还是那个道理,它们也许仅仅是恰好相同,而非逻辑一致。

2. Layout 布局

布局是一个网站的基本,无论是左右还是居中,甚至其他什么布局,要实现页面的基本浏览功能,布局必不可少。SMACSS将这一功能单独提出也是非常正确的,另外还约定了一个前缀l-/layout-来标识布局的class。举个最普遍的例子。

代码如下:

.l-header {}
.l-brand {}
.l-navigator {}
.l-container {}
.l-sidebar {}
.l-content {}
.l-footer {}

这就是一个简单的左右布局,导航和Logo中规中矩在最顶部。

3. Module 模块

模块是SMACSS最基本的思想,同时也是大部分CSS理论的基本,将样式模块化就能达到复用和可维护的目的,但是SMACSS提出了更具体的模块化方案。首先表象上来看,SMACSS中的模块应该拥有一个名字,并且为其class名,而模块其他class皆以为前缀。比如:

CSS Code复制内容到剪贴板

  1. .product {}

  2. .product-title {}

  3. .product-image {}

  4. .product-border {}

  5. .product-shadow {}

可以看到例子中product是一个模块,title和image是包含在模块内的组件,可用可不用;border和shadow是类似OOCSS的附加class用来改变模块本身。总之,在模块内可以使用其名称做前缀任意组织模块结构,但目前是让其变得更易用,提高可扩展性和灵活度,如果仅仅为了某些功能而特意写一些class就有点有形无实的感觉了。

4. State 状态

状态经常和JavaScript放在一起使用,它是一种用来标识页面状态的class,无论是为用户标识还是用程序标识。还是一个常见的例子,马上就明白。active经常用来表示当前的tab,或者当前选中的目标,这就是一种状态,无论是样式还是程序都需要知道它。

SMACSS仍然有一个对应的前缀用于标示状态class,is-是一个合适的词,指明某一元素是什么状态。

5. Theme 主题

主题就是皮肤,和OOCSS的分离皮肤与结构不谋而合。更重要的是对于可更换皮肤的站点来说,这样的分离是非常必要的,只需要更换加载的theme文件即可将皮肤更换。

总的来说,SMACSS是一个较为注意细节与实现的CSS理论,非常适合初涉CSS的人,它可以让你的CSS跑在轨道上而不至于脱轨。其思想也与OOCSS有很多相通之处,如果没有适合的方案,我建议新手可以适当的融入OOCSS的思想而使用SMACSS的结构,这样写出来的网站样式至少不会马上陷入泥沼。

上述内容就是如何用SMACSS规范来编写CSS,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

模块 样式 页面 就是 属性 布局 状态 网站 文件 还是 前缀 思想 标识 皮肤 例子 内容 功能 理论 结构 主题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北职高计算机网络技术 让人觉得你很懂网络安全 深圳新地计算机网络技术 数据库将偶数的人员简历删除 海康流媒体服务器电源指示灯不亮 网络安全第一责任人是什么 事业单位服务器无年 中国银行软件开发信息在哪里找 兰州网络安全法宣传活动 东营计划软件开发价格 广州软件开发程序员 织梦网页调用数据库 开发一个erp软件开发 武汉小圆子互联网科技有限公司 苏州有dns服务器吗 数据库中汉字的通配符 浦东新区正规软件开发推荐咨询 快门网络技术是做什么的 网络安全在身边如何防范网络危险 我的世界服务器怎么删积分 驱动器软件开发建议书 用单位淘汰的服务器干什么 哪些属于网络安全工程范畴 英语 单词 数据库 wlan 无法连接服务器 服务器 直通卡 sas 安徽地税网络安全宣传周 质检和软件开发哪个好 sql数据库老停止 德立信软件开发公司
0