千家信息网

CSS中的层分离编程示例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章为大家展示了CSS中的层分离编程示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。随着CSS的发展,使用CSS有语义化的命名约定和CSS层的分离,
千家信息网最后更新 2026年11月01日CSS中的层分离编程示例分析

本篇文章为大家展示了CSS中的层分离编程示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

随着CSS的发展,使用CSS有语义化的命名约定和CSS层的分离,将有助于它的可扩展性,性能的提高和代码的组织管理。

在我前面的文章中讨论很多关于CSS的问题都可以通过使用一个适当的CSS策略来避免。在这篇文章里,我将着重于讨论使用一种方法或者一个命名规则所带来的好处。

这里有很多可供使用的前端方法和命名规则,每个都有自己的优缺点。在几乎所有的案例中CSS被分割成更易于管理的代码"块"。CSS的这种分割方式定义了每一种方法。
命名规则

一个可靠命名规则的重要性是不可忽视的。就像组织结构带来的好处一样,这里有很多性能上的优势让你能够坚持地,有责任感地去命名你的选择器。

正确使用任何规则将会在大型项目减少与CSS相关的忧虑而发挥关键的作用
BEM

最流行的命名规则之一就是BEM(block:块,Element:元素,Modifier:修饰符)。通过给每个元素添加它的父级block模块作为前缀,使得目标的安全性变得更加简单了。BEM还有助于消除页面和body类对嵌套或者附加样式依赖。

  1. .block {}

  2. .block__element {}

  3. .block--modifier {}

上面的例子展示了一个BEM项目的类结构,下划线(__)被用来区分元素,而用连字符(--)是用来修饰元素的。下面是一个现实世界的例子...

  1. .product-details {}

  2. .product-details__price {}

  3. .product-details__price--sale {}

BEM中的一个圈套是引诱在修饰部分中添加多种用途的样式类。大的,小的,绿色的或者醒目的等修饰选择器被提出引入到标记中,这在不久的将来将会发生改变。

  1. .product-details {}

  2. .product-details__title {}

  3. .product-details__title--small {}

像大多数的多用途类一样,在项目一开始的时候意图很明显,但是当一个设计改变的时候常常会导致矛盾的CSS。
SUIT

Suit起源于BEM,但是它对组件名使用驼峰式和连字号把组件从他们的修饰和子孙后代中区分出来。

.u-utility {}

.ComponentName {}

.ComponentName--modifierName {}

.ComponentName-descendantName {}

.ComponentName.is-someState {}

通过消除潜在的混乱连字符号连接元素名来使得选择器的可读性更强。

  1. .ProductDetails {}

  2. .ProductDetails-price {}

  3. .ProductDetails-title--sale {}

加前缀

如果你不想使用如此严格或者复杂的命名规则,给每一个选择器加前缀同样可以达到这样的效果。

  1. .s-product-details {}

  2. .t-product-details {}

  3. .js-product-details {}

这种方法使得它很容易的在表象类中辨别结构类但是只是简单的写和理解。在上面的例子中的结构属性将会被应用到s-product-details选择器中。主题属性将应用于t-product-details选择器。

元素可以以同样的方式定义或者使用基类和修饰类...

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

  1. <button class="button">Buttonbutton>

  2. <button class="button button-checkout">Checkout Buttonbutton>

  3. <button class="button button-search">Search Buttonbutton>

从一方面说明在Sass partials中加前缀对于当在文件夹中删除必要的存储partials时对一个很大的项目文件定位是很有帮助的。这种方法被使用于ITCSS中。

你选择什么都没有问题,重要的是记住你的选择,并将他们应用到整个项目中。
方法

随着命名规则的增加,CSS变得更安全,更高效了。由于较小的CSS文件和更少的权重问题,所需要的嵌套选择器将会减少。

尽管有这些改进你仍可以像下面的这个例子使用复制的CSS来完成样式。

  1. .product-details__title {

  2. font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;

  3. text-transform: uppercase;

  4. color: #333;

  5. }

  6. .latest-news__title {

  7. font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;

  8. text-transform: uppercase;

  9. color: #FF0000;

  10. }

这就是前端的方法的由来,将你的CSS划分层次会有助于防止重复的样式和大分组的选择器。共同或者基础的样式被分开定义,而更具体或者修饰的样式被添加到继承样式的顶部。
OOCSS

面向对象CSS有两个主要的原则第一是表现与结构分离,第二是容器与内容分离。这两个原则的设计是用来通过创建可复用的CSS模块以提高性能。

表现与结构分离:

  1. "box-padded product-image">

  2. "box-padded product-description">

  3. .product-image {

  4. width: 400px;

  5. overflow: hidden;

  6. }

  7. .product-description {

  8. width: 500px;

  9. min-height: 200px;

  10. overflow: auto;

  11. }

  12. .box-padded {

  13. background: #FFF;

  14. padding: 10px;

  15. }

  16. ```

内容与容器分离:

  1. "wrapper recently-viewed">

  2. "wrapper suggested-products">

  3. .wrapper {

  4. width: 400px;

  5. margin: 0 auto;

  6. overflow: hidden;

  7. }

  8. .recently-viewed {

  9. border: solid 1px #ccc;

  10. background: #FFF;

  11. color: £666;

  12. }

  13. .suggested-products {

  14. border: solid 1px #ccc;

  15. background: #FFF;

  16. color: £666;

  17. }

这种面向对象的工作方式创建了一系列可以用来设置CSS属性的多种用途类。这种工作方式可以提高站点性能和维护以及保持CSS文件的DRY原则。

即使标记的多个主题是一致的,一个面向对象方法可以添加矫正的CSS用来覆盖或删除不想要的继承样式。

CSS Code复制内容到剪贴板

  1. product-delivry.padded-box {

  2. padding:0

  3. }

SMACSS

SMACSS像OOCSS一样以减少重复样式为基础。然而SMACSS使用一套五个层次来划分CSS给项目带来更结构化的方法。

Base - HTML elements & defaults
Layout -Page structure
Module - Re-usable code bloks
State - Active/Inactive etc
Theme - Typography and colour schemes etc

这个增加的组织和结构提高了输出的CSS的效率。这个方法同样适用于需要添加或者删除层次的地方。
ITCSS

ITCSS是一个完全不同于SMACSS的全新的方法,它创造了一系列的层次来管理依赖关系和促进可扩展性。基础的层次包括通用和广泛的选择器。顶部的层次包含了局部模块具体化的选择器。整套的层次如下...

Tools?—?Default mixins & functions
Generic?—?Normalize, resets, box-sizing
Base?—?HTML elements
Objects?—?Design patterns
Components?—?Modules & blocks of code
Trumps?—?Helpers & overrides

每个层次增加的权重,只允许添加额外的要求。

以上面同样的例子,CSS将会被划分为基础层和组件层。

  1. p {

  2. font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;

  3. font-size: 14px;

  4. }

  5. .product-details__title {

  6. color: #333;

  7. }

  8. .latest-news__title {

  9. color: #FF0000;

  10. }

使用前请注意

你仅仅是可以决定使用上述策略之一,但是你不是全部都得靠它。如果某一层次并不适合你的项目那么就不要使用它了。你也可以改变或者增加一些东西来使得它适应你的项目和团队的需求。命名规则或者方法并不是每个时候都能100%的适合所有项目。

你也可以创建你自己的方法或者命名规则,允许一个量身定制的解决方案来完美的适应你项目的需求。定制解决方案的一个不足之处就是缺乏社区的支持和文档。

上述内容就是CSS中的层分离编程示例分析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

方法 选择 规则 项目 层次 样式 结构 元素 内容 例子 前缀 基础 就是 性能 文件 方式 原则 对象 属性 时候 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖南永感互联网科技有限公司 A股互联网金融科技公司 厦门中拓互联网络科技有限公司 金融科技创新监管互联网金融 互联网络科技有限公司 互联网科技上市公司 润盈互联网科技 四川狮子座互联网科技 科技类的互联网平台 互联网 科技馆 互联网科技创新服务 未来五年的互联网科技 互联网科技扶贫时间 西安小鹰速贷互联网科技有限公司 华夏恒生科技与互联网科技 广州富喜互联网络科技 版纳互联网科技选哪家 美国五大互联网科技公司市值多少 东风日产互联网科技公司叫什么 颐高云石互联网科技 丰台科技园 互联网 上海万想互联网科技 科技赋能互联网健康 现代科技和互联网有关系吗 哈尔滨屹滨互联网科技有限公司 乌苏新华互联网科技做什么的 互联网科技和法律行业 长沙茂晟互联网科技有限公司 启辰互联网科技 山东亿川互联网科技有限责任公司
0