【50天50个项目】简易进度条

效果:
在这里插入图片描述
在这里插入图片描述
代码主体:
HTML

<body><div class="container"><div class="progress-container"><div class="progress" id="progress"></div><div class="circle active">1</div><div class="circle">2</div><div class="circle">3</div><div class="circle">4</div></div><button class="btn" id="prev" disabled>Prev</button><button class="btn" id="next">Next</button></div><script src="script.js"></script>
</body>

CSS

@import url('https://fonts.googleapis.com/css2?family=Muli&display=swap');:root{--line--border--fill:#3498db;--line--border--empty:#e0e0e0;
}* {box-sizing: border-box;
}body {background-color: #383838;font-family: 'Muli', sans-serif;display: flex;align-items: center;justify-content: center;height: 100vh;overflow: hidden;margin: 0;
}.container{text-align: center;
}.progress-container{display: flex;justify-content: space-between;position: relative;margin-bottom: 30px;max-width: 100%;width: 350px;
}.progress-container::before{content: '';background-color: var(--line--border--empty);position: absolute;top: 50%;left: 0;transform: translateY(-50%);height: 4px;width: 100%;z-index: -1;
}.progress{background-color: var(--line--border--fill);position: absolute;top: 50%;left: 0;transform: translateY(-50%);height: 4px;width: 0%;z-index: -1;transition: 0.4s ease;
}.circle{background-color: #fff;color:#999;border-radius: 50%;height:30px;width: 30px;display: flex;align-items: center;justify-content: center;border:3px solid #e0e0e0;transition: .4s ease;
}.circle.active{border-color: #3498db;
}.btn{background-color: var(--line--border--fill);color:#fff;border: 0;border-radius: 6px;cursor: pointer;font-family: inherit;padding: 8px 20px;margin: 5px;font-size: 14px;
}.btn:active{transform: scale(0.97);
}.btn:focus{outline: 0;
}.btn:disabled{background-color: var(--line--border--empty);cursor: not-allowed;
}

JS

const progress = document.getElementById("progress")
const prev = document.getElementById("prev")
const next = document.getElementById("next")
const circles = document.querySelectorAll(".circle")let currentActive = 1next.addEventListener("click", () => {currentActive++if (currentActive > circles.length) {currentActive = circles.length}update()
})prev.addEventListener("click", () => {currentActive--if (currentActive < 1) {currentActive = 1}update()
})//更新div的class属性与currentActive参数保持一致
function update() {circles.forEach((circle, idx) => {if (idx < currentActive) {circle.classList.add("active")} else {circle.classList.remove("active")}})const actives = document.querySelectorAll(".active")//改变进度条progress.style.width =((actives.length - 1) / (circles.length - 1)) * 100 + "%"//当处在第一项或最后一项无法前进或后退时关闭一个按钮if (currentActive === 1) {prev.disabled = true} else if (currentActive === circles.length) {next.disabled = true} else {prev.disabled = falsenext.disabled = false}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

02-app端文章查看,静态化freemarker,分布式文件系统minIO

app端文章查看&#xff0c;静态化freemarker,分布式文件系统minIO 1)文章列表加载 1.1)需求分析 文章布局展示 1.2)表结构分析 ap_article 文章基本信息表 ap_article_config 文章配置表 ap_article_content 文章内容表 三张表关系分析 1.3)导入文章数据库 1.3.1)导入数据…

golang学习笔记-入门

go build main.go 编译生成 exe go run main.go 直接编译运行 go可以查看官方api源码&#xff0c;在skd安装路径src中 多个import import &#xff08; &#xff09; 字符串用 ~~ ~~反引号&#xff0c;不转义

Linux下menuconfig与Kconfig基础知识概要

一、简介 menuconfig是Linux平台用于管理代码工程、模块及功能的实用工具。上至决定某一程序模块是否编译&#xff0c;下到某一行具体的代码是否需要编译以及某个项的值在本次编译时该是什么都可由menuconfig来定义。 menuconfig的使用方式通常是在编译系统之前在系统源代码根…

C++ 栈OJ

目录 栈的应用场景&#xff1a; 1、 1047. 删除字符串中的所有相邻重复项 2、844. 比较含退格的字符串 3、 227. 基本计算器 II 4、394. 字符串解码 5、946. 验证栈序列 栈的应用场景&#xff1a; 表达式求值&#xff1a;栈常用于中缀表达式转换为后缀表达式&#xff0c;…

Android14音频进阶:AudioTrack如何巧妙衔接AudioFlinger(五十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

Elemenu中el-table中使用el-popover选中关闭无效解决办法

主要是技术太菜,没找到原因,一点点才找到这个办法解决 因为在el-table-column里,因为是多行,使用trigger"manual" 时,用v-model"visible"来控制时,控件找不到这个值,才换成trigger"click" 先找到弹出关闭事件,再找元素的属性 右键>审核元素…

蓝桥杯python常用内置函数

一、 abs() #返回数字的绝对值 例&#xff1a; 二、 all() #判断给定的可迭代参数中的所有元素是否都为True&#xff0c;若是则返回True&#xff0c;反之返回False 例&#xff1a; 三、 any() #判断给定的可迭代参数是否都为False&#xff0c;全为False则返回False&am…

JDBC和连接池

JDBC和连接池 大纲 JDBC连接数据库的方式 具体案例 JDBC 需求&#xff1a;满足Java程序能对多个不同的数据库进行操作&#xff0c;而创建了一种接口&#xff0c;实现对数据库的规范 连接数据库的方式 1.方法1 先创建一个Driver对象&#xff0c;然后设置连接到的数据…

【unity实战】3D水系统,游泳,潜水,钓鱼功能实现

最终效果 文章目录 最终效果素材将项目升级为URP画一个水潭地形材质升级为URP创建水调节水第一人称人物移动控制游泳水面停留添加水下后处理水下呼吸钓鱼参考完结 素材 https://assetstore.unity.com/packages/vfx/shaders/urp-stylized-water-shader-proto-series-187485 将…

239.滑动窗口最大值

一个和 滑动窗口有关的题目 官方给出了三种解法 很值得借鉴 方法一: priority_queue O(nlogn) 使用模板库的优先队列保存pair(i, nums[i]) 在取最大值 .top() 的时候 注意 看一看它的下标在不在范围内(<i-k), 不在的时候需要把它(队首元素)pop出去 每次push或者pop…

Meta正打造一个巨型AI模型,旨在为其“整个视频生态系统”提供动力,一位高管透露

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

【Linux】gcc与make、makefile

文章目录 1 gcc/g1.1 预处理1.2 编译1.3 汇编1.4 链接1.4.1 静态链接1.4.2 动态链接 2 make和makefile2.1 依赖关系2.2 依赖方法2.3 伪目标 3 总结 1 gcc/g 当我们创建一个文件&#xff0c;并向里面写入代码&#xff0c;此时&#xff0c;我们该如何使我们的代码能够运行起来呢&…