千家信息网

千家信息网

  • 首页
  • 网络安全
  • 互联网科技
  • 开发技术
  • 数据库
  • 服务器
  • IT手机
  • 安卓手机软件
  • 苹果手机软件
  • 电脑软件新闻
  • IT资讯
  • 茶饮趋势

请输入关键字词

热门搜索排行

最新搜索排行

导航: 首页 > 开发技术 >

CSS架构中的SMACSS该如何理解

发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,这期内容当中小编将会给大家带来有关CSS架构中的SMACSS该如何理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。因为 CSS 只有一个作用域,如果不注意维护 C
千家信息网最后更新 2025年11月15日CSS架构中的SMACSS该如何理解

这期内容当中小编将会给大家带来有关CSS架构中的SMACSS该如何理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

因为 CSS 只有一个作用域,如果不注意维护 CSS 代码,则会导致我们写的代码难于阅读和维护,于是我们借助网页本身是有层次的,抽象出来了BEM 方法论。

BEM 简单的三层分法,在应对小中型网站没有问题,但是去应对复杂网站的样式可能就比较困难了,我们需要寻求一个更好的办法。

于是 SMACSS 横空出世了, SMACSS 和 BEM 的关系有点像布局中的 Flex 布局和 Grid 布局的关系。

但是请注意, SMACSS 和 BEM 之前绝不是包含和被包含的问题,就像在应用 Flex 布局和 Grid 布局的时候,铺网站结构我们会更多倾向 Grid,普通简单的二维布局则会采用 Flex,我们会在合适的时机采用合适的方法,SMACSS 和 BEM 也差不多,掌握了思想,应用都是小事。

什么是 SMACSS

不难想到,SMACSS 是缩写,这个缩写就是网站的开门注 :Scalable and Modular Architecture for CSS,名字的意思很明确就是要编写模块化、结构化和可扩展的 CSS。

当你学完 SMACSS,再来理解 Scalable and Modular Architecture for CSS 体会就更深了。

SMACSS 应该怎么读,SMACSS 虽然不是一个单词,但是它是有自己的发音的,音同单词 {smacks}。

SMACSS 的分类

如果给 BEM 找个核心词,那就是分层,如果给 SMACSS 也找个核心词,那肯定就是分类,一字之差,我们来看看 SMACSS 如何进行分类的。

SMACSS 的核心是分类,具体把项目的样式分为了五类:

  • Base(基础)

  • Layout(布局)

  • Module(模块)

  • State(状态)

  • Theme(主题)

接下来我们具体看看五个部分具体的内容。

Base

基础(Base)规则里一般放置默认样式。这些默认样式基本上都是元素选择器,不过也可以包含属性选择器,伪类选择器,孩子选择器,兄弟选择器。本质上来说,一个基础样式定义了元素在页面的任何位置应该是怎么样的。

例如:

html {    margin: 0;    font-family: sans-serif;}a {    color: #000;}button {    color: #ababab;    border: 1px solid #f2f2f2;}

我们看到 Base 的代码和 CSS resets 非常的相似。

这部分的代码一般我们都是寻求 Normalize.css 或 sanitize.css 的帮助,而不需要自己完成。

Layout

我们先来区分下网站什么部分属于 Layout 什么部分属于 Module,看看下面这个网站截图:

先来一次大致的划分,主要包括头部、体部、尾部等,这些就是属于 Layout 的。

再来一次细致的划分,Layout 里面的元素还可以继续细分,例如导航栏等,这些都是组件 Module。

Layout 很贴近 HTML 标签,作为网站的骨架,负责布局,Module 更多负责业务展示和交互的部分。

Layout 与 Module 的关系为( > 表示包含):

Layout > Module

如果网站复杂,其实是可以这样的:

> Layout > Module > Layout > Module ...

所以,布局(Layout)规则就是将页面拆分成几个部分,每个部分都可能有一到多个模块。

一般布局类名都是 .l- 开头。

需要注意,官方讲主要的 layout 使用可以使用 ID 选择器,次要的 layout 采用类选择器,对于这个我是绝对不能接受的,我认为应该全用类。

走个实例:

.l-header {}.l-primarynav {}.l-main-content {}

注意,其实现在项目开发,Layout 往往直接被当做组件直接使用了,例如 、

等组件,然后你可以在他们内部去遵循 Module 规则。

Module

看完上一节,Module 就很容易理解了。

模块(Module) 是我们的设计当中可重用,可模块化的部分。插图,侧边栏,产品列表等等都属于模块。

Module 从工程化的角度,你叫它 component 也没多大问题。

走个实例,一个 POST 组件:

类名很简单,以 moudle-name 或 component-name 作为前缀就行了。

State

对于 Module 甚至是 Layout,里面不可避免需要动态交互,比如按钮是不是禁用 disable,布局是不是激活 active,tab 组件是不是展开 expand 等,于是我们需要维护 state 来操作动态变化的部分,这就是第四个部分 State。

State 的类名,一般使用 .is- 来开头,例如:

.is-collapsed {}.is-expanded {}.is-active {}.is-highlighted {}.is-hidden {}.is-shown {}.is-successful {}

Theme

大家多多少少都用过网站的换肤功能,所以 Theme 也算比较常见的了,整个网站上重复的元素,比如颜色、形状、边框、阴影等规则基本都在 Theme 的管辖下,换句话说 Theme 是定义公共类名的地方。

大多数情况下,。我们不想每次创建它们时都重新定义它们。相反,我们想要定义一个唯一的类,我们稍后才将其添加到默认元素中。

.button-large {    width: 60px;    height: 60px;}

不要将这些 SMACSS 主题规则与基本规则混淆,因为基本规则仅针对默认外观,并且它们往往类似于重置为默认浏览器设置,而主题单元更像是一种样式,它提供最终外观,这种特定的配色方案是独一无二的。

如果站点具有多个样式或多个用于不同状态的主题,主题规则也很有用,因此可以在页面上的某些事件期间轻松更改或交换,例如使用主题切换按钮。至少,它们将所有主题样式保存在一个地方,因此您可以轻松更改它们并保持它们井井有条。

SMACSS 目录

项目中使用了 SMACSS 的命名规范,目的大概就是这样的:

因为 CSS 只有一个作用域,会导致代码很混乱,很难阅读,也很难扩展,于是出现了BEM ,但是当项目更加复杂的时候,我们需要一个新的更上一个台阶的样式管理方案,这就是 SMACSS ,不用于 BEM 的分层,它把采用的办法是分类,项目中的样式文件被它分为五类,让我样式管理变得更加的方便了。

css的基本语法是什么

css的基本语法是:1、css规则由选择器和一条或多条声明两个部分构成;2、选择器通常是需要改变样式的HTML元素;3、每条声明由一个属性和一个值组成;4、属性和属性值被冒号分隔开。

上述就是小编为大家分享的CSS架构中的SMACSS该如何理解了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

很赞哦!
样式 布局 就是 网站 规则 选择 主题 部分 元素 模块 代码 组件 项目 分类 属性 复杂 个部 内容 基础 多个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海班图网络技术公司 长城国产化服务器热备盘的设置 读32计算机网络技术好吗 学校网络安全实施方案免费下载 服务器芯片安全 dsa 软件开发 网信网络安全问题 数据库防火墙技术其优缺点 古剑奇谭木语人官网服务器是哪些 medline英文数据库 软件开发税率是多 武汉软件开发996光谷社区 在数据库的安全控制系统 赛季服服务器阶段 游戏软件开发是什么 软件开发文档怎么写 ios社交软件开发源码 中国科技软件开发公司 甘肃服务器维修维保虚拟主机 服务器 应用类型 保通科讯网络技术 如何用软件开发客户 派出所网络安全检查实施方案 e7服务器cpu玩游戏怎么样 数据库 布尔量 怎么把数据下载到内网服务器 联想服务器命令看序例号 重庆惠普服务器维修调试价格 软件开发人员分配体系 奉贤区环保网络技术哪家强

扫描关注千家信息网微信公众号,第一时间获取内容更新动态

转载请说明来源于"千家信息网"

本文地址:https://www.qianjiagd.com/a68232

  • 上一篇

    Shiro的特性是什么

    这篇文章主要介绍"Shiro的特性是什么",在日常操作中,相信很多人在Shiro的特性是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Shiro的特性是什么"的疑惑

  • 下一篇

    Web安全解析Boolean注入攻击原理的示例分析

    这篇文章主要为大家展示了"Web安全解析Boolean注入攻击原理的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Web安全解析Boolean注入

相关文章

  • PHP中session会话操作技巧有哪些
  • PHP类相关知识点有哪些
  • VS2008无法直接查看STL值怎么办
  • php版微信公众平台之微信网页登陆授权的示例分析
  • 中高级PHP程序员应该掌握什么技术
  • CI框架出现mysql数据库连接资源无法释放怎么办
  • ajax跨域访问报错501怎么办
  • 什么是RPC框架
  • .net mvc超过了最大请求长度怎么办
  • php分页原理的示例分析
  • 站长推荐
  • 点击排行
recovery是什么意思?电脑开机重启显示recovery蓝屏怎么办recovery是什么意思?电脑开机重启显示recovery蓝屏怎么办
  • 怎么在Linux中配置SSH和Xshell远程连接服务器

    怎么在Linux中配置SSH和Xshell远程连接服务器

  • VS2008无法直接查看STL值怎么办

    VS2008无法直接查看STL值怎么办

  • 什么是RPC框架

    什么是RPC框架

  • .net mvc超过了最大请求长度怎么办

    .net mvc超过了最大请求长度怎么办

java怎么实现try/catch异常块java怎么实现try/catch异常块
  • PHP中如何处理上传文件

    PHP中如何处理上传文件

  • php中require_once报错的解决方法

    php中require_once报错的解决方法

  • PHP如何编写学校网站上新生注册登陆程序

    PHP如何编写学校网站上新生注册登陆程序

  • php中微信公众号开发模式的示例分析

    php中微信公众号开发模式的示例分析

在vmware esxi6.5中将硬盘驱动类型由HDD变为SSD类型在vmware esxi6.5中将硬盘驱动类型由HDD变为SSD类型
  • Vue中的匿名插槽与具名插槽是什么
  • vue3与vue2的区别以及vue3的API用法介绍
  • 录制的横屏视频怎么变成全屏竖屏(录制的横屏怎么变竖屏)
  • qq群作业里为什么图片上传不了(qq群作业照片传不上去)
  • vscoder如何关闭错误提示
  • 百度网盘PDF怎么转换成Word格式 PDF转Word操作教程
  • 老年机号码拉黑怎么解除(老年机号码拉黑怎么解除)
  • 京东以旧换新评估价和实际一样吗(京东以旧换新估价和成交价一样吗)
拼多多注销后可以重开新用户吗(拼多多注销后重开算新用户吗)拼多多注销后可以重开新用户吗(拼多多注销后重开算新用户吗)

标签云

    数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库安全章节测试 华大基因数据库安全性 数据库es安全性测试工具 数据库与云安全 微生物安全数据库 数据库个人信息安全吗 安全数据库降级 黑龙江数据库安全防护系统 数据库安全性实验例题 在国家公共安全数据库有记录

猜你喜欢

  • 微信登录加载联系人失败怎么弄(微信加载联系人失败 点击重试)
  • 华为手机按键震动在哪设置关掉 按键振动怎么取消方法
  • 陌陌无限注册教程(怎么注册陌陌新号)
  • 微信看不到朋友圈不显示一条横线(微信看不到朋友圈只有一条横线)
  • win10开机蓝屏终止代码SYSTEM_SERVICE_EXCEPTION的解决方法
  • VS2008无法直接查看STL值怎么办
  • 快影怎么把视频弄成横屏播放 制作方法分享
  • 支付宝双v会员的利弊(支付宝双v会员的利弊)
  • 拼多多的多多支付怎么解绑银行卡(拼多多的多多支付怎么解绑银行卡)
  • 怎么将苹果手机中录音发给好友 iPhone传语音文件方法教程
  • 微信公众号
  • 我的微信

站点声明:

所有文章未经授权禁止转载、摘编、复制或建立镜像,如有违反,追究法律责任。

Copyright © 2009-2025 千家信息网 All Rights Reserved. 网站地图 关于我们 联系我们

0