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

为什么初学者在学习CSS时容易误用BEM中的Element定义?

小明大大_9545

小明大大_9545

发布时间:2026-07-04 12:17:06

|

852人浏览过

|

来源于php中文网

原创

BEM中Element命名严禁嵌套,__仅表示元素直接归属Block而非DOM层级;menu__item__icon等写法破坏工具链、语义断裂,正确做法是menu__icon或拆分为独立Block。

为什么初学者在学习css时容易误用bem中的element定义?

初学者误用 BEM 的 Element,核心原因不是记不住语法,而是把 HTML 结构层级直接映射到类名层级——card__header__title 这种写法看似“结构清晰”,实则违反 BEM 本质。

把 __ 当成 DOM 嵌套深度标记

看到三层 DOM 就写三层 __,比如 menu__item__icon,这是最典型的认知偏差。__ 不是“路径分隔符”,它只表示“这个元素**直接属于**某个 Block”。哪怕 DOM 是 <menu><item><icon></icon></item></menu>,合法命名仍是 menu__icon。

  • menu__item__icon 会让工具链(Sass &__icon、PostCSS 插件、IDE 跳转)完全失效
  • 团队成员无法判断 icon 是属于 menu 还是 item,语义断裂
  • 一旦 icon 需要在 user-card 中复用,就得硬改类名或复制样式,失去可维护性

混淆 Element 和 Modifier 的语义边界

把状态、位置、外观变化塞进 Element 名里,比如 btn__icon-left 或 card__title-highlighted,本质是让 Element 承担了 Modifier 的职责。

  • btn__icon 描述“按钮里的图标”——这是结构归属;btn--icon-left 描述“按钮整体采用左图标布局”——这是变体
  • card__title--highlighted 违反 BEM 三段式:Modifier 只能修饰 Block 或 Element,不能修饰另一个 Modifier,更不该让 Element 自带状态
  • JS 直接操作 card__title--highlighted 会导致状态失控——其他 card__title 也被影响,且无法被 card--collapsed 正确覆盖

没意识到 Element 必须有独立样式职责

很多初学者给所有容器都加 __,比如 card__content__body__text,但真正该存在的 Element,必须满足:可复用、有明确样式边界、参与 Modifier 响应。

PigX UI 前端开发
PigX UI 前端开发

PigX UI Pro 前端开发指南 - Vue 3 + TypeScript + Element Plus。当用户提到 PigX UI、PigX 前端、lgb-mgui 项目、Vue 3 企业级后台开发、Element Plus 后台开发时使用此技能。

下载

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

  • card__content 合法,因为它通常控制 padding/overflow 等布局属性
  • card__content__body 很可能非法——如果它只是个包裹 <p> 的 div,没独立样式、没变体、不参与状态响应,就该删掉类名,用标签选择器或继承处理
  • 判断标准很直白:这个东西能不能脱离当前 card 单独存在?能,就是 Block(如 heading);不能,才是 Element

用单下划线 _ 替代双下划线 __

_ 在 BEM 中不是替代方案,它是禁用符号。写成 card_header 或 form_input,等于主动关闭所有自动化支持。

  • Sass 的 &__header 不会匹配 card_header,编译后类名丢失
  • stylelint-bem 插件静默跳过,问题拖到运行时才暴露
  • IDE 类名跳转失败,搜索 header 会漏掉 card_header,重构时不敢批量替换

真正难的不是记住 __ 和 -- 的拼写,而是在写第一个类名前,停下来问一句:“它有没有资格独立存在?” 答错一次,后面就会多一层耦合、多一个工具链断点、多一次团队理解偏差。

热门AI工具

更多
蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

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

PixPix
PixPix Hot

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

DeepSeek

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

立刻MV
立刻MV Hot

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

WorkBuddy

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

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

豆包大模型

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

相关专题

更多
css
css

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

4136

2023.06.15

css居中
css居中

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

917

2023.07.27

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

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

1778

2023.07.28

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

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

3266

2023.08.01

css字体颜色
css字体颜色

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

6485

2023.08.10

什么是css
什么是css

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

5511

2023.08.10

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

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

1897

2023.08.21

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

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

2611

2023.08.22

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

0

2026.09.30

热门下载

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

精品课程

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

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 5.8万人学习

CSS教程
CSS教程

共754课时 | 95.4万人学习

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

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