常见的 CSS 架构模式

【猿创征文】 Vue3 企业级优雅实战 - 组件库框架 - 4 组件库的 CSS 架构 在前一篇文章中分享了搭建组件库的基本开发环境、创建了foo组件模块和组件库入口模块,本文分享组件库的样式架构设计。 阅读详情

前言:作为前端API调用工程师,经常会遇到其他人的代码冗余且重复,难以去维护和重构的情况。这种情况不仅仅只发生在JS中,在CSS中也会出现。如果开发者从来没有CSS架构意识,那么他的项目CSS代码将会一团糟。常见的如:class命名毫无章法,css代码存放位置毫无规律等等。 要解决上述的问题就需要用到现如今各种的CSS架构模式。

常见的 CSS 架构模式有很多:OOCSS、ACSS、BEM、SMACSS、ITCSS 等,其中 SMACSS 和 ITCSS 很相似。在项目中最常使用的是简化版的 ITCSS + BEM + ACSS。

 

ACSS

ACSS 模式几乎是一个样式属性就对应了一个样式类。这种方式非常灵活,复用性很强、维护成本低,但破坏了 CSS 命名语义化。常见的例如:

.f {
  display: flex;
}
.f-c {
  display: flex;
  flex-direction: column;
}
.f-r {
  display: flex;
  flex-direction: row;
}
.f-1 {
  flex: 1 1 0;
}
.oy-h {
  overflow-y: hidden;
}
.oy-a {
  overflow-y: auto !important;
}
.ox-h {
  overflow-x: hidden;
}
.o-h {
  overflow: hidden;
}

 

BEM 

BEM (Block Element Modifier)模式是一种常用的命名方法论,其将页面的视图分为:块 (Block)、元素 (Element)、修饰符 (Modifier)。

  • 块 Block:代表功能独立的整体。块的类名应该使用简短而具有描述性的名字,例如:`header`,`container`,`menu`,`tabs`,`card`。
  • 元素 Element: 代表块的一部分,使用两个短下划线(__)进行连接。例如:`header__title`,`menu__item`。
  • 修饰符 Modifier: 代表块或元素上的标志。用它们来改变外表或行为。使用两个短中划线(--)连接,例如:`color--yellow`,`--fixed`。

例如,定义一个正常的按钮,在不同的情况下有两个状态:

<button class="button">
	Normal button
</button>
<button class="button button--state-success">
	Success button
</button>
<button class="button button--state-danger">
	Danger button
