前端命名规范之 BEM 入门与实践 📅 发布时间:2026/7/3 3:46:58 👁️ 浏览次数: 前端命名规范之 BEM 入门与实践让 CSS 类名更有语义、更易维护 —— BEM 命名方法论详解 为什么需要 BEM在传统 CSS 开发中随着项目体积增大类名冲突、样式覆盖、维护困难等问题逐渐暴露。BEMBlock Element Modifier应运而生它是一种组件化的 CSS 命名方法论旨在提高代码的可读性、可维护性和可扩展性。 BEM 核心概念BEM 将 UI 划分为三个层级层级含义示例Block独立、可复用的组件容器.header,.menu,.buttonElementBlock 的子元素依赖于 Block.menu__item,.button__iconModifier改变 Block / Element 的外观或状态.button--primary,.menu__item--active✍️ 命名语法规则BEM 使用以下命名约定Block.blockElement.block__element双下划线__Modifier.block--modifier或.block__element--modifier双连字符--✅ 正确示例!-- Block: search-form --formclasssearch-form!-- Element --inputclasssearch-form__input/!-- Element Modifier --buttonclasssearch-form__button search-form__button--primary搜索/button/form.search-form{/* ... */}.search-form__input{/* ... */}.search-form__button{/* ... */}.search-form__button--primary{/* ... */} 常见变体写法在实际项目中BEM 也有几种常见的变体风格可根据团队规范选择风格示例经典 BEM双下划线 双连字符.block__element--modifier下划线风格.block_element_modifier驼峰组合风格.block__element-modifier 推荐使用经典双下划线 双连字符视觉区分度最高IDE 智能提示也更友好。 多场景实战从文本到导航BEM 怎么拆BEM 的核心不是“长得像卡片”而是逻辑拆分。不管外观是文字、图片还是按钮都按“独立容器Block→ 组成部分Element→ 状态变化Modifier”三步走。场景一文章内容块纯文本 / 富文本样式articleclassarticleh1classarticle__title深入理解 BEM 规范/h1divclassarticle__metaspanclassarticle__author作者张三/spanspanclassarticle__date2026-07-02/span/divdivclassarticle__bodypclassarticle__paragraph article__paragraph--first首段特殊缩进不需要首行缩进。/ppclassarticle__paragraph普通正文段落字体大小 16px行高 1.8。/pblockquoteclassarticle__quote引用文本这里是引用的内容。/blockquotepclassarticle__paragraph article__paragraph--highlight这段文字有高亮背景色Modifier 控制样式变化。/p/div/article.article{max-width:800px;padding:20px;background:#fafafa;}.article__title{font-size:28px;font-weight:bold;color:#333;}.article__meta{color:#999;font-size:14px;border-bottom:1px solid #eee;padding-bottom:10px;}.article__paragraph{font-size:16px;line-height:1.8;color:#444;}.article__paragraph--first{text-indent:2em;}.article__paragraph--highlight{background:#fff3cd;padding:8px 12px;border-radius:4px;}.article__quote{border-left:4px solid #409EFF;padding-left:16px;color:#666;font-style:italic;}✅ 即使是纯文本article__paragraph--highlight也是 Modifier因为它只负责“改变这一段的外观”。场景二导航菜单结构 激活状态navclassnavulclassnav__listliclassnav__itemaclassnav__link nav__link--active首页/a/liliclassnav__itemaclassnav__link产品中心/a/liliclassnav__itemaclassnav__link nav__link--disabled关于我们暂不可用/a/li/ul/nav.nav{background:#2c3e50;padding:0 20px;}.nav__list{list-style:none;display:flex;gap:0;margin:0;padding:0;}.nav__item{padding:12px 20px;}.nav__link{color:#fff;text-decoration:none;font-size:16px;padding:4px 0;border-bottom:2px solid transparent;transition:0.3s;}.nav__link--active{border-bottom-color:#409EFF;color:#409EFF;}.nav__link--disabled{color:#666;cursor:not-allowed;pointer-events:none;}场景三用户信息标签带 VIP 角标divclassuser-cardimgclassuser-card__avatarsrcavatar.jpgalt头像/divclassuser-card__infospanclassuser-card__name王小二/spanspanclassuser-card__tag user-card__tag--vipVIP/spanspanclassuser-card__tag user-card__tag--new新用户/span/divbuttonclassuser-card__btn user-card__btn--follow 关注/button/div.user-card{display:flex;align-items:center;gap:12px;padding:16px;border:1px solid #e4e7ed;border-radius:8px;}.user-card__avatar{width:48px;height:48px;border-radius:50%;}.user-card__name{font-size:16px;font-weight:600;}.user-card__tag{font-size:12px;padding:2px 8px;border-radius:12px;background:#f0f0f0;color:#666;}.user-card__tag--vip{background:#ffd700;color:#b8860b;}.user-card__tag--new{background:#409EFF;color:#fff;}.user-card__btn--follow{background:#409EFF;color:#fff;border:none;padding:6px 16px;border-radius:4px;cursor:pointer;} 拆解心法记住这三问无论遇到什么 UI问自己 3 个问题谁是 Block→ 独立、可复用的最外层容器如.article、.nav、.user-card。谁是 Element→ 属于这个容器、不能独立存在的子部分如__title、__link、__avatar。谁是 Modifier→ 用来描述“变体”或“状态”的如--active、--highlight、--vip。⚠️关键原则Modifier 只改样式颜色、大小、显隐不改 HTML 结构。文本也一样加粗、变色、缩进统统用 Modifier 搞定。⚠️ 使用注意事项Block 必须独立Block 不应依赖父级或全局样式。Element 必须隶属于 Block不能脱离 Block 单独使用。Modifier 用于变化Modifier 只负责样式差异不改变结构。避免过度嵌套BEM 不关注 DOM 层级只关注逻辑层级。不要使用标签选择器一律用类名保证可复用性。 适用场景与不适用场景✅ 适用场景❌ 不适用场景大型多人协作项目简单的静态页面组件化开发Vue / React快速原型开发长期维护的中后台系统纯内容型官网少量样式 总结BEM 的核心思想是Block → Element → Modifier命名格式统一为block__element--modifier优势语义清晰、样式隔离、便于维护推荐结合SCSS / Less使用通过嵌套语法简化编写 BEM 不是银弹但它是一套成熟、轻量、无侵入的 CSS 组织方案。掌握它是迈向工程化 CSS的重要一步。 相关扩展BEM 官方文档CSS Modules / Tailwind CSS 对比分析大型项目 CSS 架构设计最佳实践
chatgpt品牌优化:出海品牌AI流量布局新思路 随着AI大模型成为海外用户检索、咨询品牌的核心渠道,chatgpt品牌优化已成为出海企业拓宽精准流量、提升海外品牌曝光的重要布局方向。区别于传统搜索引擎优化,这种新型品牌运营模式,核心是贴合AI内容筛选与信息核验逻辑,让品牌在智… 2026/7/3 3:44:57
创建wxWidgets应用程序 在本文中,我们将了解创建wxWidgets应用程序所需的基础知识。首先创建一个简单的示例程序,展示如何显示图标;接着通过另一个示例演示事件的使用方法;最后探讨wxWidgets应用程序中控件之间的通信机制。一个简单的应用程序首先我们创… 2026/7/3 3:44:57
大模型轻量化推理技术选型与实践指南 我不能按照该标题生成内容。原因如下:标题中涉及对特定企业家(李彦宏)的主观定性表述(如“闭源‘遗志’”),属于未经证实的价值判断,隐含贬义与戏谑色彩,不符合内容安全规范中“不得… 2026/7/3 3:42:57
VNA校准那点事——SOLT/ECal/TRL/LRM选错整批数据作废 VNA测不准,80%锅在校准。很多工程师只会"点向导下一步",遇非同轴夹具、多端口、毫米波探针台向导救不了你。 一、四种主流校准横向对比 方法 适用 优点 局限 SOLT机械校准件 同轴N/SMA/3.5/2.92 精度高、成本低 接头磨损、毫米波反射面… 2026/7/3 4:49:16
AI Agent核心架构与开发框架实战指南 1. AI Agent基础概念与核心架构1.1 什么是AI Agent?AI Agent(人工智能代理)是一种能够感知环境、自主决策并执行动作的智能实体。与传统的AI系统(如简单的聊天机器人)不同,AI Agent具备更强的自主性和目标导… 2026/7/3 4:49:16
北京华恒智信为教培行业搭建动态定编体系 一、教培机构排课与用工陷入峰谷失衡恶性循环教培行业的人力资源配置,是服务行业中用工波动最极端的类型之一,始终深陷“旺季师资紧缺、淡季人力空转”的矛盾循环,几乎覆盖学科培训、艺术培训、语言培训、职业技能培训等所有细分赛道。在周末… 2026/7/3 4:47:15
【BUG已解决】git error: external filter ‘git-lfs smudge -- %f‘ failed 解决方案 【BUG已解决】git error: external filter git-lfs smudge -- %f failed 解决方案 1. 问题描述 克隆或拉取一个使用了 Git LFS(Large File Storage)管理大文件的仓库时报错: $ git clone https://github.com/example/repo-with-lfs.git Cloni… 2026/7/3 4:47:15
09403 黄大年茶思屋榜文94期 第3题 高倍率视觉无损RAW压缩技术 黄大年茶思屋榜文94期 第3题 高倍率视觉无损RAW压缩技术 摘要:针对相机端RAW数据高倍率压缩与低复杂度、视觉无损的矛盾,本文跳出传统"通用视频编码"路径依赖,基于拜耳阵列空间相关性设计定制化轻量压缩方案,在28nm工艺… 2026/7/3 4:45:15
Hermes Agent实战指南:从零构建AI智能体,实现自动化工作流 🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 如果你正在寻找一个能真正理解你需求、帮你写代码、分析数据、甚至处理复杂任务的 AI 助手,而不是一个只会简单对话的聊… 2026/7/3 4:45:15
如何5分钟快速上手XUnity.AutoTranslator:打破语言障碍的游戏翻译神器终极指南 如何5分钟快速上手XUnity.AutoTranslator:打破语言障碍的游戏翻译神器终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而错过精彩的游戏剧情?面对日… 2026/7/3 0:01:58
3种策略管理Playnite便携版:从基础部署到高级维护的完整指南 3种策略管理Playnite便携版:从基础部署到高级维护的完整指南 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项目地址… 2026/7/3 0:05:59
2026江苏三维扫描仪定制厂家:一条很现实的分水岭——“会用”和“用对” 在江苏制造业的三维扫描项目里,有一个很容易被忽略的分界线: 👉 会用设备,不等于用对设备。 尤其在江苏GOM三维扫描仪定制厂家、江苏蔡司3D扫描仪定制厂家项目中,这条分界线会直接决定系统最终是“工具”,还… 2026/7/3 0:07:59