【js步骤引导】基于jquery实现步骤引导进度条效果(附源码)

news2024/10/7 14:33:18

写在前面

步骤引导条这个功能其实在我们很多业务系统中是最常见的,尤其是快递订单、审批流程、上传资源等涉及步骤操作的业务中广泛应用,因此今天我也详细的和大家讲讲如何基于jquery去实现步骤引导效果,支持上一步下一步的切换。

涉及知识点

如何实现步骤引导效果,jquery实现步骤引导功能,上一步下一步来回切换功能,有关订单引导条业务代码实现,如何编写步骤引导条代码,步骤引导进度条代码demo,步骤引导代码示例。

先睹为快

效果展示,有效果图也就更好的让大家知道是否有看下去的必要,也是为了更多切实有效的用户,希望能得到大家的点赞,点赞的朋友们必行大运;
在这里插入图片描述

目录

  • 1、步骤引导条实现原理
    • A、步骤线条与圆圈实现
    • B、中间内容切换实现
  • 2、步骤引导条实现过程
    • A、创建dom元素
      • (1)文字描述区域
      • (2)步骤图标区域
      • (3)内容展示及按钮区域
    • B、实现下(上)一步功能
  • 3、完整代码下载区
    • 百度云网盘
    • 123云盘
    • 涨薪榜单

1、步骤引导条实现原理

A、步骤线条与圆圈实现

主要核心实现理念是利用jquery去寻找下(上)一个节点元素,然后针对节点进行样式的设置,其中主要包括两个部分,一个是圆圈的元素,还有一个就是线条的元素,我都是统一采用无序列表标签ul li.

B、中间内容切换实现

其实主要就是利用了css的display属性分别设置none和list-item来实现的。这个在实现过程也会有详细说明。

版权保护:此文原创于CSDN博主-《拄杖盲学轻声码》,主页有很多分享的代码,期待您的访问。

2、步骤引导条实现过程

A、创建dom元素

主要有三大块区域dom元素

(1)文字描述区域

此处主要采用的是父div内添加无需列表标签ui li,如下html代码所示:

<ul class="ul_word">
      <li>
        <p> 上传订单 </p>
      </li>
      <li>
        <p> 订单入库 </p>
      </li>
      <li>
        <p> 物流信息 </p>
      </li>
      <li>
        <p> 完成 </p>
      </li>
</ul>

添加完样式后如下所示效果:
在这里插入图片描述

(2)步骤图标区域

此处需要两种样式,一个是线条,一个是圆圈。
线条:只有设置高度为1,然后设置背景色就可以呈现出线条的形状;
圆圈:其实就是正方形的div设置border-radius:50%即可达到您想要的效果。
我实现的过程还是采用li标签里面添加div元素,然后再对div按照上面的两种方式去实现的,核心代码如下所示:
Html:

<ul class="ul_num">
      <li>
        <div class="num_blue">1</div>
      </li>
      <li>
        <div class="line_blue"></div>
      </li>
      <li>
        <div class="line_gray"></div>
      </li>
      <li>
        <div class="num_gray_out">
          <div class="num_gray">2</div>
        </div>
      </li>
      <li>
        <div class="line_gray"></div>
      </li>
      <li>
        <div class="line_gray"></div>
      </li>
      <li>
        <div class="num_gray_out">
          <div class="num_gray">3</div>
        </div>
      </li>
      <li>
        <div class="line_gray"></div>
      </li>
      <li>
        <div class="line_gray"></div>
      </li>
      <li>
        <div class="num_gray_out">
          <div class="num_gray">4</div>
        </div>
      </li>
    </ul>

css代码

.num_out {
    width: var(--num_out_width);
    height: var(--num_out_height);
}

.num_blue {
    width: var(--num_width);
    height: var(--num_height);
    line-height: var(--num_height);
    text-align: center;
    margin: 0 auto;
    margin-top: calc((var(--num_out_height) - var(--num_height)) / 2);
    border-radius: 50%;
    background-color: #39f;
    color: #fff;
}

.num_gray_out {
    width: var(--num_out_width);
    height: var(--num_out_height);
    background-color: #d7d7d7;
    border-radius: 50%;
    line-height: var(--num_out_width);
    display: flex;
    display: -webkit-flex;
    align-items: center;
}

.num_gray {
    width: var(--num_width_lit);
    height: var(--num_height_lit);
    line-height: var(--num_height_lit);
    text-align: center;
    margin: 0 auto;
    border-radius: 50%;
    background-color: #999;
    color: #fff;
}

.line_blue {
    margin-top: calc(var(--num_out_height) / 2);
    height: 1px;
    width: var(--line_width);
    background-color: #39f;
}

.line_gray {
    margin-top: calc(var(--num_out_height) / 2);
    height: 1px;
    width: var(--line_width);
    background-color: #d7d7d7;
}

添加完之后的页面效果如下所示:
在这里插入图片描述

(3)内容展示及按钮区域

这个地方就是操作按钮和主体的设置;
操作按钮:采用的是li里面添加button标签,按钮只要添加点样式就好看了
主体部分:我主要是用了一个div,然后设置了一个border边框。
整体实现html代码如下所示:

<div class="follow_show">
      <ul>
        <li>
          <div class="operbox">
            1、填写上传的操作
          </div>
          <div>
            <button class="next follow_btn">下一步</button>
          </div>
        </li>
        <li>
          <div class="operbox">
            2、填写订单详细信息
          </div>
          <div>
            <button class="prev follow_btn">上一步</button>
            <button class="next follow_btn">下一步</button>
          </div>
        </li>
        <li>
          <div class="operbox">
            3、 物流派送信息
          </div>
          <div>
            <button class="prev follow_btn">上一步</button>
            <button class="next follow_btn">下一步</button>
          </div>
        </li>
        <li>
          <div class="operbox">
            4、是否已收货,确认请点击完成
          </div>
          <div>
            <button class="prev follow_btn">上一步</button>
            <button class="next follow_btn">完成</button>
          </div>
        </li>
      </ul>
    </div>

CSS代码

.follow_btn {
    width: 130px;
    height: 40px;
    background-color: #39f;
    color: #fff;
    border: none;
    border-radius: 6px;
    font-size: 14px;
}

.operbox {
    width: 750px;
    padding: 20px;
    margin: 30px 0;
    height: 200px;
    border: 1px solid #eee;
    color: #666;
}

添加后实现效果如下:
在这里插入图片描述

到此处基本上元素搭建完成了,剩下来的就是js的事情了

B、实现下(上)一步功能

这个是我们所有的功能核心,主要就是体现在对dom元素的动态,接下来我主要是通过两个函数来做的,通过触发点击上一步和下一步按钮去触发这两个函数。
主要功能是找上一个节点和下一个节点,然后针对上下节点进行样式的设置,或者节点的增删操作。核心JS代码如下:
上一步:

function prev(current) {
    debugger;
    parent_li = $(current).parents("li");
    var index = $(".follow_show ul li").index(parent_li);//下标为第index+1个
    pos = 3 * index + 1;
    $(".ul_num li").eq(pos - 2).children().removeClass("line_blue").addClass("line_gray");
    $(".ul_num li").eq(pos - 1).children("div").remove();
    $(".ul_num li").eq(pos - 1).html(
        `<div class="num_gray_out">
        <div class="num_gray">` + (index + 1) + `</div>
      </div>`
    );
    if (index < 3) {
        $(".ul_num li").eq(pos).children().removeClass("line_blue").addClass("line_gray");
    }
    $(".follow_show ul li").eq(index).css({
        "display": "none"
    })
    $(".follow_show ul li").eq(index).prev().css({
        "display": "list-item"
    })
}

下一步:

function next(current) {

    parent_li = $(current).parents("li")
    var index = $(".follow_show ul li").index(parent_li);
    pos = 3 * (index + 1)
    last_num = $(".ul_num li").eq(pos)
    last_num.prev().children().removeClass("line_gray").addClass("line_blue")

    last_num.prev().children().css({
        "width": new_line_width + "px"
    })
    last_num.children("div").remove();
    last_num.html(
        "<div class='num_blue'>" + (index + 2) + "</div>"
    );
    last_num.next().children().removeClass("line_gray").addClass("line_blue")
    last_num.next().children().css({
        "width": new_line_width + "px"
    })
    follow_show()
}
function follow_show() {
    var last_blue_num = 0
    var ul_num_list = $(".ul_num li div");
    ul_num_list.each(function (index) {
        var c = $(this).attr("class")
        if (c == "num_blue" && index > last_blue_num) {
            last_blue_num = index
        }
    })
    var follow_show_list = $(".follow_show ul li")
    if (last_blue_num == 0) {
        follow_show_list.eq(last_blue_num).show()
    } else {
        pos = last_blue_num / 3
        follow_show_list.eq(pos - 1).hide()
        follow_show_list.eq(pos).show()
    }

}

