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

如何在CSS分页器组件中规范使用BEM命名?

小伟大大_4621

小伟大大_4621

发布时间:2026-10-22 07:53:22

|

288人浏览过

|

来源于php中文网

原创

pagination 必须是 Block,因其可独立复用、跨页面存在;页码按钮等为其 Element,命名如 pagination__item、pagination__prev;Modifier 应挂载到对应 Block 或 Element 上,如 pagination__item--current;SCSS 需避免嵌套过深导致后代选择器。

如何在css分页器组件中规范使用bem命名?

pagination 组件该定义为 Block 还是 Element

必须是 Block。pagination 是一个可独立复用、跨页面存在的功能单元:它能在商品列表页、文章归档页、API 分页响应中被原样使用,不依赖父容器语义。常见错误是写成 .page-nav 或 .pager ——前者含动词(nav),后者模糊无业务指向;也不该叫 .footer__pagination,那只是把它降级为某个 footer 的子元素,失去复用前提。

合格的 Block 名要满足两个条件:名词 + 角色,比如 pagination-controls、data-table__pagination(若仅用于表格内且不外泄)或直接 pagination(短、通用、无歧义)。注意:pagination 不等于 HTML 的 <nav> 标签名,而是表达「控制分页行为的 UI 单元」这一完整语义。

页码按钮、上一页/下一页这些算 element 还是独立 block

它们是 pagination 的 Element,但有边界条件:只要自身不跨场景复用,就保持为 Element;一旦在搜索弹窗、详情页侧边栏等多处高频出现,就要升为独立 Block,比如 pagination-item 或 pagination-arrow。

当前多数项目中,它们仍属 Element,命名应为:

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

  • pagination__item ✅(不是 pagination__page 或 pagination__number,避免视觉/实现细节)
  • pagination__prev ✅(不是 pagination__previous,过长且动词化)
  • pagination__next ✅
  • pagination__ellipsis ✅(表示省略号,非 pagination__more 这类模糊词)

禁止出现 pagination__item__icon 或 pagination__prev__arrow —— BEM 不允许 Element 嵌套 Element,三层命名说明结构已超载,应拆出新 Block 或改用 Modifier。

当前页、禁用态、加载中这些状态怎么写 modifier

Modifier 必须挂到 Block 根上,而不是单个 Element 上,除非该状态**只影响该 Element 自身且与其他部分完全解耦**(极少见)。

典型正确写法:

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

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

下载
  • pagination--disabled ✅(整个分页器不可操作,所有子元素统一降权)
  • pagination--loading ✅(显示加载骨架,覆盖全部交互区域)
  • pagination__item--current ✅(仅当前页码高亮,不影响 prev/next 行为)
  • pagination__item--disabled ✅(仅某页码不可点,比如第一页的 prev 按钮)

常见错误:

  • pagination__current ❌(裸类名,无归属,无法回答“属于哪个分页器”)
  • pagination--current-item ❌(Modifier 不该描述结构关系,“当前项”是 pagination__item 的状态,不是 pagination 的变体)
  • pagination__item--active ❌(--active 暴露 JS 事件细节;--current 才对齐业务语义)

多个 Modifier 可平级叠加:pagination__item pagination__item--current pagination__item--large,顺序无关,但建议按“类型→尺寸→状态”排列,便于人眼识别。

SCSS 中怎么写才不产出后代选择器

关键看编译输出是否全是扁平类名。BEM 的封装性全靠这个——CSS 文件里不能出现空格连接的选择器。

安全写法(单层嵌套):

.pagination {
  &__item {
    padding: 4px 8px;
  }
  &--loading {
    opacity: 0.6;
  }
  &__item--current {
    font-weight: 600;
  }
}

危险写法(会产出后代选择器):

.pagination {
  &__item {
    &__icon { /* 编译为 .pagination__item .pagination__item__icon → 违规 */ }
  }
  &__prev &__next { /* 编译为 .pagination__prev .pagination__next → 后代选择器,DOM 移动即失效 */ }
}

真实项目中,如果需要图标,直接定义 pagination__prev-icon,不要试图在 __prev 下再塞一层结构。Sass 的 & 很方便,但一多嵌套就破界,必须手动检查编译结果。

最易被忽略的一点:HTML 中每个 Element 都必须显式携带 Block 类。不能只写 <button class="pagination__item">5</button>,而漏掉根类;否则 DevTools 里看不到上下文,调试时会以为样式没生效,其实是选择器匹配失败。

热门AI工具

更多
AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

Loomy
Loomy Hot

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

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

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

立刻MV
立刻MV Hot

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

DeepSeek

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

豆包大模型

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

WorkBuddy

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

相关专题

更多
css
css

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

4896

2023.06.15

css居中
css居中

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

1057

2023.07.27

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

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

1918

2023.07.28

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

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

3766

2023.08.01

css字体颜色
css字体颜色

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

7685

2023.08.10

什么是css
什么是css

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

6511

2023.08.10

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

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

2177

2023.08.21

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

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

3111

2023.08.22

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

热门下载

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

精品课程

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

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 6万人学习

CSS教程
CSS教程

共754课时 | 98.1万人学习

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

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