</button>
.button {
	display: inline-block;
	border-radius: 3px;
	padding: 7px 12px;
	border: 1px solid #D5D5D5;
	background-image: linear-gradient(#EEE, #DDD);
	font: 700 13px/18px Helvetica, arial;
}
.button--state-success {
	color: #FFF;
	background: #569E3D linear-gradient(#79D858, #569E3D) repeat-x;
	border-color: #4A993E;
}
.button--state-danger {
	color: #900;
}

 

OOCSS

OOCSS(Object-Oriented CSS)即像面向对象那样使用封装和继承这两个特性。

譬如定义一个.table包含了表格的基本样式,如宽高、边框、内边距等等。这就是把基本的样式统一封装在了table类中。

// 表格对象
.table {
    // 基础的表格样式
}

然后去定义各种带有不同特性的表格:

.featured-table {
  // 特定的表格样式
}

最后就可以基于上面的设定来创建不同样式的表格组件。

<table class="table featured-table">
  <!-- 表格内容 -->
</table>

通过上述的方式就实现了表格样式的复用和可维护性。如果想要修改所有表格的基础样式,就只需修改表格对象.table;如果想要修改特定的表格样式,则只需要修改对应的子类样式。

 

ITCSS

ITCSS 是一种样式的分层结构,一共有七层,七个层次从上到下依次为:

  • Settings 层:通常是一些样式变量,如定义通用的颜色值、字体大小的数值等;
  • Tools 层:定义一些辅助函数、混合器(mixins)或者其他工具类。例如 SCSS 中的 @mixin 、@function;
  • Generic 层:通用基础样式,一般是对浏览器默认样式进行重置,如 normalize.css、resets 等库;
  • Base 层:对某些全局使用的元素进行通用的定制化样式,如页面的设置、ul 标签的设置等;
  • Objects 层:所有使用 OOCSS 的地方,即某些结构和样式相分离的专用类;
  • Components 层:具体的组件,其实可以对应到组件库中的每个组件;
  • Trumps 层:重写某些样式,如 height 重新设置为 100px,只会影响某一小块的 DOM 元素,权重最高,类似 ACSS,但通常会加上 !important。

一般情况会根据实际的项目去进行简化,并不是七层都是必须的 。

最后,如果这篇文章对大家有所帮助的话,希望大家一键三连!红豆泥阿里嘎多!

CSS模块化的几种常见思想,OOCSS,SMACSS,Atomic CSS,MCSS,AMCSS,BEM OOCSS 面向对象的CSS,主要思想是 “结构和设计的分离,容器和内容的分离” 简单的说就是抽象公共类,把复用度高的样式抽取出来,例如: .mt20 { margin-top: 20px } .tc { text-align: center } .abs { position: absolute } .clearfix:after { content: ‘’; displa... 阅读详情

相关推荐

前后端开发概述:架构、技术栈与未来趋势

前端框架(如 Vue.js、React)与后端(如 Spring Boot、Node.js)通过 HTTP API 或 WebSocket 进行通信,实现真正的前后端分离。这种开发方式虽然适用于小型项目,但随着应用规模的扩大,前后端的耦合度过高,导致开发和维护成本增加。全栈开发者掌握前端(Vue/React)和后端(Node.js/Spring Boot),可以独立完成完整的 Web 应用开发。早期的 Web 开发通常是前后端一体的,即后端不仅处理业务逻辑,还负责渲染 HTML 页面。

X2829352498的博客 928

2024 年排名前 5 的 CSS 框架

与传统的CSS框架不同,Tailwind CSS框架不提供预定义的组件,而是提供了一组原子化的CSS类,开发者可以通过组合这些类来创建自己的组件。最后,我们在HTML页面的底部引入了UIKit框架的JavaScript文件,以启用框架的交互功能。:Tailwind CSS框架提供了一组原子化的CSS类,开发者可以通过组合这些类来创建自己的组件,而不是使用预定义的组件。丰富的组件和工具:Bulma框架提供了丰富的预定义组件和工具,如按钮、表单、卡片、菜单等,可以帮助开发人员快速构建现代化的Web应用程序。

专注于全栈开发领域 6443

从零开始掌握Simscape Multibody:机械系统建模与仿真入门

本文为机械系统建模与仿真入门指南,详细介绍了如何从零开始使用Simscape Multibody。通过构建曲柄摇块机构的实战案例,系统讲解了刚体、关节、约束等核心模块的使用,以及模型验证、参数化设计和多领域系统集成等进阶技巧,帮助工程师和学生高效进行虚拟设计与测试。

weixin_29229261的博客 310

10个好用的的css框架

一、tailwind Tailwind CSS 是一个功能类优先的 CSS 框架,它集成了诸如flex, pt-4, text-center 和 rotate-90 这样的的类,它们能直接在脚本标记语言中组合起来,构建出任何设计。 主要特性: 组件化 体积小,性能高 响应式 传送门:tailwindcss.com/ 二、Tachyons Tachyons具备了当前流行的css框架的优点,无需自己编写大量 CSS。轻量、可定制化和拓展等。Tachyons有极其细化的原子类,只需要在类名中添加属

BYGFJ的博客 2万+

IEC61850 通信协议测试验证实战指南:从理论到实践

本文提供了一份全面的IEC61850通信协议测试验证实战指南,强调测试必须从理论走向工程实践。文章详细讲解了如何搭建测试环境,并深入剖析了MMS、GOOSE、SV三大核心协议的实战测试方法,旨在帮助工程师通过系统化的测试验证,确保电力自动化设备的互操作性与通信可靠性。

weixin_29204121的博客 171

Android双目摄像头(RGB+IR)实时预览与人脸活体检测实战指南

本文详细介绍了Android双目摄像头(RGB+IR)实时预览与人脸活体检测的实战指南。通过双摄同步预览、人脸检测与活体判断等技术实现,提升安全认证的准确性和鲁棒性。文章还提供了开发环境搭建、常见问题解决方案及性能优化建议,帮助开发者快速掌握双目摄像头在Android平台的应用。

vulkan6gpu的博客 692

10个好用的的css框架,2024年最新前端语言基础教程

大厂面试问深度,小厂面试问广度,如果有同学想进大厂深造一定要有一个方向精通的惊艳到面试官,还要平时遇到问题后思考一下问题的本质,找方法解决是一个方面,看到问题本质是另一个方面。还有大家一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。一个人可以走的很快,但一群人才能走的更远。

m0_60452141的博客 3321

大连理工大学中文情感词汇本体库(含情绪分析代码)

中文文本数据的情绪计算昨天如何对微博推文进行情绪分析(细粒度情感分析)介绍了英文的NRC情绪词典。虽然支持中文,但由于制作问题,导致并不完全适应中文场景。今天介绍大连理工大学中文情感...

大邓和他的Python 4万+

CSS 架构

css

saikuuga的博客 693

腾讯Android开发面试指南与参考答案

腾讯深圳元宝高级Android开发工程师岗位要求3-5年Android开发经验,熟悉Kotlin和性能优化,具备架构设计能力。岗位职责包括元宝Android客户端研发、稳定性优化及跨团队协作。面试重点考察Kotlin、Jetpack Compose、多线程编程等核心技术,3轮线上面试流程较快。无AI项目经验也可应聘,需突出展示Android架构设计、性能调优等实战能力。建议准备Compose开发、算法等加分项案例。

郑伟强dev的专栏 1133

Bash Shell 系统巡检脚本

部分安全相关检查需要root权限,建议通过sudo运行完整检查。

老韩的Linux云计算架构师进阶之路 96

OOCSS是什么?关于OOCSS的介绍

定义:OOCSS(Object Oriented CSS)顾名思义,就是面向对象的CSS,让我们以面向对象的思想为指导,编写出可重用,可扩展,易维护的CSS样式,因此它不是一门新的编程语言或者技术,也不是新的语法,它只不过是一种书写CSS的方法和规范。OOCSS最重要的是从项目的页面中分析抽象出“对象”组件,并给这些对象创建CSS规则,最后完善出一套基础组件库,then,我们新建页面时为元素应用已有的样式规则,只须重写少量的甚至不写任何样式,就能创建一个漂亮的页面,解放双手指日可待。难道还有比这更糟的?

zy1992As的博客 525

深信服全产品线新版图标库 Visio版+PPT版【2023年最新整理】

深信服全产品线新版图标库Visio版(含网络位置符号以及其他网络设备和外设图标)有朋友想要我整理一下深信服的相关图标,那么今天,瑞哥给老铁们整理了。运维漫谈是瑞哥针对运维领域的一个公众号,欢迎大家的关注哦!篇幅原因,就只展示那么多,有需要的朋友自行下载。SANGFOR 各产品图标-Visio版。你好,这里是网络技术联盟站。SANGFOR全产品线图标。深信服设备前置面板-AC。

网络技术联盟站 3696

Vue3 企业级优雅实战 - 组件库框架 - 4 组件库的 CSS 架构

ITCSS 分层非常细致,咱们组件库的样式在其基础上进行了简化,省略了 Base 层 或 Objects 层。而对于 Trumps 层,咱使用 ACSS 来替代,对于 Components 层,里面的每个组件内部又使用 BEM。这一层可以在组件库中省略,在各个具体的应用中引入对应css。Base 主要是存放部分重置样式的自定义,如 html、body、section 等,这部分咱们暂时没有自定义的内容,就无需编写了。通常是对浏览器样式的重置,统一 HTML 标签在不同浏览器中的展示,屏蔽浏览器间的差异。

jh035的博客 807

基于唤醒音频的目标说话人语音识别系统设计报告

摘要 本报告设计了一套基于唤醒音频的目标说话人语音识别系统,通过五级流水线架构(唤醒检测→声纹注册→语音分离→目标ASR→拒识决策)解决复杂声学场景下的目标说话人识别问题。系统整合ECAPA-TDNN声纹模型、Conv-TasNet语音分离网络和Whisper ASR引擎,在L20 GPU上实现高效端到端推理,支持-5dB~5dB SNR范围和0~100%重叠率的双人语音场景处理。系统在目标说话人CER、拒识率和推理效率等关键指标上均达到设计目标,为智能语音交互提供了有效的身份感知解决方案。

huanghm88的专栏 73

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

学习Java第68天,MVC架构模式理论简介

用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。实体类包(pojo /entity /bean) 专门存放和数据库对应的实体类和一些VO对象。数据库访问包(dao/mapper) 专门存放对数据库不同表格CURD方法封装的一些类。在前后端分离的项目中,后端已经没有视图文件,该层次已经衍化成独立的前端项目。存放和数据库对象的实体类以及一些用于存储非数据库表完整相关的VO对象。MVC模式下,项目中的常见包。

m0_74353846的博客 308

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

网页开发入门:CSS与JS基础及BS/CS架构解析

在数字化时代,网页开发和软件架构是IT领域的基础技能。本文将带您了解网页开发的核心技术——CSS和JavaScript,并解析两种主要的软件架构模式:BS架构和CS架构,帮助您建立对现代软件开发的基本认知。CSS(层叠样式表)是用于描述网页表现样式的语言,它控制着网页的视觉呈现,包括布局、颜色、字体等各个方面。JavaScript是一种轻量级、解释型的编程语言,主要用于网页交互功能实现,如今已发展成为全栈开发语言。CSS和JavaScript是网页开发的基石,而BS和CS架构是软件系统的两种基本组织形式。

linjinpeng0819的博客 889

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Vue.js start

Vue.js start 前端框架发展历史 html html [1990]----> html5 [2008.1.12] css css 1.0 1996 css 2.0 1998 css 3.0 2001 EcmaScript 1997年诞生 2015 EcmaScript 2015 2016 EcmaScript 2016 ...

weixin_45549481的博客 273

今日-Vue框架

Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。Vue 的核心是一个响应的数据绑定系统,它让数据与 DOM 保持同步非常简单。Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。它不仅易于上手,还便于与第三方库或既有项目整合。Vue 也被称为渐进式框架,因为它可以自底向上逐层应用,适用于不同的项目规模和需求,从简单的页面到复杂的单页应用。

yf3241610146的博客 1336

HTML&CSS

一、web的基本概念 1.1 软件架构 分为C/S架构与B/S架构两种 C/S:Client/Server 客户端/服务器端,在用户本地有一个客户端程序,在远程有一个服务器端程序 优点:用户体验好 缺点:开发、安装,部署,维护 麻烦 B/S:Browser/Server 浏览器/服务器端,只需要一个浏览器,用户通过不同的网址(URL),客户访问不同的服务器端程序 优点:开发、安装,部署,维护 简单 缺点:如果应用过大,用户的体验可能会受到影响。对硬件要求过高 1.2 资源分类 ...

weixin_44252634的博客 257

前端架构知识体系:css架构模式和代码规范

本文系统解析了五种主流CSS架构模式:OOCSS(面向对象CSS)、BEM(块元素修饰符)、SMACSS(可扩展模块化架构)、ITCSS(倒三角CSS)和原子化CSS。每种架构各有优缺点,如BEM命名规范严格但类名冗长,ITCSS层次清晰但学习成本高。推荐混合使用BEM和ITCSS,结合原子化CSS提升效率。选择架构需考虑项目规模、团队协作等因素,最终目标是实现代码的可预测性、复用性、可维护性和可扩展性。团队共识和规范执行比具体架构更重要。

用于分享前端相关的知识和架构体系 1134

前端CSS架构模式,BEM与ITCSS

本文将重点介绍两种业界广泛认可的CSS架构模式:BEM和ITCSS,探讨它们各自的优缺点及适用场景。重要的是建立和遵循一套统一的CSS规范,这才是提高代码质量的关键。ITCSS的核心思想是使用从宽泛到具体的层次结构,确保样式的权重按预期叠加。1. **清晰的层级关系**:通过命名就能直观看出元素间的从属关系。3. **团队协作**:ITCSS的标准分层有助于多成员协同。2. **避免样式污染**:严格的命名规范防止了样式冲突。2. **大型复杂项目**:推荐ITCSS+BEM组合。

2509_93945728的博客 743

前端开发者CSS架构模式终极指南:SMACSS、OOCSS、BEM实践

在现代前端开发中,CSS架构模式是构建可维护、可扩展样式系统的核心。本文将深入解析三大主流CSS架构模式——SMACSS、OOCSS和BEM,帮助开发者掌握前端样式组织的最佳实践,提升代码质量和开发效率。 ## 为什么需要CSS架构模式? 随着前端项目规模的增长,CSS代码往往会变得难以维护:样式冲突、代码冗余、命名混乱等问题层出不穷。CSS架构模式通过规范化的命名约定和组织方式,解决这些痛点

gitblog_02893的博客 395

AriaNg CSS架构模式:OOCSS与ITCSS应用

你是否正在维护一个样式混乱、组件复用困难的Web项目?是否经历过修改一处样式导致全局布局错乱的"蝴蝶效应"?AriaNg作为现代化的aria2前端管理工具,通过融合OOCSS(面向对象CSS)与ITCSS(倒三角CSS)架构模式,构建了一套可扩展、易维护的样式系统。本文将深入剖析AriaNg的CSS架构设计,带你掌握大型Web项目的样式组织方法论。 读完本文你将获得: - OOCSS与ITCSS...

gitblog_01077的博客 344

浅谈CSS代码管理OOCSS、SMACSS、BEMCSS三种设计模式

为什么80%的码农都做不了架构师?>>> ...

weixin_33955681的博客 264

什么是MVC架构模式?它在前端开发中如何应用?

虽然React、Angular和Vue各有不同的实现方式,但它们都可以通过合理的设计来实现MVC架构。React依赖于状态管理库来处理模型部分,Angular内置了完整的MVC支持,而Vue则通过数据绑定和组件化来实现类似的功能。总体而言,MVC模式适合需要高度分工和团队协作的项目;

破损的天堂鸟博客 1137
上一篇: VitePress使用教程
下一篇: NGINX命令及配置
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值