当前位置: 首页 > news >正文

css-50 Projects in 50 Days(2)

html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>步骤条</title><link rel="stylesheet" href="./index.css">
</head><body><div class="container"><div class="steps_wrapper "><div class="step step_active">1</div><div class="step">2</div><div class="step">3</div><div class="step">4</div><div class="line transition400" id="line"></div></div><div class="btn_wrapper transition400"><button class="btn " disabled id="pre">上一步</button><button class="btn " id="next">下一步</button></div></div><script src="./index.js"></script>
</body></html>

css

$primary: #24acf2;@mixin center {display: flex;align-items: center;justify-content: center;
}.transition400 {transition: all 400ms ease;
}.transition500 {transition: all 500ms ease;
}.container {@include center();flex-direction: column;height: 100vh;.steps_wrapper {display: flex;gap: 50px;position: relative;&::after,.line {content: '';position: absolute;left: 0;top: 50%;transform: translateY(-50%);width: 100%;height: 3px;background-color: #eee;z-index: -2;}.line {width: 0;background-color: $primary;z-index: -1;}.step {border-radius: 50%;border: 2px solid #e0e0e0;box-sizing: border-box;@include center();width: 30px;height: 30px;font-size: 14px;color: #999;background-color: #fff;}.step_active {background-color: $primary;color: #fff;border-color: $primary;transition: 0.4s 0.2s all ease;}}.btn_wrapper {display: flex;gap: 20px;margin-top: 36px;.btn {width: 90px;height: 32px;background-color: $primary;border: 1px solid $primary;border-radius: 8px;color: #fff;cursor: pointer;}.btn:active {transform: scale(0.98);opacity: 0.9;}.btn:disabled {cursor: not-allowed;background-color: #eee;border-color: #eee;}}
}

js

const state = {pre: document.getElementById('pre'),next: document.getElementById('next'),line: document.getElementById('line'),steps: document.querySelectorAll(`.step`),len: 4,cur: 0,process: {pre: () => {if (state.cur > 0) {state.cur--;}},next: () => {if (state.cur < state.len) {state.cur++;}}}
}state.pre.onclick = () => update('pre')
state.next.onclick = () => update('next')
function update(type) {// 增减操作state.process[type]()// 禁用上一步,下一步state.pre.disabled = false;state.next.disabled = false;if (state.cur == 0) {state.pre.disabled = true}if (state.cur + 1 == state.len) {state.next.disabled = true}// 设置样式setStyle()
}
function setStyle() {const step_actives = document.querySelectorAll('.step_active');step_actives.forEach(item => item.classList.remove('step_active'));state.line.style.width = `${(state.cur) * 33}%`;state.steps.forEach((item, i) => {if (i <= state.cur) {item.classList.add('step_active');}})
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Shell脚本入门:多命令处理
  • 2024-08-30作业
  • 一条执行24s的SQL产生7小时主备延时(案例详解)
  • 注册免费的vps:infinityfree
  • Layer Normalization(层归一化)里的可学习的参数
  • nexus 清理 docker 镜像
  • Qt:玩转QPainter序列六(图形)
  • 使用Git从GitHub上拉去代码失败的解决办法
  • 大数据计算-SQL优化手段(CBO)-以Flink为例
  • 智能合约开发与测试1
  • 如何安全上网后能保障源代码泄密
  • 使用LinkedHashMap实现固定大小的LRU缓存
  • 三维重建学习
  • 计算机基础知识复习8.30
  • 若依脚手架 创建一个系统 his医院信息管理系统
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • avalon2.2的VM生成过程
  • IDEA常用插件整理
  • Java-详解HashMap
  • LeetCode29.两数相除 JavaScript
  • mysql 5.6 原生Online DDL解析
  • 每天一个设计模式之命令模式
  • 前端学习笔记之观察者模式
  • 设计模式(12)迭代器模式(讲解+应用)
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • raise 与 raise ... from 的区别
  • 整理一些计算机基础知识!
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • "无招胜有招"nbsp;史上最全的互…
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (1)svelte 教程:hello world
  • (16)Reactor的测试——响应式Spring的道法术器
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)正点原子I.MX6ULL u-boot移植
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .gitignore
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • /etc/fstab和/etc/mtab的区别
  • :中兴通讯为何成功
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • @SpringBootApplication 包含的三个注解及其含义
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [2019红帽杯]Snake
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [Android] Binder 里的 Service 和 Interface 分别是什么