CSS自己实现一个步骤条

news2025/1/15 22:00:44

前言

步骤条是一种用于引导用户按照特定流程完成任务的导航条,在各种分步表单交互场景中广泛应用。例如:在HIS系统-门诊医生站中的接诊场景中,我们就可以使用步骤条来实现。她的执行步骤分别是:门诊病历=>遗嘱录入=>完成接诊。
在这里插入图片描述

我们发现,步骤条通常由编号、名称和引导线三个基本要素组成。接下来,我们来根据这三个基本要素来进行实现

确定结构

对于步骤条这种呈现顺序的列表结构,在HTML标签选择上,使用ul或ol标签可以让语义更加清晰。

<ol class="steps">
   <li>注册</li>
    <li>域认证</li>
    <li>身份校验</li>
    <li class="active">风险等级评估</li>
    <li>开通账号</li>
</ol>

样式

.steps {
   display: flex;
   /* 按水平均匀分布,行首行尾两端靠齐 */
   justify-content: space-between;
   margin: 0;
   padding: 0;
   /* 定义CSS计数器 */
   counter-reset: order;
   list-style: none;
   --normal-color: #666;
   --active-color: #5082f5;
}

.steps>li {
   counter-increment: order;
   /* 弹性宽度(根据其内容来调整) */
   flex: auto;
   /* 内联块级弹性伸缩盒子 */
   display: inline-flex;
   align-items: center;
   color: var(--active-color)
}

.steps>li::before {
   content: counter(order);
   width: 1.4em;
   line-height: 1.4em;
   margin-right: 0.5em;
   vertical-align: middle;
   text-align: center;
   border-radius: 50%;
   border: 1px solid;
   /* 布局宽度不够时禁止收缩 */
   flex-shrink: 0;
}

.steps>li:not(:last-child)::after {
   content: '';
   /* width: 60px; */
   /* 让引导线和文本垂直居中 */
   /* vertical-align: middle; */
   /* 占满 li 中的剩余宽度 */
   flex: 1;
   margin: 0 1em;
   /* 不指定颜色,则自动继承自身color或父级color */
   border-bottom: 1px solid;
   opacity: .6;
}

.steps>li:last-child {
   flex: none;
}
/* "已完成"和“进行中”的样式定义 */

.steps>.active {
   color: var(--active-color)
}

.steps>.active::before {
   color: #fff;
   background: var(--active-color);
   border-color: var(--active-color);
}

.steps>.active::after,
.steps>.active~li {
   /* “进行中”后面的引导线按普通色显示 */
   color: var(--normal-color);
}

交互

const listItems = document.querySelectorAll(".steps li")
listItems.forEach(li => {
    li.addEventListener("click", () => {
        listItems.forEach(smalLi => {
            smalLi.classList.remove('active')
        })
        li.classList.toggle("active")
    })
})

最终效果

在这里插入图片描述

知识点总结

  • flex容器的 justify-content: space-between; 可令子元素按显示方向均匀分布,两端分散对齐;
  • inline-flex: 盒子既能像flex容器那样轻松拿捏其子元素的布局,又能像行内块元素一样平易近人;
  • flex: number; 对于宽度(或高度)能占尽占;
  • flex: auto; 从自身实际情况出发应占尽占,共同富裕;
  • flex-shrink: 用来设置flex元素的可压榨基准,与它对应的是flex-basis,用来设置可膨胀基准

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/885390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

福昕阅读器文档无法高亮的问题 转

转自福昕阅读器文档无法高亮的问题_福昕pdf高亮用不了_没有价值的生命的博客-CSDN博客 最近在阅读一篇PDF文档时&#xff0c;对一些内容进行高亮时&#xff0c;发现不能够进行高亮&#xff0c;然后通过在网上查找解决方法算是解决了我的问题。下面我将总结2点不能进行注释的情…

无涯教程-Perl - sqrt函数

描述 此函数返回EXPR的平方根&#xff1b;如果省略,则返回$_。大多数情况下,此函数返回浮点数。 语法 以下是此函数的简单语法- sqrt EXPRsqrt返回值 该函数返回浮点数。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perl -w$resultsqrt(4); print " sqrt(4) …

2024第12届国际生物发酵展,3月6-8日济南举办

2024第12届国际生物发酵产品与技术装备展&#xff08;济南展&#xff09; 2024年3月6-8日 | 山东国际会展中心 2024第13届国际生物发酵产品与技术装备展&#xff08;上海展&#xff09; 2024年8月7-9日 | 上海新国际博览中心 主办单位&#xff1a; …

采用nodejs+vue语言和mysql汽车4s店服务管理系统 _od8k

为设计一个安全便捷&#xff0c;并且使用户更好获取本汽车服务信息&#xff0c;本文主要以安全、简洁为理念&#xff0c;实现用户快捷寻找汽车服务信息&#xff0c;从而解决汽车服务信息复杂难辨的问题。该系统以vue架构技术为基础&#xff0c;采用nodejs语言和mysql数据库进行…

终于理解正向代理和反向代理的联系和区别啦~

正向代理、反向代理 正向代理反向代理联系区别 正向代理 正向代理&#xff08;forward proxy&#xff09;&#xff1a;是一个位于客户端和目标服务器之间的服务器(代理服务器)&#xff0c;为了从目标服务器取得内容&#xff0c;客户端向代理服务器发送一个请求并指定目标&…

实时设备状态监测与故障诊断:制造业转型的驱动力

在当今快节奏、高竞争的制造业环境中&#xff0c;生产效率和设备可靠性成为企业成功的关键。随着技术的不断发展&#xff0c;实时设备状态监测与故障诊断正成为制造业转型的重要驱动力。这一创新技术不仅提供了提前预警和预测性维护&#xff0c;还为制造商带来了更高的生产效率…

事务异常:Transaction rolled back because it has been marked as rollback-only解决方案

目录 事务的概念为何需要事务事务异常的原因解决方案1、方案1&#xff08;一般采用这种&#xff09;2、方案2 事务的概念 事务这个词&#xff0c;其实我们最先接触的地方应该是数据库&#xff0c;我们会知道事务有着四种特性&#xff0c;分别是&#xff1a; 原子性&#xff1…

windows11 修改默认存储位置

windows11 修改默认存储位置 https://zhuanlan.zhihu.com/p/367637690

SCS【31】减少障碍,加速单细胞研究数据库(Single Cell PORTAL)

细胞生信分析教程 桓峰基因公众号推出单细胞生信分析教程并配有视频在线教程&#xff0c;目前整理出来的相关教程目录如下&#xff1a; Topic 6. 克隆进化之 Canopy Topic 7. 克隆进化之 Cardelino Topic 8. 克隆进化之 RobustClone SCS【1】今天开启单细胞之旅&#xff0c;述说…

SElinux 导致 Keepalived 检测脚本无法执行

哈喽大家好&#xff0c;我是咸鱼 今天我们来看一个关于 Keepalived 检测脚本无法执行的问题 一位粉丝后台私信我&#xff0c;说他部署的 keepalived 集群 vrrp_script 模块中的脚本执行失败了&#xff0c;但是手动执行这个脚本却没有任何问题 这个问题也是咸鱼第一次遇到&…

koa2脚手架koa-generator的使用

koa2脚手架的基本使用 简介前言&#xff1a;使用koa2的脚手架koa-generator,使用非常简单&#xff0c;容易上手 首先&#xff0c;我们需要全局安装 npm install -g koa-generator安装成功后&#xff0c;需要创建项目 koa2 koapro[koapro 项目名称] 或者 koa2 -e [koapro 项目名…

华为网络篇 RIP路由手工汇总-27

难度2复杂度2 目录 一、实验原理 二、实验拓扑 三、实验步骤 四、实验过程 总结 一、实验原理 在网络规划过程中&#xff0c;我们避免不了使用VLSM技术&#xff0c;但是使用VLSM后会有一个问题&#xff0c;就是子网较多时会占用系统资源。我们可以使用路由汇总的方法&…

Doris Summit 2023 正式启航,议题征集 合作伙伴招募火热进行中

在数字化进程不断演进的时代&#xff0c;数据呈现爆发增长。在这数据洪流之中&#xff0c;数据实时分析的重要性愈发凸显&#xff0c;并成为企业成功的关键要素。 作为专注于实时分析的开源实时数据仓库 Apache Doris&#xff0c;从开源至今已走过 6 个年头&#xff0c;这些年…

学习笔记十九:Pod常见的状态和重启策略

Pod常见的状态和重启策略 常见的pod状态第一阶段&#xff1a;第二阶段&#xff1a;扩展&#xff1a; pod重启策略测试Always重启策略正常停止容器内的tomcat服务非正常停止容器里的tomcat服务 测试never重启策略正常停止容器里的tomcat服务非正常停止容器里的tomcat服务 测试On…

配置 NTP

server host.domain8.rhce.cc iburst配置 NTP 配置 node1 作为 NTP 的客户端&#xff0c;跟时间服务器 host.domain8.rhce.cc 同步时间。 yum install chrony 安装chrony软件包 systemctl status chronyd 查看chronyd服务是否开启&#xff0c;没有开启使用一下任何一条…

【mysql】事务的四种特性的理解

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…

Codeforces Round 893 (Div. 2)

A.首先题目意思就是看谁拥有的按钮多&#xff0c;所以优先按c的按钮&#xff0c;按两次c等于没按&#xff0c;所以最后看c的奇偶&#xff0c;奇数代表第一个人能多拥有一个&#xff0c;最后判断第一个人和第二个人拥有的总数即可 #include<bits/stdc.h> using namespace…

【Ubuntu】简洁高效企业级日志平台后起之秀Graylog

简介 Graylog 是一个用于集中式日志管理的开源平台。在现代数据驱动的环境中&#xff0c;我们需要处理来自各种设备、应用程序和操作系统的大量数据。Graylog提供了一种方法来聚合、组织和理解所有这些数据。它的核心功能包括流式标记、实时搜索、仪表板可视化、告警触发、内容…

spring(1)

文章目录 IOC容器IOC容器和beans的介绍实例化 BeanBeanFactory&#xff1a;ApplicationContext 容器概述配置元数据实例化容器组合基于xml的配置元数据使用容器 bean的概述命名bean别名的使用 实例化bean构造函数实例化静态工厂实例化实例工厂方法bean 在运行时的实际类型 依赖…

Microsoft Learn AI 技能挑战赛|开启你的 Azure OpenAI Service 应用

点击蓝字 关注我们 Microsoft Learn AI 技能挑战赛已经结束&#xff0c;完赛的小伙伴请保存完赛截图并登记奖品领取表单&#xff01;此外&#xff0c;挑战赛作品提交将截止到8月18日&#xff0c;优秀作品将获得惊喜礼包奖励。 奖品领取、作品提交等详情请查看&#xff1a; 活动…