首页 / 中文教程 / 教程

Bricks Accordion (Nestable) 图标旋转:展开/收起状态箭头切换

Bricks 的 Accordion (Nestable) 元素展开前后图标完全一样,没有状态反馈。用两行 CSS 让箭头在展开时旋转 90 度,收起时转回,带平滑过渡动画。免费教程完整代码。

Ray Chan·2026-08-12·约 1 分钟

场景:手风琴图标没有状态区分

Bricks 提供了两个手风琴元素:

  • Accordion(旧版):可以在主题样式中分别设置「默认状态图标」和「展开状态图标」,全站生效。
  • Accordion (Nestable)(新版,最常用):不支持分别设置两种状态的图标。开箱即用时,图标在展开和收起状态下长得一模一样——默认的箭头图标始终指向同一个方向,用户看不出当前是开还是合。Bricks 官方至少该加一行 CSS 让图标在展开时转个向,可惜没有。

不过我们可以自己补上。核心思路:用 CSS 把图标默认旋转 90 度(箭头朝下),当条目处于展开态(.brx-open)时再旋转 -90 度(箭头朝上),并加过渡动画让旋转平滑。这是 BricksLabs 免费教程给出的完整方案。

完整 CSS

在 Bricks 编辑器里进入 Settings(齿轮图标)→ 自定义 CSS,或者放到子主题样式表,粘贴以下代码(原样保留):

.accordion-title-wrapper .brxe-icon {
    transform: rotate(90deg);
    transition: 200ms transform ease-in-out;
}

.brx-open .accordion-title-wrapper .brxe-icon {
    transform: rotate(-90deg);
}

效果:默认箭头朝下(rotate 90deg),展开后箭头朝上(rotate -90deg),200ms 缓动过渡。

原理说明

  • DOM 结构:Accordion (Nestable) 的每个条目标题由 .accordion-title-wrapper 包裹,内部图标是 .brxe-icon。CSS 选择器 .accordion-title-wrapper .brxe-icon 精确命中所有条目的标题图标,不误伤内容区的其他图标。
  • .brx-open 是激活态标记:Bricks 所有可展开组件(手风琴、Tabs、Offcanvas)在展开时都会给根元素加 .brx-open 类。.brx-open .accordion-title-wrapper .brxe-icon 表示「展开条目的标题图标」,两条规则一起构成状态切换。
  • transform 旋转为什么可行:图标本身是 SVG(或字体图标),旋转不改变布局占位,视觉上就是箭头指向变化;配合 transition: 200ms transform ease-in-out,旋转过程平滑不突兀。
  • 想换更复杂的图标方案(比如默认加号、展开变减号),就得自己写规则或用 BricksExtras 插件的 Pro Accordion 元素——后者支持分别设置两种状态的图标,灵活性更高。

扩展:顺带做点状态样式

同一个 .brx-open 选择器还能顺手做更多状态反馈,比如展开条目的标题变色、加粗:

.brx-open .accordion-title-wrapper {
    color: var(--bricks-color-accent);
    font-weight: 600;
}

这样「当前展开的是哪一项」在视觉上一目了然,FAQ 类页面尤其好用。注意 --bricks-color-accent 是 Bricks 的全局色板变量,换成你自己的主题色变量即可。

小结

两行 CSS 解决了 Accordion (Nestable) 的状态反馈缺失问题:默认朝下、展开朝上,还带平滑过渡。这个思路再次印证了 Bricks 的玩法——.brx-open 是驱动一切展开组件状态的关键类,任何「展开时要做点什么」的需求,几乎都能靠给它写 CSS 规则实现,图标旋转、标题变色、背景高亮都是同一套选择器的应用。

需要帮忙?

用 Bricks 建站?我接客户项目。

从快速营销站到完整的 Bricks 建站,再到从 Elementor 迁移——我都做过。本站每篇教程都来自真实项目经验。告诉我你的需求,一个工作日内回复。

  • Bricks 建站与改版
  • Elementor / Divi → Bricks 迁移
  • Bricks → Astro / headless 性能升级
  • 速度优化,PageSpeed 95+ 目标