小DEMO:在vue中自定义range组件

1、组件样式

2、使用

import cSlider from '@/components/c-slider/c-slider.vue'<div class="range"><cSlider v-model="cScale" @change="cScaleChange" :min="1" :max="10"/>
</div>

3、组件代码

<template><div class="slider-box" data-id="1"ref="sliderBox" @mousedown.stop.prevent="onMousedown($event)"@mouseup.stop.prevent="onMouseup"@mouseleave.stop.prevent="onMouseup"@mousemove.stop.prevent="onMousemove($event)"><div class="slider-wrap"><div class="slider-bar"data-id="1":style="{width: ((modelValue - min)*stepWidth)+'px'}"><spanclass="slider-btn":class="{active: sliderActive}"data-id="1"@mousedown.stop.prevent="onMousedown($event, true)":style="{left: ((modelValue - min)*stepWidth)+'px'}"><b>{{ modelValue }}</b></span></div></div></div>
</template><script>export default {model: {prop: 'modelValue',event: 'change'},props: {modelValue: {type: Number,default: 0},min: {type: Number,default: 0},max: {type: Number,default: 10},step: {type: Number,default: 1}},data() {return {rangeValue: 0,stepWidth: 0,sliderBox: null,moveAbled: false,mousePoint: null,sliderActive: false}},mounted() {// document.addEventListener('mouseup', this.onMouseup)// document.addEventListener('mouseleave', this.onMouseup)// this.$nextTick(() => {let _sliderBox = this.$refs['sliderBox'].getBoundingClientRect()this.sliderBox = {width: _sliderBox.width,height: _sliderBox.height,top: _sliderBox.top + document.documentElement.scrollTop,left: _sliderBox.left + document.documentElement.scrollLeft}this.stepWidth = this.sliderBox.width/(this.max-this.min)// console.log('xxx', _sliderBox, this.sliderBox)// })},beforeMount() {// document.removeEventListener('mouseup', this.onMouseup)// document.removeEventListener('mouseleave', this.onMouseup)},methods: {onMousemove(e) {if(this.moveAbled) {this.sliderActive = truelet d = e.pageX - this.mousePoint.pageXlet _val = Math.round(this.modelValue + d/this.stepWidth)if(_val < this.min) {_val = this.min} else if(_val > this.max) {_val = this.max}if(_val !== this.modelValue) {this.mousePoint = e}this.$emit('update:modelValue', _val)this.$emit('change')console.log('onMousemove', _val)}},onMouseup() {// console.log('onMouseup')this.moveAbled = falsethis.sliderActive = false},onMousedown(e, moveAbled) {console.log('onMousedown', this.stepWidth)if(moveAbled) {this.moveAbled = moveAbledthis.mousePoint = e} else {let d = e.pageX - this.sliderBox.leftlet _val = Math.round(this.min + d/this.stepWidth)if(_val < this.min) {_val = this.min} else if(_val > this.max) {_val = this.max}this.$emit('update:modelValue', _val)this.$emit('change')}},}
}</script><style lang="scss" scoped>.slider-box {width: 100%;height: 100%;display: flex;align-items: center;.range {position: absolute;top: 50%;left: 50%;width: 100%;transform: translate(-50%, -50%);opacity: 0.3;}.slider-wrap {position: relative;width: 100%;height: 3px;border-radius: 2px;background: #D9D9D9;cursor: pointer;.slider-bar {border-radius: 2px;height: 100%;background: #0256FF;.slider-btn {cursor: grab;position: absolute;top: 50%;left: 0;transform: translate(-50%, -50%);width: 10px;height: 10px;background: white;border-radius: 100%;box-shadow: 0 0 2px 2px #D6D6D6;&:hover, &.active {width: 15px;height: 15px;b {display: block;}}&::after {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);content: '';width: 4px;height: 4px;background: #0256FF;border-radius: 100%;}b {display: none;position: absolute;top: -10px;left: 50%;background: rgba(0, 0, 0, 0.3);color: white;font-size: 12px;padding: 0 5px;border-radius: 5px;transform: translate(-50%, -100%);&::after {position: absolute;bottom: 0px;left: 50%;transform: translate(-50%, 100%);content: '';width: 0;height: 0;border-top: 4px solid rgba(0, 0, 0, 0.3);border-left: 4px solid transparent;border-right: 4px solid transparent;border-right: 4px solid transparent;}}}}}}
</style>

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

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

相关文章

【数电】IEEE754浮点数

IEEE754浮点数 1.组成及分类2.计算(1)符号位(2)阶码(3)尾码(4)实际计算公式 1.组成及分类 &#xff08;1&#xff09;组成 IEEE754浮点数由三部分组成&#xff1a;符号位、阶码和尾码。 &#xff08;2&#xff09;分类 根据数据位宽分为三类&#xff1a;短浮点数、长浮点数和…

C++ opencv基本用法【学习笔记(九)】

这篇博客为修改过后的转载&#xff0c;因为没有转载链接&#xff0c;所以选了原创 文章目录 一、vs code 结合Cmake debug1.1 配置tasks.json1.2 配置launch.json 二、图片、视频、摄像头读取显示2.1 读取图片并显示2.2 读取视频文件并显示2.3 读取摄像头并写入文件 三、图片基…

轻量封装WebGPU渲染系统示例<30>- 绘制线段(源码)

原理说明&#xff1a; WebGPU提供了绘制基本线条非机制&#xff0c;只要render pipeline primitive对应的 topology属性指定为line-list或者line-strip即可绘制对应的线条。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxg…

计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)

第1章&#xff1a;视觉项目资料介绍与学习指南 相关知识&#xff1a; 介绍计算机视觉、OpenCV库&#xff0c;以及课程的整体结构。学习概要&#xff1a; 了解课程的目标和学习路径&#xff0c;为后续章节做好准备。重要性&#xff1a; 提供学生对整个课程的整体认识&#xff0…

2023年【安全员-C证】考试题库及安全员-C证考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-C证考试题库根据新安全员-C证考试大纲要求&#xff0c;安全生产模拟考试一点通将安全员-C证模拟考试试题进行汇编&#xff0c;组成一套安全员-C证全真模拟考试试题&#xff0c;学员可通过安全员-C证考试总结全…

Netty入门指南之Reactor模型

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言单线程…

Git本地项目提交到Gitee的操作流程

一、Gitee创建一个仓库 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a;复制该仓库地址&#xff08;https://gitee.com/yassels/test_1115.git&#xff09;&#xff0c;留待后续使用 二、操作本地文件上传到Gitee 第一步&#xff1a; 第二步…

利用网络管理解决方案简化网络运维

当今的网络正朝着提高敏捷性和动态功能的方向发展&#xff0c;以支持高级网络要求和关键业务流程&#xff0c;这导致 IT 基础架构也跨越无线、虚拟和混合环境。但是&#xff0c;随着网络的快速发展&#xff0c;如果没有合适的解决方案&#xff0c;IT 管理员很难管理它们&#x…

Unity游戏开发客户端面经,六万字面经知识点,一篇就够了

目前这是记录一些被常问的面经&#xff0c;面向初级&#xff0c;总结了大约六万字的常问知识点&#xff0c;有各种大佬的链接可以深入的了解。希望可以帮助正在准备八股的同学们。 C#&#xff1a;Unity游戏开发客户端面经——C#&#xff08;初级&#xff09;_正在奋斗中的小志的…

【Hello Go】Go语言运算符

Go语言运算符 算术运算符关系运算符逻辑运算符位运算符赋值运算符其他运算符运算符优先级 算术运算符 如果之前没有其他语言基础的小伙伴可以参考下我之前写的C语言运算符讲解 这里主要讲解下Go和C运算符的不同点 – 运算符 Go语言中只有后置 和后置– var a int 5a--fmt.P…

Go常见数据结构的实现原理——map

&#xff08;一&#xff09;基础操作 版本&#xff1a;Go SDK 1.20.6 1、初始化 map分别支持字面量初始化和内置函数make()初始化。 字面量初始化&#xff1a; m : map[string] int {"apple": 2,"banana": 3,}使用内置函数make()初始化&#xff1a; m …

2023年低压电工证考试题库及低压电工试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年低压电工证考试题库及低压电工试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲随机出的低压…