其实上面的两个函数已加上基本上我们就可以达到我要的效果,当然有些朋友要是没有跑出来想要的效果,也可以在最后的分享中下载完整代码哈。

版权声明:此文原创于CSDN博主-《拄杖盲学轻声码》,主页有很多分享的代码,期待您的访问。

3、完整代码下载区

百度云网盘

链接:https://pan.baidu.com/s/1p8T54_peTJDXhQSy8csJsA
提取码:hdd6

123云盘

链接:https://www.123pan.com/s/ZxkUVv-KyJ4.html
提取码:hdd6

涨薪榜单

期待大家能通过这篇文章学到更多,而且薪资一年更比一年猛!
喜欢博主的话可以上榜一探究竟,博主专设涨薪皇榜给大家查阅,喜欢的可以点击此处查看哟。

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

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

相关文章

【云计算】HBase表操作

文章目录 前言一、shell创建二、操作 前言 HBase是一个分布式、可扩展的、非关系型的NoSQL数据库。它是建立在Hadoop HDFS上的一个开源的数据库管理系统。HBase的设计目标是提供高可靠性、高可扩展性、高性能、高延迟、高容错性和高可用性。 HBase是一种面向列的数据库&#…

【多智能体合作】Self-Organized Group for Cooperative Multi-agent Reinforcement Learning

【多智能体合作】Self-Organized Group for Cooperative Multi-agent Reinforcement Learning 本文提出了一个自主分组机制&#xff0c;这种机制具有 选举指挥官&#xff08;CE&#xff09; 和 消息总结&#xff08;MS&#xff09; 的功能。 在 CE 中&#xff0c;每隔 T个时间步…

【无标题】机器学习——朴素贝叶斯

朴素贝叶斯&#xff08;Naive Bayesian algorithm&#xff09;是有监督学习的一种分类算法&#xff0c;它基于“贝叶斯定理”实现&#xff0c;该原理的提出人是英国著名数学家托马斯贝叶斯。 一、贝叶斯定理 P(A) 这是概率中最基本的符号&#xff0c;表示 A 出现的概率。比如在…

Spark 4/5

4. 启动Spark Shell编程 4.1 什么是Spark Shell spark shell是spark中的交互式命令行客户端&#xff0c;可以在spark shell中使用scala编写spark程序&#xff0c;启动后默认已经创建了SparkContext&#xff0c;别名为sc 4.2 启动Spark Shell Shell /opt/apps/spark-3.2.3-bi…

实战深入了解redis+消息队列如何实现秒杀

SpringBoot Redis RabbitMQ 实现高并发限时秒杀 所谓秒杀&#xff0c;从业务角度看&#xff0c;是短时间内多个用户“争抢”资源&#xff0c;这里的资源在大部分秒杀场景里是商品&#xff1b;将业务抽象&#xff0c;技术角度看&#xff0c;秒杀就是多个线程对资源进行操作&…

配置NIS服务器及客户端

在服务端安装所需软件包 设置主机名和NIS域名 编辑 NIS服务器主配置文件 最下面编辑访问控制 建立测试用户 配置NFS&#xff0c;否则客户端切换用户时&#xff0c;用户没有家目录 安装NFS所需软件包 Nfs-utils 给两个共享目录权限&#xff0c;编辑NFS配制文件 共享两个目录 重…

12.JavaWeb-Spring Boot + 物业管理项目

1.Spring Boot 概念 自动处理应用程序幕后的各种杂事&#xff08;Spring框架的应用程序的配置和部署过程&#xff09;&#xff0c;让你专注于做那些使应用程序独特的工作 1.1 Spring Boot的核心功能 1.1.1 自动配置 Spring Boot根据应用程序的依赖和配置信息&#xff0…

计算机网络——自顶向下方法(第二章学习记录)

本章学习应用层 网络应用是计算机网络存在的理由。 网络应用程序体系结构 现代网络应用程序有两种主流体系结构&#xff1a;客户—服务器体系结构和对等(P2P)体系结构 客户—服务器体系结构&#xff08;client-server )&#xff0c;在这个结构中&#xff0c;有一个总是打开的…

SAP CAP篇五:为CAP添加Fiori Elements程序(2)

本文目录 本系列之前的文章新建Fiori Elements Application选择Application TypeData SourceEntity SelectionProject InformationLaunchpad Setting 修改manage-books文件夹子文件夹 webapp重命名 annotations.cds更新fiori-service.cdsmanifest.json 添加services.cds到app文…

哈工大计算机网络课程传输层协议之:拥塞控制原理剖析

哈工大计算机网络课程传输层协议之&#xff1a;拥塞控制原理剖析 文章目录 哈工大计算机网络课程传输层协议之&#xff1a;拥塞控制原理剖析拥塞成因和代价&#xff1a;场景1拥塞成因和代价&#xff1a;场景2拥塞成因和代价&#xff1a;场景3如何进行拥塞控制拥塞控制的方法TCP…

哈工大计算机网络课程网络层协议之:网络层服务概述

哈工大计算机网络课程网络层协议之&#xff1a;网络层服务概述 文章目录 哈工大计算机网络课程网络层协议之&#xff1a;网络层服务概述网络层概述网络层核心功能—转发与路由网络层核心功能—连接建立网络层服务模型虚电路网络与数据报网络虚电路网络虚电路(VC)的具体实现VC转…

Web 渗透测试攻防之浅述信息收集

前言 众所周知渗透测试的本质是信息收集&#xff0c;在渗透测试中信息收集的质量直接关系到渗透测试成果的与否。在对系统进行渗透测试前的信息收集是通过各种方式获取所需要的信息&#xff0c;收集的信息越多对目标进行渗透的优势越有利。通过利用获取到的信息对系统进行渗透…

【前端布局篇】响应式布局 Bootstrap 移动端布局

前言 1. 布局介绍 布局:layout 对事物的全面规划和安排 页面布局&#xff1a;对页面的文字、图形或表格进行格式设置。包括字体、字号、颜色纸张大小和方向以及页边距等。 网页布局&#xff1a;利用html搭建结构与内容&#xff0c;使用CSS添加装饰 网页布局有很多种方式&a…

Flink 学习七 Flink 状态(flink state)

Flink 学习七 Flink 状态(flink state) 1.状态简介 流式计算逻辑中,比如sum,max; 需要记录和后面计算使用到一些历史的累计数据, 状态就是:用户在程序逻辑中用于记录信息的变量 在Flink 中 ,状态state 不仅仅是要记录状态;在程序运行中如果失败,是需要重新恢复,所以这个状态…

基于Django的疫情困扰下的民慧钢材销售分析及纾困策略-计算机毕设 附源码87656

基于Django的疫情困扰下的民慧钢材销售分析及纾困策略 摘 要 疫情之下&#xff0c;实体经济面临下行压力。2019年以来&#xff0c;新冠肺炎疫情卷土而来&#xff0c;各地地疫情防控形势严峻&#xff0c;许多中小微企业经营发展屡次遭受打击。面对疫情常态化的社会现实&#x…

[学习笔记] [机器学习] 13. 集成学习进阶(XGBoost、OTTO案例实现、LightGBM、PUBG玩家排名预测)

视频链接数据集下载地址&#xff1a;无需下载 学习目标&#xff1a; 知道 XGBoost 算法原理知道 otto 案例通过 XGBoost 实现流程知道 LightGBM 算法原理知道 PUBG 案例通过 LightGBM 实现流程知道 Stacking 算法原理知道住房月租金预测通过 Stacking 实现流程 1. XGBoost 算…

SPI协议(嵌入式学习)

SPI协议 概念时序SPI通信模式图四种通信模式 优缺点 概念 SPI&#xff08;Serial Peripheral Interface&#xff09;是一种串行外设接口协议&#xff0c;用于在数字系统之间进行通信。它被广泛应用于嵌入式系统和电子设备中&#xff0c;用于连接微控制器、传感器、存储器、显示…

Linux权限管理(超详解哦)

Linux权限 引言文件访问者的分类文件类型与访问权限文件类型访问权限 文件权限值的表示方法修改权限的指令chmod修改文件权限通过角色/-/权限来修改通过三个八进制数修改 chown修改所有者chgrp修改所属组umask修改或查看文件权限掩码文件创建时的权限 目录的权限粘滞位 总结 引…

【命令参数】SVN - 环境配置及常用命令参数

目录 环境配置 基本语法 参数指令 SVN是一款基于C/S架构的版本控制系统&#xff0c;能够实现对产品项目的版本托管以及对源码库的高效管理。而掌握SVN中的一些命令参数&#xff0c;一定程度上可以使日常效率得到进一步提升。 环境配置 为在调用时更加便捷&#xff0c;通常会…