千家信息网

如何使用Sass来编写面向对象的CSS代码

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章为大家展示了如何使用Sass来编写面向对象的CSS代码,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。自从2008年Nicole Sullivan提出O
千家信息网最后更新 2026年11月02日如何使用Sass来编写面向对象的CSS代码

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

自从2008年Nicole Sullivan提出Object-Oriented CSS(OOCSS)以来。它就成为一个领先的模块系统,用来组织你的CSS代码方式之一。

OOCSS不同于其他组织CSS代码方法,比如SMACSS或者BEM。通过将CSS代码和结构分离让你的模块可重用。事实上,我也通常将SMACSS与OOCSS混为一谈。

OOCSS、SMACC和BEM在CSS中是很有内涵的东东,早就在W3cplus站点上有相关内容科普过。可以说理解了这些内容将能更好的帮助您组织、管理您的CSS代码或者说CSS模块。

什么是对象?

在视觉是这是一个重复的模块,可以将HTML、CSS和JavaSctrip独立抽取出来,成为一个独立的片段——Nicole Sullivan

将一个CSS对象抽取出来要考虑的第一件事情就是怎么将样式与结构分离出来,组织代码的最佳方式是什么?OOCSS的创始人Nicole Sllivan提了两个主要原则:

结构与样式分离:你应该在对象中定义结构和位置,而对于样式特性应该使用类名分离出来,比如说background或border。这样一来你就不需要去覆盖一些特征性样式。
容器与内容分离:不要在你的HTML结构中插入样式。换句话说,你的样式中尽量不要使用html标签或者id标识符。相反,应该定义一些类名来定义样式,而且选择器的嵌套的层级应该尽量的少。

我们快速做一个示例

运用这些原则可能比较困难(理解理论的东西总是蛋疼的)。让我们来看一个简单的实例,看看是如何组织这样的代码:

CSS Code复制内容到剪贴板

  1. /* 不好的方式 */

  2. .box-1 {

  3. border: 1px solid #ccc;

  4. width: 200px;

  5. height: 200px;

  6. border-radius: 10px;

  7. }

  8. .box-2 {

  9. border: 1px solid #ccc;

  10. width: 120px;

  11. height: 120px

  12. border-radius: 10px;

  13. }

你不难发现,有一些重复的样式出现。在这个例子中,border样式在两个类中都定义了。如果你想改变border-radius或border属性值时,不得不在两个地方修改。

为了解决这个问题,把这个样式放在另一个新增加的类名中:

CSS Code复制内容到剪贴板

  1. /* 好的方式 */

  2. .box-1 {

  3. width: 200px;

  4. height: 200px;

  5. }

  6. .box-2 {

  7. width: 120px;

  8. height: 120px;

  9. }

  10. .box-border{

  11. border: 1px solid #CCC;

  12. border-radius: 10px;

  13. }

在HTML结构中,我们可以这样使用:

XML/HTML Code复制内容到剪贴板

  1. <div class="box-2 box-border">Lorem ipsumdiv>

  2. <div class="box-1 box-border">Lorem ipsumdiv>

语义化和维护

你在意没有语义化,而我更关心的是代码的维护。比如说这个示例所示。

纯CSS来定义对象就没有语义化,但这样就存在一些问题:

每次改为样式风格时,都需要修改HTML
没有一种安全的方式来访问DOM元素

对于OOCSS来说,除了维护HTML比较困难之外,其他都是很完美的。我们的CSS很容易扩展,也非常方便用于新的内容中。

因此我们写了部分CSS代码用于在HTML结构中进行扩展。这样的方式真的会变得更好?
Sass的到来

我可以肯定你肯定听过Sass的@extend命令和了解他是如何工作的。因此,要非常感谢选择器的占位符%placeholder,在Sass中可以通过@extend来扩展,如此一来在CSS就是可以创建一些有语义化的类名,也解决了HTML中的存在的问题。

我们必须使用%placeholder来创建对象,通过@extend在类中调用,将其合在一起。这样就可以自己组织代码:

CSS Code复制内容到剪贴板

  1. /* 不好的方式 */

  2. a.twitter {

  3. min-width: 100px;

  4. padding: 1em;

  5. border-radius: 1em;

  6. background: #55acee

  7. color: #fff;

  8. }

  9. span.facebook {

  10. min-width: 100px;

  11. padding: 1em;

  12. border-radius: 1em;

  13. background: #3b5998;

  14. color: #fff;

  15. }

所有的对象都使用@extend和基本对象混合在一起,这样就可以得到一个干净的CSS对象,在Sass中是十分容易的事情,我们也不必要再花时间来修改HTML。

CSS Code复制内容到剪贴板

  1. /* 好的方式 */

  2. %button {

  3. min-width: 100px;

  4. padding: 1em;

  5. border-radius: 1em;

  6. }

  7. %twitter-background {

  8. color: #fff;

  9. background: #55acee;

  10. }

  11. %facebook-background {

  12. color: #fff;

  13. background: #3b5998;

  14. }

  15. .btn {

  16. &--twitter {

  17. @extend %button;

  18. @extend %twitter-background;

  19. }

  20. &--facebook {

  21. @extend %button;

  22. @extend %facebook-background;

  23. }

  24. }

具有语义化了,完美?Sass解决了我们的总是。记住:@extend让你的HTML保持最干净,而且又具有语义化,这在Sass中是件十分容易的事情。

我喜欢把其称为OOSass,因为他是OOCSS和Sass的混合物。当然,你不必使用它。如果你不在刻意在HTML中追求语义化,你仍然可以使用OOCSS。每个人都有自己的方式,那么你又是如何构建你自己的CSS呢?请与我们一起分享。

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

代码 内容 样式 对象 方式 结构 语义 剪贴板 剪贴 模块 类名 两个 事情 就是 问题 干净 困难 一来 不好 原则 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 互联网科技工作委员会副主任毛军 互联网科技与金融科技 互联网金融 金融科技 齐家互联网科技 电子科技大学互联网 中国互联网金融科技基金 中盈科技互联网信息有限公司 成都互联网科技公司100强 宁夏众和广鑫互联网科技有限公司 亳州好赞互联网科技有限公司 晋城互联网科技 云南省自由互联网科技有限公司 西安有哪些互联网高科技企业 江苏互联网智能科技产品出厂价 西安左小互联网科技有限公司 互联网科技的前景 互联网领先科技成果宣传视频 安徽九吞吴互联网科技有限公司 上海旺乐尼互联网科技有限公司 中资互联网科技 成都互联网科技公司 美国互联网前沿科技 互联网科技素材视频竖屏 滨湖区互联网智能科技产品供应 科技与互联网的利与弊 汽车互联网创新科技园 荆州市昕露互联网络科技有限公司 互联网科技公司有风险吗 威龙国际互联网科技公司
0