当前位置: 首页 > Web前端 > HTML

组织CSS的六种方法

时间:2023-04-02 22:14:18 HTML

BenFrain曾经说过,编写CSS代码很容易,但扩展和维护它却很难。本文介绍了一套方案来解决这个问题。OOCSSOOCSSS代表面向对象的CSS。这种方法有两个主要观点:结构和设计分离容器分离和内容分离使用这种结构,开发人员可以获得可以在不同地方使用的通用类。在这一步,会有两点(通常是好的和坏的):好:通过复用减少代码量(DRY原则)。不好:结合使用。当您更改特定元素的样式时,您很可能不仅需要更改CSS(因为大多数类都是公共的),而且还需要添加新类。另外,这种OOCSS方法本身并没有明确的规则,而是抽象的建议,因此这种方法在生产中的结果会有所不同。最终效果是OOCSS的这种想法启发了其他人创建他们自己的更具体的代码结构。SMACSSSMACSS的意思是可扩展的、模块化的(ScalableandModularArchitecture)CSS。这种做法的主要目的是减少代码量,使代码维护更容易。JonathanSnook将样式分为5个部分:基本规则。这些是主要的网页元素样式——body、input、button、ul、ol等。在这部分,我们主要使用HTML标签和属性选择器,特殊情况使用——类(比如你有JavaScript样式选择);布局规则。这些是全局元素的样式,例如

尺寸等。Jonathan建议在这些元素上使用id选择器,因为这些元素不会在页面上出现多次。但是,本文作者认为这不是好的做法。(在样式表中,只要id出现在其他地方,它就会在其他地方引起麻烦)。模块规则。块在单个页面中多次使用。id和标签选择器(分别用于可重用性和上下文独立性)在模块分类中已弃用。国家规定。在本节中,指定了模块的不同状态和页面的基础。这是唯一可以使用关键字!Important的地方。主题规则。您可能需要更改设计风格。还建议为属于特定分组的类命名空间,并为JavaScript中使用的类使用单独的命名空间。这种方法使编写和维护代码更加容易,并吸引了许多开发人员。AtomicCSS使用AtomicCSS,为每个可重用属性创建一个单独的类。例如margin-top:1px;可以创建一个classmt-1,width:200px;可以创建一个类w-200。这种风格允许通过重复声明尽可能地减少代码,并且更改模块风格相对容易,例如,在更改技术任务时。但是,这种方法也有一个很大的缺点:类名是描述性的属性名,而不是元素本身的语义描述,这有时会使开发变得复杂。直接在HTML中显示设置。由于这些缺点,这种方法受到了严厉的批评。不过这个方法对于大型项目还是很有效的。此外,AtomicCSS也被用于不同的框架来指定正确的元素样式,还有一些其他的表现层方法。MCSSMCSS是多层CSS。这种编写代码的风格建议将风格分成称为层的部分。底层(零层或基础)。该层代码负责重新设置浏览器样式(如reset.css和normalize.css);基础层(Baselayer)包含网站重用元素的样式:按钮、文本输入框等。项目层包含单独的模块和一个“上下文”——基于客户端浏览器、设备对元素的修改查看站点/应用程序、用户角色等。装饰层代码是OOCSS样式,对元素的外观进行了一些小的更改。建议只保留影响元素外观但不破坏站点布局的样式(例如颜色和不重要的缩进)。层之间的交互级别很重要:基础层定义了一种不影响其他层的中性样式。基础层的元素只影响这一层的类。项目层的元素可以影响基础层和项目层。装饰层以描述性OOCSS类(“原子”类)的形式设计,不会影响其他CSS代码,并且可以选择性地用于标记中。AMCSSAMCSS即“AttributeModulesforCSS(CSS属性模块)”。看个例子:Button
这样一连串的类并不简单,那我就按属性来组织一下值吧。结果如下:Button
为避免命名冲突,最好为属性添加命名空间。那么,我们的按钮就变成了这样:Button
如果用验证器检查代码,会发现没有am-button属性,所以可以使用它在Prependdata-到属性名称中。使用一个鲜为人知的选择器“~=”(IE7+)作为类属性:该选择器选择属性值包含指定单词的元素,以空格分隔。因此,这个class~="link"选择器类似于a.class.button的选择器。即使专门使用,因为类选择器只是那个属性选择器的一个特例。因此,CSS代码.button{...}.button--large{...}.button--blue{...}翻译成[am-button]{...}[am-button~="large"]{...}[am-button~="blue"]{...}如果你认为这样的代码不常见,你也可以使用不太激进的AMCSS形式:
FUNFUN指示选择器、实用程序样式和名称空间组件的平面层次结构。每个字母后面都有具体的原则:F、选择器的扁平化层次:推荐使用类来选择元素,避免无用的拼接,不要使用id。U,utilitystyles:鼓励创建原子风格的服务来解决典型的拼凑任务,比如w100表示??width:100%;,fr表示float:right;N、name-spacedcomponents:Ben建议添加命名空间来指定特殊模块元素的样式。这种方法避免了重叠的类名。一些开发人员已经注意到使用这个原则编写和维护代码非常方便;在某种程度上,作者带来了最好的结果,并以简洁的方式介绍了该技术。这种方法对项目和代码结构提出了相当大的要求,它只建立了记录元素的首选形式和标记使用的方法。但在小型项目中,这些规则足以创建足够质量的代码。总结如您所见,这些方法都不是完美的。这些方法没有绝对的规则-您可以从一个解决方案开始并创建您自己的东西,或者从头开始创建一个新方法。