BEM类名通过block__element--modifier三层结构实现精准搜索,如搜header__logo不会误中footer__logo;必须以具象block开头、element描述功能、modifier依附完整结构,禁用非BEM混用和样式描述,配合编辑器全字匹配可秒定位。
为什么BEM类名能让你在编辑器里Ctrl+F秒找到组件
因为BEM强制把语义拆解成
三层结构,搜索
不会误中
或
——类名自带上下文,不是靠猜、不是靠全局搜“logo”再逐个点开确认。
常见错误是写成
却在别处又用
单独出现,破坏唯一性;或者用
这种非BEM命名混在BEM体系里,一搜
就跳出二十个不相关结果。
所有组件级类名必须以
开头,且
名需具象(如
,不用
)
只描述功能角色(
、
),不描述样式(避免
)
必须依附于完整
使用,禁止单独写
如何让VS Code搜索不漏掉嵌套元素和修饰符
默认正则搜索
可能跨行失效,而BEM的连字符结构反而适合字面量精确匹配。关键是利用编辑器的“全字匹配”+“区分大小写”,直接搜
就能锁死目标,不用开正则。
容易踩的坑:CSS预处理器里用了嵌套语法(如Sass),但编译后类名没变,搜索时却误以为嵌套层级会影响类名结构;其实只要最终生成的CSS里是
,搜索就有效。
立即学习
“
前端免费学习笔记(深入)
”;
VS Code里按
(Mac)或
(Win),勾选
和
搜索
比搜
快10倍,且零误报
如果项目用了CSS Modules,确保搜索的是
生成的实际类名(如
),而非源码里的
BEM命名冲突的真实场景:什么时候该加命名空间
当多个独立团队共用一个CSS文件,或微前端子应用注入样式时,
这种通用
名极易撞车。这时不能靠“大家自觉”,得靠硬性前缀。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
比如营销页和后台管理都用
作为
,结果
样式互相覆盖。解决方式不是改语义,而是加业务域前缀:
和
。
前缀建议用小写字母+短横线,长度控制在2~3个词(
,不用
)
避免用技术词作前缀(如
),换成业务词(
)
Webpack或Vite构建时可通过
的
自动注入前缀,但前提是源码类名已规范
从HTML结构反推BEM类名是否合理
打开浏览器开发者工具,看DOM节点上的类名:如果一个
同时有
、
、
,说明
是
,其余是它的
——结构对齐,搜索才可靠。但如果看到
和
混用,就是命名断裂,搜索
会漏掉
里的逻辑。
性能影响很小,但可维护性断崖下跌:IDE无法智能跳转到
对应的CSS规则,因为预处理器或PostCSS插件只认标准BEM格式。
检查DOM时重点关注是否有“孤立项”——即出现
但父级没有对应
(如只有
没
)
用Prettier或Stylelint配置
规则,在保存时自动报错
如果用了Web Components或Shadow DOM,BEM类名仍要保持完整,因为外部搜索不穿透Shadow边界
真正难的不是写对第一个
,而是坚持不让任何一个人在某次紧急上线时悄悄写个
类名——那一个例外,就会让整个项目的搜索可信度归零。
block__element--modifierheader__logofooter__logologo-iconuser-card__avatar--largeavatar-largebtn-primarybtnblockblocksearch-formform__element__input__submit__red-text--modifierblock__element--disabledheader.*logoheader__logo.header__logoCmd+FCtrl+FMatch CaseWhole Wordcard__title--highlightedhighlightedlocalIdentNameCard_title__abc123card__titlebuttonblocktableblocktable__rowmarketing-table__rowadmin-table__rowauth-formauthentication-form-componentreact-buttoncheckout-buttoncss-loaderlocalIdentNamedivcardcard__headercard__bodycardblockelementcard-headercard__bodycard-headercard__bodycard-header__elementblock__footerpageselector-bem-patternblock__elementquick-fix