什么是允许? (面向对象的CSS)

新利在线娱乐网- 2012年1月3日星期二

面向对象的CSS是一种开发方法,因为它属于HTML和CSS关系,旨在减少CSS中的冗余, 主要是为了使代码更易于管理. 其思想(基本上)是采用重用的样式并将它们分配给单独的类, 然后,使用这些样式的元素采用这个类, 为其余的样式添加额外的类.

什么是面向对象的CSS

首先,我要解决名字的问题. 真正的, 面向对象的含义是可以理解的,因为它适用于面向对象编程, 而CSS并不遵循这种理解. 这种方法的大部分命名约定是, 在我和许多其他程序员看来, 选择错误的. 当第一次学习这个概念时, 这可能会使它相当混乱, 正如你可能期望看到的与OOP的相关性, 在找不到什么东西的时候. 话虽如此,请根据它的优点而不是它的名字来评判这个系统.

这种方法的最大缺点之一是, 样式驱动(因为你被鼓励将样式块分离到元素类中), 它最终在标记中添加了大量的演示内容. 这通常被认为是不好的做法, 因为人们普遍认为(尽可能地)将内容与表示分开. 然而, 有些人认为这种常见的“最佳实践”是过时的,不能解决任何问题. 然而,以多种方式呈现相同内容的现象越来越普遍. 例如, 一个使用媒体查询来显示使用相同标记的移动版本的网站, 或者被解释成不同格式的XML或JSON文件, 如HTML和PDF. 也许最常被引用的例子是改变网站的主题. 在这种情况下,主题变化不止几个细节和颜色, 必须在标记中更改类. 尽管重新设计站点(使用相同的内容)有时可能需要更改标记, 理想情况下,完全没有, 如果标记是语义化写的,它仍然会少得多.

OOCSS的许多目标都很优秀,但不一定是新的. 可管理的代码显然是一件好事,所有类型的开发人员都应该努力做到这一点. 尽可能彻底地计划你的项目, 这个方法鼓励的另一个练习是什么, 有很大的帮助, 虽然显然不需要任何特定的方法. 减少冗余还可以显著提高代码的可管理性, 但是,肯定有一些方法可以在不删除标记语义性质的情况下实现这一点. 通过为每个块使用多个选择器,可以删除许多冗余的样式声明, 这将无可否认地导致相同的选择器在几个地方被重复, 但这并不比OOCSS在标记中一遍又一遍地重复相同的类更糟糕, 这比重复整块的样式指令要好得多, 从文件大小和可管理性的角度来看. 这是真的,如果你有很多, 许多, 重用相同样式的部分的明显不同的元素, 你的CSS选择器就会失控. 如果是这样的话, 这并不是因为糟糕的设计, 为特定样式应用类实际上可能比纯语义更可取. 然而,我认为这应该是例外,而不是规则. 另一种减少冗余以提高可管理性的方法是使用像LESS或SASS这样的预处理器.

OOCSS的一些细节也很有意义. 在CSS中过分依赖ID选择器会造成可重用性问题. 这并不意味着永远不要使用ID选择器,只是要谨慎地使用它们. 它也与你是否使用ID标签来做其他事情没有任何关系, 像JavaScript钩子. OOCSS还建议尽量避免使用后代选择器. 我同意仔细检查后代选择器的使用, 并且通常对元素有默认的样式, 但也有一些情况 nav ul or 头h1 将类添加到本质上描述与其位置相同的单个元素,是否会更实用(和语义).

我看到一些批评者声称,您最终会得到非常具体的类,以至于您实际上是在内联编写样式, 如 软蓝背景黑文本中等文本圆角软阴影 然而这是不正确的, OOCSS不鼓励你把你的风格分解得那么远, 这只是一种夸张, 这不是完全的误解. 在深入挖掘类的深度上没有明确的障碍, 这是有道理的,因为这取决于你的项目的需要, 但也可以使上面的例子不太遥远. 这也引出了一点,尽管提前计划了, 如果项目发展, 你得加上, 改变, 重组, 等. 任何项目都是如此, 但是当它涉及到用两个类代替一个类的时候, 或者以其他方式重新构造类, 这意味着每次都要对标记进行重大更改.

最终, 任何一种方法的有用性最终都取决于个人项目. 你可能确实有一个项目,在这个项目中,以一种很大程度上依赖于视觉的方式构建东西是有意义的, 为标记提供样式选择, OOCSS的有用性大于语义的有用性. 然而,我认为这种情况非常罕见,对于大多数项目来说,都是长期存在的项目 一般 最佳实践确实是最好的. 同意? 不同意? 请加入下面的讨论让我们知道.

新利在线娱乐网
新利在线娱乐网是一家全方位服务的创意机构 网页设计打印身份品牌界面设计视频制作静止摄影 和 运动设计. 利用我们对卓越的热情,多元文化背景,和 获奖 实践, 我们始终如一地提供高品质的, 自定义, 创新的解决方案,以满足客户多样化的市场需求. 欲了解更多信息,请访问 www.MatchaDesign.com.