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

css系列:进度条

前言

技术来源于需求,近期遇到了做语音的需求,有个调整语速和音量的进度条,UI组件库的进度条大部分不支持拖动和点击修改当前进度,所以自己手写了一个。

实现思路

MDN文档介绍

<input type="range"> - HTML(超文本标记语言) | MDN

input中type为range为进度条,然后做一些样式的修改和功能的加工封装为组件。

代码

<template><div class="progress-container"><input type="range" min="0" max="100" :value="currentProgress" :class="[rangeClass, 'silder']" /><div :class="[progressClass,'progress-bar']"></div></div>
</template><script>
export default {props: {// 一个页面用到多个此进度条组件的话要注意多个组件的类名要不同// 灰色的整个进度条的类名rangeClass: {type: String,default: "progress-range"},// 蓝色高亮的进度条的类名progressClass: {type: String,default: "progress-bar"},currentProgress: {type: Number,}},mounted() {const silder = document.querySelector("." + this.rangeClass);const progressBar = document.querySelector("." + this.progressClass);let that = this// 略微有点问题,偶发性会不触发绑定事件silder.oninput = function() {progressBar.style.width = this.value + "%";that.$emit('input',Number(this.value))};}
};
</script><style lang="less" scoped>
@height: 4px;
@color: #3370ff;
@borderRadius: 2px;
.progress-container {width: 100%;position: relative;margin-top: -3px;.silder {-webkit-appearance: none;appearance: none;width: 100%;height: @height;background: rgba(0, 0, 0, 0.12);outline: none;opacity: 0.7;-webkit-transition: 0.2s;transition: opacity 0.2s;border-radius: @borderRadius;&:hover {opacity: 1;}&::-moz-range-thumb{width: 25px;height: 25px;background: @color;cursor: pointer;}}.progress-bar {position: absolute;top: 12px;width: 50%;height: @height;background: @color;border-radius: @borderRadius;}
}
</style>

结语

样式部分为笔者需求的样式,需要根据自己项目需要调整。

!!有个问题是偶发性绑定事件不触发,暂时还没解决,欢迎大家帮忙解决。

相关文章:

  • 如何跨渠道分析销售数据 - 7年制造业销售经验小结
  • 数据库管理-第198期 升级Oracle ACE Pro,新赛季继续努力(20240605)
  • mac M1下安装PySide2
  • redis学习路线
  • 人工智能对话系统源码 手机版+电脑版二合一 全端支持 前后端分离 带完整的安装代码包以及搭建部署教程
  • 基于SpringBoot的装饰工程管理系统源码数据库
  • AI三巨擘或面临反垄断审查 | 百能云芯
  • Kotlin 异常处理
  • 动态语言的开源编译器汇总
  • 链表的中间结点
  • Mybatis最全学习文档
  • Linux编译器-gcc或g++的使用
  • 区间预测 | Matlab实现QRCNN-BiGRU-Attention分位数回归卷积双向门控循环单元注意力机制时序区间预测
  • 数据流图(DFD)绘制规范
  • Visual 怎么编程:一场视觉与逻辑的奇妙旅程
  • @angular/forms 源码解析之双向绑定
  • 【前端学习】-粗谈选择器
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • echarts的各种常用效果展示
  • JAVA_NIO系列——Channel和Buffer详解
  • Lsb图片隐写
  • webpack+react项目初体验——记录我的webpack环境配置
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 初识MongoDB分片
  • 基于游标的分页接口实现
  • ------- 计算机网络基础
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 移动端唤起键盘时取消position:fixed定位
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • "无招胜有招"nbsp;史上最全的互…
  • ###C语言程序设计-----C语言学习(3)#
  • #1015 : KMP算法
  • #大学#套接字
  • #数学建模# 线性规划问题的Matlab求解
  • #微信小程序:微信小程序常见的配置传值
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (160)时序收敛--->(10)时序收敛十
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (BFS)hdoj2377-Bus Pass
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (LLM) 很笨
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (万字长文)Spring的核心知识尽揽其中
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)【Hibernate总结系列】使用举例
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .md即markdown文件的基本常用编写语法
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET 8 跨平台高性能边缘采集网关