🆕 Bricks 2.4 已发布:查询循环性能提升 40%,迁移教程同步更新 →

首页 / 中文教程 / 教程

Bricks Query Loop 布局切换器:网格/列表一键切换(无插件)

教程:在 Bricks 里给用户提供 Query Loop 网格/列表布局切换按钮,纯 CSS 变量 + 原生 JS 实现,不装插件、不重复内容、不伤 SEO。

Ray ChanRay Chan·2026-08-18·约 1 分钟
目录
  1. 1.需求场景
  2. 2.核心思路
  3. 3.结构与 class
  4. 4.CSS 变量驱动布局
  5. 5.JS 切换逻辑
  6. 6.小结

Bricks Query Loop 布局切换器:网格/列表一键切换(无插件)

想不想让用户自己选 Query Loop 的展示布局(网格 vs 列表)?这篇教你不装插件、不引 JS 库、不复制内容(保护 SEO),只靠一点自定义代码实现布局切换器。

本文基于 BricksLabs 公开免费教程实译,代码完整可复用。原文:How to add a layout toggle on Query Loops in Bricks

核心思路

用 CSS 变量(--grid-column-count 等)控制容器布局,切换按钮通过 JS 改 class 来切换 grid / list 两种布局表现。内容只渲染一次,SEO 不受影响。

结构与 class

在 Query Loop 容器上方放切换按钮组,套用约定 class:

  • 容器:.loop-ctn-w-layout-toggles
  • 内部循环容器:.query-container
  • 切换按钮:加 data-layout="grid" / data-layout="list"
  • 重要:默认激活的按钮加 .toggle-layout--active class

CSS 变量驱动布局

.loop-ctn-w-layout-toggles .query-container {
   /* 按需要改以下变量 */
   --grid-layout-gap: 3rem;
   --grid-column-count: 4;
   --grid-item--min-width: 280px;
   /* 变量结束 - 以下不要改 */
   display: grid;
   grid-gap: var(--grid-layout-gap);
}

@media screen and (min-width: 768px) {
   .loop-ctn-w-layout-toggles .query-container {
      --gap-count: calc(var(--grid-column-count) - 1);
      --total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));
      /* ... 依据变量计算列宽 ... */
   }
}

JS 切换逻辑

// DOM 加载后执行,避免阻塞渲染
window.addEventListener('DOMContentLoaded', () => {

   // 选取所有带布局切换的容器
   const containers = document.querySelectorAll('.loop-ctn-w-layout-toggles');

   // 页面上没有则退出
   if (containers.length < 1) return console.log('There is no container with layout toggles on this page. Double check you correctly added the .loop-ctn-w-layout-tog');

JS 监听切换按钮点击,按 data-layout 切换容器的 grid / list 表现并维护 .toggle-layout--active 高亮。

小结

  • 纯 CSS 变量 + 原生 JS,零依赖
  • 内容单渲染,SEO 友好
  • 适合博客/产品列表给用户自选浏览密度

延伸阅读

Ray Chan

站长

Ray Chan

WordPress Developer & Bricks Specialist

WordPress developer with 10+ years of client builds. Switched to Bricks in 2023 — now builds fast WordPress sites and migrates legacy Elementor/Divi projects.

延伸阅读