讲师中心 微信公众号
AI工具推荐 视频效率加速

如何区分CSS BEM中的布局Block与内容Block?

云墨大大_4168

云墨大大_4168

发布时间:2026-06-30 09:49:18

|

546人浏览过

|

来源于php中文网

原创

真正能叫Block的必须是具备独立功能、可复用、有完整样式与行为边界的内容单元;布局类如.header、.grid-container只是容器壳,不应作为Block,而.logo、.card、.user-avatar等才符合Block定义。

如何区分css bem中的布局block与内容block?

布局Block不能脱离容器结构单独存在

布局Block本质是“壳”,不是功能单元。它没有独立交互、不封装行为、也不跨项目复用,比如 .header、.main-layout、.grid-container——这些名字里带位置(header)、结构(grid)、范围(main)的,基本都属于布局层,不该作为 BEM 的 Block。

真正能叫 Block 的,必须满足:删掉它,页面就缺一个可交付的功能;它有自己完整的样式边界、JS 行为、测试用例;它能在弹窗、侧边栏、独立页面里直接复用。

  • .header 不是 Block —— 它只定义顶部区域,没语义功能,也不单独使用;但 .logo、.search-form 是 Block,它们各自可被抽到用户页、404 页、邮件模板里
  • .card-grid 不是 Block —— 它只是排列卡片的容器;而 .card 才是 Block,因为每张卡片都有标题、内容、操作按钮等完整逻辑
  • 命名含 container、wrap、section、layout 的类,大概率是布局占位符,应直接用标签选择器或 CSS Grid / Flex 布局控制,不赋予 BEM 类名

内容Block必须具备可复用的功能语义

内容Block 是业务语言,不是 DOM 语言。它回答的是“这是什么”,而不是“它在哪”或“它怎么排”。.user-avatar、.price-tag、.notification-badge 这类名字,一眼就能看出用途、状态、边界,且在多个上下文中出现过(评论区头像、订单列表头像、设置页头像),就是合格的内容 Block。

判断时盯住两点:它有没有自己的变体(.price-tag--sale)、状态(.notification-badge--unread)、交互(点击跳转、hover 展开)、样式边界(padding/margin/overflow 等)?如果没有,它大概率只是个样式钩子,不该升格为 Block。

立即学习“前端免费学习笔记(深入)”;

CSS婚礼策划服务机构宣传网站模板
CSS婚礼策划服务机构宣传网站模板

CSS婚礼策划服务机构宣传网站模板是一款适合提供婚礼策划和婚庆服务机构宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。

下载
  • .form-group 不是内容 Block —— 它只是包裹字段的容器,无独立语义;但 .input-field、.date-picker 是,因为它们各自封装输入逻辑和校验
  • .button 是内容 Block,哪怕它只渲染一个 <button> 标签;而 .btn-wrapper 不是,它只是为 margin 或 flex 对齐服务的临时壳
  • 如果某个组件在设计系统文档里被单独列出、有独立 Figma 组件、有 Storybook 示例,那它就该是一个 Block

嵌套中如何识别真正的内容Block而非布局残留

DOM 嵌套 ≠ BEM 嵌套。一个 <div class="card"><div class="card__content"><div class="user-avatar"></div></div></div> 里,.user-avatar 虽然物理上在 .card 内部,但它仍是独立 Block —— 因为它有自己的类、样式文件、事件监听,且在别处也存在。此时 .card__content 是 Element,.user-avatar 是 Block,两者共存合法。

容易踩坑的是把“视觉上在内部”当成“语义上属于内部”。只要子结构在别处出现过、有自己状态、能独立测试,就该剥离出来,而不是硬塞进父 Block 的命名空间。

  • 错误写法:.card__avatar —— 当头像也在评论区、消息气泡里复用时,这等于放弃复用能力
  • 正确写法:<div class="card"><div class="card__content"><div class="user-avatar"></div></div></div>,两个 Block 各自维护
  • 混用(mix)是官方支持的:<div class="card user-avatar user-avatar--small"> 合法,前提是 .user-avatar 确实需要在卡片内做尺寸微调,且不破坏其独立性

修饰符不能掩盖布局与内容的混淆

用 --compact、--nested 这类修饰符给布局类加变体,是危险信号。比如 .header--mobile、.grid-container--2col,看似合理,实则暴露了 Block 定义错误:真正该响应式变化的,是内容 Block 自身(.nav--collapsed、.card-grid--two-column),而不是那个空壳。

一旦发现修饰符在描述容器形态而非组件状态,就要回溯检查:这个类名是不是本该不存在?它的职责是否已被现代 CSS(如容器查询、display: grid)接管?

  • .card--fluid 错误 —— 流体宽度是布局逻辑,应由父容器控制;.card 本身只需定义内边距、圆角、阴影等固有样式
  • .card__title--truncate 正确 —— 这是标题自身的状态,影响文本溢出行为,属于内容 Block 的 Element 变体
  • 所有修饰符必须绑定到明确的 Block 或 Element 上,不能挂在 .wrapper、.container 这类无语义类上
BEM 最难的不是记住双下划线和双短横,而是每次写类名前,得停下来问一句:“它有没有资格独立存在?”——这个问题答错一次,后面就得靠 hack 补三年。

热门AI工具

更多
Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
css
css

css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

4816

2023.06.15

css居中
css居中

css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

1037

2023.07.27

css如何插入图片
css如何插入图片

cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1918

2023.07.28

css超出显示...
css超出显示...

在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

3706

2023.08.01

css字体颜色
css字体颜色

CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

7565

2023.08.10

什么是css
什么是css

CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

6411

2023.08.10

css三角形怎么写
css三角形怎么写

CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

2137

2023.08.21

css设置文字颜色
css设置文字颜色

CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

3051

2023.08.22

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

60

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 6万人学习

CSS教程
CSS教程

共754课时 | 97.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn