oocss_面向对象CSS(OOCSS)的基础

前端开发Swift发展,并且每年都添加许多新技术。 对于开发人员来说,跟上所有事情可能是一场斗争。 在SassPostCSS之间,很容易迷失在开发工具的海洋中。

一种较新的技术是面向对象CSS,也简称为OOCSS。 这不是一个工具,而是一种CSS编写方法 ,旨在使CSS模块化和基于对象

在本文中,我想介绍OOCSS核心基础知识 ,以及如何将这些思想应用于前端Web工作 。 这项技术可能不会赶上每个开发人员,但值得了解新概念来决定您的工作流程是否可以从中受益。

是什么使CSS面向对象?

在过去的几年中,OOP已在JavaScript和后端语言中得到广泛使用,但是根据CSS的原理组织CSS仍然是一个新概念。

OOCSS中的“对象”是指HTML元素或与其关联的任何内容(例如CSS类或JavaScript方法)。 例如,您可能有一个侧边栏窗口小部件对象,可以将其复制以用于不同的目的(时事通讯注册,广告块,最新帖子等)。 CSS可以将这些对象作为对象 ,从而使缩放变得轻而易举。

总结OOCSS的GitHub条目 ,一个CSS对象可能包含四件事:

  1. DOMHTML节点
  2. 有关这些节点样式CSS声明
  3. 像背景图像这样的组件
  4. 与对象关联JavaScript行为,侦听器或方法

一般来说,当CSS考虑可重用可定位到多个页面元素的 时,它是面向对象的。

许多开发人员会说OOCSS更容易与他人共享,并且在几个月(或数年)的不活跃开发之后也更容易使用。 与此相比,SMASMA等其他模块化方法则具有更严格CSS对象分类规则。

如果您想了解更多信息,那么OOCSS FAQ页面上有很多信息。 创作者Nicole Sullivan经常谈论OOCSS及其与现代Web开发的联系。

结构与风格分开

OOCSS的很大一部分是编写将页面结构(宽度,高度,边距,填充)与外观(字体,颜色,动画)分开的代码。 这允许将自定义外观应用于多个页面元素, 而不会影响结构

这对于设计可轻松在布局中移动的组件也很有用。 例如,边栏中的“最新帖子”小部件应可移动到页脚中或内容上方,同时保持相似的样式。

这是“最近的帖子”小部件的OOCSS示例,在这种情况下,这是我们CSS对象:

/* Structure */
.side-widget {
  width: 100%;
  padding: 10px 5px;
}

/* Skinning */
.recent-posts {
  font-family: Helvetica, Arial, sans-serif;
  color: #2b2b2b;
  font-size:1.45em;
}

注意, 布局.side-widget类管理,该类也可以应用于多个侧边栏元素,而外观.recent-posts类管理,该类也可以用于对其他小部件进行外观设置。 例如,如果将.recent-posts小部件移动到页脚,则它可能不会采用相同的位置,但是可能具有相同的外观。

还要看一下CodePen的侧边栏示例 。 它对浮点数和文本对齐使用不同的类分隔,因此复制将不需要额外CSS代码

将容器与内容分开

简单来说,这仅意味着您应避免使用子选择器 。 当自定义任何唯一页面元素(如锚链接,标题,blockquotes或无序列表)时,应为它们提供唯一的类,而不是后代选择器

这是一个简单的例子:

/* OOCSS */
.sidebar { /* sidebar contents */ }
h2.sidebar-title { /* special h2 element styles */ }

/* Non-OOCSS */
.sidebar { /* same sidebar contents */ }
.sidebar h2 { /* adds more specificity than needed */ }

尽管使用第二种代码格式并不可怕,但是如果您要编写简洁的OOCSS,强烈建议您遵循第一种格式。

发展方针

很难确定确切的规范,因为开发人员一直在争论OOCSS的目的。 但是这里有一些建议可以帮助您编写更简洁的OOCSS代码

  • 使用类而不是ID进行样式设置。
  • 除非必要,否则请尝试放弃多级后代类的特异性
  • 用可重复的类定义独特的样式 (例如,浮点数,clearfix,独特的字体栈)。
  • 用目标类而不是父类扩展元素。
  • 将样式表分为几部分 ,考虑添加目录。

请注意,开发人员仍应使用ID进行JavaScript定位,但CSS不需要ID,因为它们过于具体 。 如果一个对象使用ID进行CSS样式设置,则由于ID是唯一的标识符,因此永远无法复制该对象。 如果只使用类进行样式设置,则继承将更容易预测

此外,可以将类链接在一起以获得更多功能。 一个元素可以附加10个以上的类。 虽然我个人不建议在一个元素上使用10个以上的类,但它确实允许开发人员为无限制的页面元素积累可重复使用的样式库。

OOCSS中的类名颇有争议,并非一成不变。 许多开发人员更喜欢使类简短而切合实际。

骆驼的情况也很流行,例如.errorBox而不是.error-box 。 如果您在OOCSS的文档中查看类的命名 ,您会发现驼峰式案例是“官方”建议。 破折号没有什么问题,但是通常最好遵循OOCSS准则

OOCSS + Sass

大多数Web开发人员已经喜欢Sass,它已经Swift超过了前端社区。 如果您还没有尝试过Sass,那么值得尝试一下 。 它允许您编写带有变量,函数, 嵌套和编译方法(如数学函数)的代码。

在称职的手中,Sass和OOCSS可能是天作之合。 您可以在The Sass Way博客上找到有关此内容的出色文章

例如,使用Sass @extend指令,您可以将一个类的属性应用于另一个类。 属性不是重复的,而是将两个类与逗号选择器组合在一起。 这样,您可以在一个位置更新CSS属性。

如果您不断编写样式表,这将节省数小时的键入时间,并有助于使OOCSS流程自动化

无礼的标志设计
图片: Sean Amarasinghe

还请记住, 代码维护是OOCSS的重要组成部分 。 通过使用Sass,变量,混合和工作流程中捆绑的高级整理工具使您的工作变得更加轻松。

出色的OOCSS代码的一个关键属性是能够与任何人 (甚至以后与您自己) 共享它 ,并能够轻松地将其获取。

性能考量

OOCSS旨在平稳运行,而不会造成太多混乱。 开发人员会尽最大努力重复,事实上,这就是DRY开发的前提。 随着时间的流逝,OOCSS技术可以导致数百个CSS类,并且在给定文档中数十次应用了各个属性。

由于OOCSS仍然是一个新话题,因此很难就膨胀这个话题争论不休。 许多CSS文件最终都很少膨胀,而OOCSS提供了坚固的结构,并且(理想情况下)减少了膨胀。 最大的性能问题是在HTML中,其中某些元素可能会为布局结构和设计积累一些不同的类。

您会在Stack OverflowCSS-Tricks等网站上找到有关此主题的有趣讨论。

我的建议是尝试构建一个示例项目,然后看看它如何进行。 如果您爱上OOCSS,则可能会从根本上改变您编写网站的方式。 另外,如果您讨厌它,您仍在学习一种新技术,并认真思考它的工作方式。 无论如何,这都是双赢的。

忙于写作OOCSS

学习Web开发中任何东西的最好方法是练习。 如果您已经了解CSS的基础知识,那么您就顺利了!

由于OOCSS不需要预处理,因此可以使用在线IDE (如CodePen)进行尝试。 简单的项目最适合上手,并从那里开始提高您的知识。

查看这些资源,以进一步在OOCSS的不断发展的领域中进行研究。


翻译自: https://www.hongkiat.com/blog/basics-of-object-oriented-css/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值