当前位置: 首页 > 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>

结语

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

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

http://www.lryc.cn/news/367160.html

相关文章:

  • QT中为程序加入超级管理员权限
  • 共识算法之争(PBFT,Raft,PoW,PoS,DPoS)
  • 抽象的java入门1.3.0
  • 【Oracle生产运维】表空间可用性告警排查处理
  • mac Network: use --host to expose
  • ChatGPT-4o体验demo
  • FPGA SPI采集ADC7606数据
  • html three.js 引入.stl模型示例
  • 从零手写实现 nginx-11-文件处理逻辑与 range 范围查询合并
  • Java算法-力扣leetcode-167. 两数之和 II - 输入有序数组
  • 实战 | YOLOv10 自定义数据集训练实现车牌检测 (数据集+训练+预测 保姆级教程)
  • 自定义类型:结构体+结构体内存对齐+结构体实现位段
  • 0109__strip(1) command
  • 英码科技推出鸿蒙边缘计算盒子:提升国产化水平,增强AI应用效能,保障数据安全
  • 从军事角度理解“战略与战术”
  • 最短路径——迪杰斯特拉与弗洛伊德算法
  • 6.7.11 一种新的迁移学习方法可提高乳房 X 线摄影筛查中乳腺癌的诊断率
  • 【Proteus8.16】Proteus8.16.SP3.exe的安装包,安装方法
  • 17、matlab实现均值滤波、中值滤波、Butterworth滤波和线性相位FIR滤波
  • 【Autopilot】没有自动添加本地管理员的问题处理
  • 【C#学习笔记】属性和字段
  • 最佳实践的实践 - API 不应将 HTTP 重定向到 HTTPS
  • 四种跨域解决方案
  • 移动端投屏到大屏幕的操作详解
  • 【环境搭建】3.阿里云ECS服务器 安装Redis
  • 动态语言的开源编译器汇总
  • Linux防火墙配置001
  • Tomcat概述及部署
  • [Vue3:Vite构建项目]:安装router实现登录页面路由跳转
  • 概率论与数理统计,重要知识点——全部公式总结