购物车按钮需双层box-shadow实现真实质感:首段0 -2px 0 2px #fff为顶部高光,次段0 3px 6px rgba(0,0,0,0.15)为底部投影;:active时translateY(2px)、投影下移至5px并增强模糊,高光透明度降低;必须用、禁用tap高亮、避免overflow:hidden裁切。

直接用 box-shadow: 0 2px 4px rgba(0,0,0,0.2) 加个单层阴影,按钮就是一张浮在页面上的贴纸——它没重量、没按压反馈、移动端点按还容易失效。真正能用在购物车场景的质感按钮,必须同时满足:视觉凸起可识别、:active 状态有明确下沉反馈、真机点击不卡顿不裁切。
box-shadow 必须写两层,且顺序不能错
购物车按钮常出现在列表或卡片底部,空间紧凑,单层阴影极易被误判为“悬浮提示”,而非可交互控件。真实光源下,按钮顶部有高光、底部有投影,CSS 必须还原这个物理逻辑:
-
box-shadow第一段必须是顶部高光:0 -2px 0 2px #fff(负 vertical offset),颜色根据背景微调:深色页改用rgba(255,255,255,0.2) - 第二段才是底部投影:
0 3px 6px rgba(0,0,0,0.15),模糊值别超 6px,否则移动端手指点不准 - 两段必须用逗号连写在同一行,顺序颠倒(比如投影写前面)→ 高光被盖住 → 按钮立刻“塌”成平面
- IE11 兼容需求?降级写法:
box-shadow: 0 1px 2px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.08)
:active 状态必须同步 translateY 和 box-shadow 偏移
用户点击“加入购物车”时,如果只变背景色或加 opacity,根本感知不到“已确认”。真实反馈是按钮受压下沉 + 底部阴影变厚 + 顶部高光弱化:
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
-
:active里写transform: translateY(2px)(注意是正值,向下位移) - 同时把
box-shadow的第二值(vertical offset)从3px改成5px,模糊半径从6px加到8px - 顶部高光段保留但降低透明度:
0 -2px 0 2px rgba(255,255,255,0.1) - 过渡必须声明在默认状态:
transition: transform 0.18s, box-shadow 0.18s;写all会拖慢文字颜色变化,干扰操作焦点
移动端点击失效?检查三处硬性限制
桌面预览正常,手机点不动,90% 不是样式问题,而是事件链断了:
立即学习“前端免费学习笔记(深入)”;
- 必须用语义化
<button></button>,别用<div onclick> —— 后者在 iOS Safari 中 <code>:active默认不触发 - 父容器设了
overflow: hidden?:active时box-shadow向上偏移会被裁掉半截,改成overflow: visible或加足够padding - 必须加
-webkit-tap-highlight-color: transparent,否则 iOS 点击瞬间闪白蒙层,盖住所有阴影效果 - 真机测试比 DevTools 模拟器可靠得多:
:active在真机上持续时间极短,数值稍大(如transform: translateY(4px))就感知不到
最容易被忽略的是阴影顺序和位移方向:写反了,按钮不是“按下去”,而是“弹起来”。物理直觉比代码更重要。


















