首页 / 中文教程 / 教程

为 SureCart 产品制作自定义加购按钮(含加载动画与 Tooltip)

Brickshttps://brickslabs.com/go/bricks 对 SureCarthttps://brickslabs.com/go/surecart v3+ 的集成提供了现成的「加购按钮(Add-to-…

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

BricksSureCart v3+ 的集成提供了现成的「加购按钮(Add-to-Cart button)」元素,单产品页和查询循环里都能用。但如果我们需要的不只是一个纯文字按钮,比如要可以嵌套内容的自定义按钮,就可以用其他 Bricks 元素拼一个,获得更多控制权。

本教程带你完成:

创建按钮

第一步是创建自定义按钮。

第 1 步:选元素

想要最大灵活性,创建自定义按钮的最佳元素是 div。用 div 可以保证没有任何默认样式,而且能往里面嵌套任意元素(Button 元素就不行)。

第 2 步:变成真正的按钮

我们得让这个元素是实际意义上的按钮,而不是 div。方法:把 HTML 标签改成 button——在下拉框里选 ‘custom’(自定义),然后自定义标签填 ‘button’

第 3 步:添加按钮内容

这个例子里,我们用 Bricks 的图标(icon)元素在按钮里放一个购物车图标。(如果按钮里不打算放任何文字,记得给按钮加 aria-label 属性。)

这里放什么都可以,图标只是个简单示例。

然后给 div 元素设置样式,让它看起来更像按钮:背景、内边距、hover/focus 样式等等。

第 4 步:在结构里的摆放位置

要让新按钮能把当前产品加入购物车,它在结构中的位置很重要,SureCart 才能用得上这个按钮。

如果在单产品页(single product view) ——按钮必须放在 ‘Product’(产品)元素内部的某个位置。

如果在产品查询循环里 ——按钮必须放在 ‘Product Card’(产品卡片)元素内部的某个位置(见上文结构图)。

前端点击这个按钮,就会把当前产品加入购物车。

添加加载动画

SureCart 默认的加购按钮点击后会有个小加载动画,在购物车打开前给出「正在处理」的视觉反馈。这是用 Interactivity API 给按钮加一个 ‘busy’(忙碌中)类实现的。

我们可以在自定义按钮上复刻这个行为:给新按钮添加下面这个自定义属性:

Name(名称)data-wp-class--bl-add-to-cart__busy Value(值)context.busy

这样,按钮被点击后、购物车打开前,会加上 bl-add-to-cart__busy 这个类(你可以改成任意类名)。用 %root%.bl-add-to-cart__busy 选择器,就能只在按钮 ‘busy’ 状态下设置样式。

下面做个能跑的示例:用我们的 bl-add-to-cart__busy 类,复刻默认加购按钮同款 spinner(旋转加载圈)。把这段 CSS 直接加到新按钮元素的 CSS 设置里:

%root% {
  position: relative;
}

/* add spinner to ::before */
%root%::before {
  
    --track-color: #0d131e20;
    --stroke-width: 2px;
    --spinner-size: 1em;
  
    -webkit-animation: spin 1s linear infinite;
    animation: spin 1s linear infinite;
    border: solid var(--stroke-width) var(--track-color);
    border-radius: 50%;
    border-right-color: currentColor;
    border-top-color: currentColor;
    display: inline-block;
    height: var(--spinner-size);
    width: var(--spinner-size);
    -webkit-transition: opacity .25s ease;
    transition: opacity .25s ease;
    left: calc(50% - 8px);
    opacity: 0;
    position: absolute;
    top: calc(50% - 8px);
    visibility: hidden;
    content: '';
    transform: none;
}

/* reveal spinner only when button busy */
%root%.bl-add-to-cart__busy::before {
    opacity: 1;
    visibility: visible
}

/* hide other button content when button busy */
%root%.bl-add-to-cart__busy > * {
    opacity: 0;
    visibility: hidden;
}

原理:用 ::before 伪元素加一个 spinner,然后随着 bl-add-to-cart__busy 类的添加/移除,切换按钮内容和 spinner 的显示与隐藏。

现在点击按钮后,spinner 就会出现:

想在构建器里临时预览 spinner 方便调样式?把 bl-add-to-cart__busy 类加到「CSS classes」选项里(就在自定义 CSS 输入框下面),调完再删掉。

添加 Tooltip

取决于按钮内容和设计,给按钮加一个 hover/focus 时显示的 Tooltip,告诉用户这个按钮是干嘛的,是个好主意。

添加 Tooltip 的方式和给 Bricks 其他元素添加类似,不过我们要的是 hover 时显示、不是点击时显示——因为点击按钮会触发购物车。

简单 CSS Tooltip

Bricks 内置了 CSS tooltip,可以加到任意元素上、hover 时显示。给新按钮元素添加下面两个自定义属性即可:

Namedata-balloon ValueAdd to cart

Namedata-balloon-pos Valuetop

响应式 Tooltip

如果你希望 tooltip 位置能自动调整、根据可用空间保证始终可见,那就需要 JS 方案了。二选一:

搞定

现在我们的自定义按钮有了:产品加购时的 spinner 动画,以及 hover 时提供上下文说明的 tooltip。

需要帮忙?

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

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

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