用 CSS Grid 实现响应式阶梯进度条需设 display: grid 和 auto-fit 列布局,用伪元素画圆点与横线,通过 data-active 控制状态,IE11 降级用 Flex+显式宽度,须兼顾无障碍与垂直居中一致性。
用 CSS Grid 实现可响应的阶梯进度条
纯 CSS 实现阶梯式进度条,关键不是用
元素(它不支持阶梯状),而是靠
布局 + 伪元素控制连接线与步骤点。Grid 能精准对齐「步骤圆点」和「中间横线」,且天然支持等宽自适应。
实操建议:
立即学习
“
前端免费学习笔记(深入)
”;
容器设为
,用
实现响应式列数
每个步骤项用
画圆点,
画右侧横线(最后一项除外)
激活状态通过给对应步骤项加
,用属性选择器控制颜色和横线长度
避免用
或绝对定位——会导致横线对不齐、缩放时错位
JavaScript 动态更新步骤状态时的 DOM 操作要点
手动切换步骤(比如点击下一步按钮)时,别直接操作 class 列表拼接字符串,容易漏删旧状态或重复添加。
实操建议:
立即学习
“
前端免费学习笔记(深入)
”;
统一用
/
控制状态,CSS 侧用
匹配
横线长度依赖相邻步骤是否都激活:只有当前项和下一项都为
时,才显示完整横线;否则截断(可用
或控制
)
不要在循环里反复调用
,缓存节点列表,用
转成数组再遍历
移动端点击区域小?给步骤项加
和
,但别改圆点尺寸本身
IE11 兼容方案:用 Flex 替代 Grid 的取舍
如果必须支持 IE11,Grid 会失效,得降级到
+ 显式宽度计算。这不是“加个前缀”能解决的,是布局模型切换。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
实操建议:
立即学习
“
前端免费学习笔记(深入)
”;
用
包裹 Flex 方案,避免覆盖现代浏览器样式
Flex 下横线要用单独的
progressgriddisplay: gridgrid-template-columns: repeat(auto-fit, minmax(120px, 1fr))::before::afterdata-active="true"floatelement.dataset.active = "true""false"[data-active="true"]activeclip-pathwidthquerySelectorAllArray.from()min-height: 44pxpaddingflex@supports not (display: grid)
元素,不能靠伪元素——IE11 对
::after
在 flex 容器里的定位支持极差
步骤圆点用
margin-left: -16px
往左微调对齐,因为 Flex 无法像 Grid 那样精确定义轨道起点
放弃自动响应列数:IE11 下固定写死
flex: 0 0 25%
(4步)或
flex: 0 0 33.33%
(3步),用媒体查询分段适配
无障碍与语义化:别让屏幕阅读器读成“一堆圆点”
阶梯进度条本质是流程导航,但默认只是视觉呈现,对屏幕阅读器不可见。用户可能卡在第二步却不知道当前处于第几步。
实操建议:
立即学习
“
前端免费学习笔记(深入)
”;
每个步骤项加上
role="region"
和
aria-labelledby
指向内部标题
用
aria-current="step"
标记当前激活项(比
aria-selected
更准确)
隐藏装饰性横线:给
.step-connector
加
aria-hidden="true"
别用
visibility: hidden
隐藏未完成步骤文字——它仍会被读出;改用
clip-path: inset(100%)
或
position: absolute; left: -9999px
最易被忽略的是横线与圆点的垂直居中一致性:不同字体、行高、box-sizing 下,
top: 50%
可能偏移几个像素。建议所有圆点用
transform: translateY(-50%)
,横线用
align-self: center
(Grid)或
align-items: center
(Flex),而不是依赖 margin 或 top。
相关文章
- CSS如何实现按钮在长按时的环形加载_结合:active状态利用关键帧逐步填充按钮的border或者伪元素
- 前端入门:css是什么
- 重点解答js的几种提交方式
- jQuery Ajax与ASP.NET 4.0交互时没反应怎么回事
- 怎样实现原生AJAX封装
- JavaScript:高效生成唯一随机数并找出最小值的教程
- HTML怎么做Application面板_HTML DevTools Application面板【从零开始】
- ps怎么做影子渐变的立体字? ps立体文字的设计方法
- 如何利用 BroadcastChannel 配合 SharedWorker 实现全站范围的消息分发中心
- JavaScript中的Web Assembly(Wasm)如何与JavaScript交互?
