有许多公认的格式化CSS的方法。最终取决于您自己感觉最舒适的编写,但是这些将帮助您管理大型复杂项目的CSS。没关系,但是我倾向于结合使用BEM和SMACSS。
BEM是一种非常有用,功能强大且简单的命名约定,它使您的前端代码更易于阅读和理解,更易于使用,更易于扩展,更健壮和明确,并且更加严格。
块
具有独立意义的独立实体,例如:
header, container, menu, checkbox, input
元件
块的一部分,没有独立的含义。它们在语义上与其块相关:
menu item, list item, checkbox caption, header title
修饰符
块或元素上的标志。使用它们来更改外观或行为:
disabled, highlighted, checked, fixed, size big, color yellow
OOCSS的目的是鼓励代码重用,并最终鼓励更容易添加和维护的更快,更有效的样式表。
OOCSS基于两个主要原则:
- 从皮肤分离结构
这意味着将重复的视觉特征(例如背景和边框样式)定义为单独的“皮肤”,您可以将它们与各种对象混合搭配,从而无需太多代码即可实现大量的视觉多样性。请参见模块对象及其外观。
- 容器和内容物的分离
本质上,这意味着“很少使用与位置相关的样式”。无论放置在何处,对象都应该看起来相同。因此,与其创建.myObject h2 {...}样式的特定样式,不如创建并应用描述该问题的类。这样可以保证:(1)所有未分类的s看起来都一样;(2)所有具有类别类的元素(称为混合)将看起来相同;和3)当您确实希望.myObject h2看起来像正常的情况下,无需为这种情况创建替代样式。
SMACSS是检查您的设计过程的一种方法,也是将那些刚性框架纳入灵活的思想过程的一种方法。尝试记录使用CSS时采用一致的网站开发方法。
分类是SMACSS的核心。通过对CSS规则进行分类,我们开始看到模式,并且可以围绕每个模式定义更好的实践。
有五种类型的类别:
基本
包含重置和默认元素样式。它还可以具有按钮,网格等控件的基本样式,这些样式可以在以后的特定情况下在文档中覆盖。
布局
将包含所有导航,面包屑,站点地图等。
模块
包含特定于区域的样式,例如联系表单样式,主页磁贴,产品列表等,等等。
State
包含状态类,例如isSelected,isActive,hasError,wasSuccessful等。
主题
包含与主题相关的任何样式。
这里有太多要详细说明的内容,但也请看一下其他内容: