CSS如何实现语义化样式编写_使用BEM规范提升命名直观性

直接用 .header 或 .btn 会埋坑,因其未体现组件归属、层级与状态,导致协作中不敢修改、滥用 !important;应采用 BEM 三段式命名,如 .user-profile__btn--disabled,明确 Block、Element、Modifier 职责。为什么直接用 .header 或 .btn 会埋坑因为这些名字不说明"它在哪儿、属于谁、什么状态",团队协作时,没人敢轻易改。比如一个 .btn 在登录页是蓝色,在弹窗里却是红色,但样式表里找不到上下文,最后只能加 !important 硬盖,越盖越乱。真正的问题不是命名不够"高级",而是没把组件的层级关系和功能边界写进类名里。避免孤立命名:不写 .card,而写 .user-profile__card ------ 明确这是用户资料模块下的卡片状态必须显式表达:禁用按钮不是 .btn--disabled,而是 .user-profile__btn--disabled,防止跨模块误复用修饰符(Modifier)只用于变体,不用于布局定位:用 .user-profile__avatar--large 可以,但不用 .user-profile__avatar--top-left(那是布局职责,该交给 margin 或 grid-area)BEM 的三段式怎么拆解才不僵硬BEM 是 Block__Element--Modifier,但很多人卡在"哪个算 Block"------其实 Block 就是能独立存在、有明确语义的最小可复用单元,比如 search-form、product-list,而不是页面级的 homepage。Block:名词,首字母小写,中划线分隔,如 nav-menu、price-tagElement:必须依附于 Block,用双下划线连接,如 nav-menu__item、price-tag__currency;不能嵌套,nav-menu__item__icon 是错的Modifier:用双短横,只描述状态或外观变体,如 nav-menu__item--active、price-tag--on-sale;不写 --mobile 这类设备相关修饰符(响应式该用媒体查询)示例:一个带图标的搜索框立即学习"前端免费学习笔记(深入)";.search-input { /* Block 样式 */}.search-input__field { /* Element,输入框本身 */}.search-input__icon { /* Element,图标容器 */}.search-input--compact { /* Modifier,紧凑模式 */}遇到嵌套组件时,BEM 怎么避免类名爆炸真实项目里常有 user-card 里嵌 avatar 和 stats-bar,如果都按 BEM 展开,类名会变成 user-card__avatar__img ------ 这违反了 BEM 原则,也失去语义。 Tellers AI Tellers是一款自动视频编辑工具,可以将文本、文章或故事转换为视频。

相关推荐
满怀冰雪25 分钟前
24-PaddleClas 模型评估、导出与推理部署入门
大数据·人工智能·python·深度学习·paddle
DeepVisionary6 小时前
谷歌 Gemini Omni 1.1 Flash 正式发布:4K 视频、40 秒场景延伸,视频生成进入按 token 计费时代
python·自动化
zlwool6 小时前
图纸管理选型避坑指南
数据库·erp·设备erp·非标机械
阡之尘埃6 小时前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
海兰7 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(三)
javascript·python·金融
cvcode_study7 小时前
Ollama+ComfyUI 多模态
大数据·人工智能·python
小灰灰搞电子7 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
星核0penstarry8 小时前
试一试用gr.Workflow把AI多步骤串联变成可视化画布
人工智能·python·ai作画·api·ai编程·工作流·api聚合平台
taller_20008 小时前
【005】PiE 与传统 VBA 的核心区别
python·vba·pie·py
海兰8 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(一)
javascript·python·金融