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

实现滑动选择器从离散型的数组中选择

1.使用原生的input

详细代码如下:

<template><div class="slider-container"><!-- 滑动条 --><inputtype="range"v-model.number="sliderIndex":min="0":max="customValues.length - 1"step="1"class="custom-slider"/><!-- 均分刻度 --><div class="marks"><div v-for="(value, index) in customValues":key="index"class="mark":style="{ left: getVisualPosition(index) + '%' }"><div class="mark-line"></div><div class="mark-label">{{ value }}</div></div></div><p>当前值: {{ currentValue }}</p></div>
</template><script>
export default {data() {return {customValues: [0, 0.1, 0.2, 1, 5, 10, 30, 50, 100],sliderIndex: 0};},computed: {currentValue() {return this.customValues[this.sliderIndex]; }},methods: {getVisualPosition(index) {return (index / (this.customValues.length - 1)) * 100; }}
};
</script><style scoped>
.slider-container {position: relative;width: 80%;margin: 20px auto;
}.custom-slider{margin:0;
}.custom-slider {width: 100%;
}.marks {position: relative;height: 20px;
}.mark {position: absolute;transform: translateX(-50%);text-align: center;
}.mark-line {width: 2px;height: 8px;background: #666;margin: 0 auto;
}.mark-label {font-size: 12px;color: #666;margin-top: 4px;
}
</style>

2.使用elementplus实现

代码如下:

<template><el-slider style='width:60%;margin: 0 auto;' v-model="currentValue" :min="0" :max="marksRange":step="1" :format-tooltip="formatTooltip" /><div style="margin-top:30px;text-align:center;">当前选中的值:{{ presetValues[currentValue] }}</div>
</template><script lang="ts" setup>
import { ref, computed } from 'vue'// 预设的非线性数值
const presetValues: Array<number> = [0, 0.1, 0.2, 1, 5, 10, 30, 50, 100]
// 计算视觉均分跨度
const marksRange = presetValues.length - 1
// 当前选中的下标
const currentValue = ref<number>(0)// 自定义提示格式化
const formatTooltip = (value: number) => {return presetValues[Math.round((value / marksRange) * (presetValues.length - 1))]
}
</script>

相关文章:

  • Vue Element UI 表单弹窗重置问题解决方案 —— 每次打开都初始化,告别残留提示!
  • Sublime PrettyJson 快捷键
  • Relay算子注册(在pytorch.py端调用)
  • 项目中为什么选择RabbitMQ
  • Ubuntu 22.04 安装配置远程桌面环境指南
  • Android 中解决 annotations 库多版本冲突问题
  • 从零搭建体育比分网站完整步骤
  • 高等数学第六章---定积分(§6.1元素法6.2定积分在几何上的应用1)
  • 【C++游戏引擎开发】第30篇:物理引擎(Bullet)—软体动力学系统
  • 【Linuc】深入理解 Linux 文件权限
  • 【MySQL】-- 数据库约束
  • SPP 和 yolo 中的SPP
  • 栈与队列详解及模拟实现
  • spring cloud gateway(网关)简介
  • 【HTML5】显示-隐藏法 实现网页轮播图效果
  • 路线 北大国际医院
  • Deepseek流式操作与用户行为数据分析day01
  • MySQL中MVCC指什么?
  • SQL大场笔试真题
  • 笔记本外接显示器检测不到hdmi信号
  • 【社论】三个“靠谱”为市场注入确定性
  • 公积金利率降至历史低位,百万房贷30年省5万
  • 央行将增加3000亿元科技创新和技术改造再贷款额度
  • 中国公民免签赴马来西亚的停留天数如何计算?使馆明确
  • “两高”出台司法解释,严打破坏黑土地资源犯罪
  • 经济日报头版刊文:为什么贸易战没有出路