如何在使用CSS Grid布局时应用BEM规范进行结构化命名?

秋婷姑娘_7806

秋婷姑娘_7806

2026-07-01

564人浏览

原创

grid容器必须按业务职责命名而非技术实现,如dashboard-grid;每个grid-area对应子元素需带完整bem路径;内层复杂模块须升格为独立block;响应式仅调整grid-template-areas,不改类名。

如何在使用css grid布局时应用bem规范进行结构化命名?

Grid容器必须作为独立Block命名,不能叫grid-container

Grid只是实现手段,不是语义。用grid-container或layout这类名字等于把技术细节塞进HTML,换用Flex或重构时类名就失效,还掩盖了它到底承载什么业务模块。

正确做法是按业务职责起名:dashboard-grid、editor-container、product-card-list。这些名字能被搜索定位、支持复用判断、明确表达模块边界。

  • 禁止全局复用.grid工具类——不同模块的gap、justify-content、断点极易互相覆盖
  • 视觉分组区域(如.section-2)不具备复用性与独立状态,不该升格为Block
  • .dashboard-grid的CSS规则里只写display: grid、grid-template-areas和轨道定义,不掺杂背景色、padding等业务样式

每个grid-area对应子元素必须带完整BEM路径

不能只靠grid-area: header把内容“扔进”区域,就认为样式归属自动转移。BEM要求语义锚点落在HTML类名上,否则调试时搜不到源头,改样式时不敢动。

header区域的内容必须写成<header class="dashboard-grid__header"></header>,而不是<div class="header">。 <ul> <li>✅ 正确:<code>dashboard-grid__header、dashboard-grid__sidebar、dashboard-grid__main-content

  • ❌ 错误:header(孤立类名)、dashboard-grid__header__title(三层嵌套,违反BEM元素不嵌套原则)
  • 禁止用grid-column: 1 / -1强行撑满区域——这会破坏dashboard-grid__header的视觉边界,后续加border或box-shadow时容易变形
  • 内层Grid必须升格为独立Block,不能作为__子元素

    如果dashboard-grid__main-content里还要放一个卡片列表,且该列表本身有响应式重排、加载态、空状态等逻辑,它就不再是“主内容区的一个部分”,而是一个具备独立职责的模块。

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

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

    下载

    BEM明确禁止dashboard-grid__main-content__card-grid这种写法。三层嵌套既难读又难维护,也违背“一个块一个职责”的前提。

    • 正确做法:把内层也视为独立Block,命名为card-grid,内部元素用card-grid__item、card-grid__loading等
    • HTML结构就是:<div class="dashboard-grid__main-content"><div class="card-grid"></div></div>
    • 禁止在父块CSS中写.dashboard-grid__main-content .card-grid——这引入隐式依赖,违背BEM“样式只属于一个块”的原则

    响应式只改grid-template-areas,不重命名类

    BEM类名描述的是语义角色,不是视觉位置。移动端把sidebar挪到main下面,不意味着要改成dashboard-grid__main-sidebar。

    保持类名不变:dashboard-grid__sidebar仍是sidebar,只是媒体查询里改它的grid-area值;如果sidebar在移动端变成抽屉,可用修饰符:dashboard-grid__sidebar--drawer。

    • 真正该动的是CSS中的grid-template-areas字符串,比如从"header header" "sidebar main"改成"header" "main" "sidebar"
    • 不用dashboard-grid__sidebar-mobile这类带设备词的类名——设备不是语义,状态才是
    • 所有grid-area值必须与HTML中对应元素的BEM类名严格一致,否则布局和样式将脱节
    实际落地时最容易忽略的,是把内层复杂模块硬塞进父块的__命名空间里——看起来省事,但很快就会卡在状态管理、样式隔离和组件复用上。BEM不是为了多写几个下划线,而是让每个模块的职责和边界在类名里一目了然。

    前端入门到VUE实战笔记:立即使用
    在学习笔记中,你将探索 前端 的入门与实战技巧!

    相关专题

    更多
    css
    css

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

    2023.06.15

    4996

    6

    css居中
    css居中

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

    2023.07.27

    1077

    5

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

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

    2023.07.28

    1958

    6

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

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

    2023.08.01

    3846

    7

    css字体颜色
    css字体颜色

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

    2023.08.10

    7885

    11

    什么是css
    什么是css

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

    2023.08.10

    6671

    7

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

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

    2023.08.21

    2217

    9

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

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

    2023.08.22

    3191

    5

    css禁止点击事件
    css禁止点击事件

    实现css禁止点击事件的方法有使用CSS的pointer-events属性和使用JavaScript禁用点击事件。本专题为大家提供点击事件相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.23

    2793

    5

    热门下载

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

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局

    共19课时 | 2.7万人学习

    从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局

    共19课时 | 2.7万人学习