我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue怎么实现双向滑动输入条

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue怎么实现双向滑动输入条

这篇“Vue怎么实现双向滑动输入条”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue怎么实现双向滑动输入条”文章吧。

效果图如下:

组件支持传入最小值(min)最大值(max)的范围,并可设置初始最小值(initialMin)和初始最大值(initialMax)

拖动滑块调整最大最小值,并可点击输入条位置,切换数值

Vue怎么实现双向滑动输入条

①创建滑动输入条组件Slider.vue

<template>  <div class="m-slider" ref="slider">    <div class="u-slider-rail" @click="onClickPoint"></div>    <div class="u-slider-track" @click="onClickPoint" :></div>    <div class="u-slider-handle" ref="left" @mousedown="onLeftMouseDown" :></div>    <div class="u-slider-handle" ref="right" @mousedown="onRightMouseDown" :></div>  </div></template><script>export default {  name: 'Slider',  props: {    min: { // 滑动输入条最小值      type: Number,      default: 0    },    max: { // 滑动输入条最大值      type: Number,      default: 100    },    initialMin: { // 滑动输入条初始最小值,默认在最左侧      type: Number,      default: 0    },    initialMax: { // 滑动输入条初始最大值,默认在最右侧      type: Number,      default: 100    }  },  data () {    return {      left: '', // 左滑块距离滑动条左端的距离      right: '', // 右滑动距离滑动条左端的距离      width: '' // 滑动输入条在页面中的宽度    }  },  mounted () {    this.width = this.$refs.slider.clientWidth    this.left = this.initialMin * this.width / this.max    this.right = this.initialMax * this.width / this.max  },  computed: {    low () {      return Math.round(this.left / this.width * this.max)    },    high () {      return Math.round(this.right / this.width * this.max)    }  },  watch: {    low (to, from) {      this.$emit('lowChange', to) // 左滑块对应数字回调    },    high (to, from) {      this.$emit('highChange', to) // 右滑块对应数字回调    }  },  methods: {    onClickPoint (e) { // 点击滑动条,移动滑块      var offsetLeft = this.$refs.slider.offsetLeft // 滑动条左端距离屏幕左侧的距离      var moveX = e.clientX - offsetLeft      if (moveX <= this.left) {        this.left = moveX      } else if (this.moveX >= this.right) {        this.right = this.moveX      } else {        if ((moveX - this.left) < (this.right - moveX)) {          this.left = moveX        } else {          this.right = moveX        }      }    },    onLeftMouseDown (e) { // 在滚动条上拖动左滑块      // 滑块水平方向上距离屏幕左端的距离,减去滑块距离滑动条最左端的距离:e.clientX - this.$refs.left.offsetLeft      var offsetLeft = this.$refs.slider.offsetLeft // 滑动条左端距离屏幕左侧的距离      document.onmousemove = (e) => {        var moveX = e.clientX - offsetLeft        if (moveX < 0) {          this.left = 0        } else if (moveX >= this.right) {          this.left = this.right        } else {          this.left = moveX        }      }      document.onmouseup = (e) => {        document.onmousemove = null        document.onmouseup = null      }    },    onRightMouseDown (e) { // 在滚动条上拖动右滑块      /// 滑块水平方向上距离屏幕左端的距离,减去滑块距离滑动条最左端的距离:e.clientX - this.$refs.left.offsetLeft      var offsetLeft = this.$refs.slider.offsetLeft // 滑动条左端距离屏幕左侧的距离      console.log('offsetLeft:', offsetLeft)      document.onmousemove = (e) => {        var moveX = e.clientX - offsetLeft        if (moveX > this.width) {          this.right = this.width        } else if (moveX <= this.left) {          this.right = this.left        } else {          this.right = moveX        }      }      document.onmouseup = (e) => {        document.onmousemove = null        document.onmouseup = null      }    }  }}</script><style lang="less" scoped>.m-slider {  height: 4px;  position: relative;  cursor: pointer;  touch-action: none;  &:hover {    .u-slider-rail { // 灰色未选择滑动条背景色      background: #E3E3E3;    }    .u-slider-track { // 蓝色已选择滑动条背景色      background: #1890ff;    }  }  .u-slider-rail { // 灰色未选择滑动条背景色    position: absolute;    z-index: 99;    height: 4px;    width: 100%;    background: #f5f5f5;    border-radius: 2px;    transition: background .3s;  }  .u-slider-track { // 蓝色已选择滑动条背景色    background: #91d5ff;    border-radius: 4px;    position: absolute;    z-index: 99;    height: 4px;    cursor: pointer;    transition: background .3s;  }  .u-slider-handle { // 滑块    position: absolute;    z-index: 999;    width: 14px;    height: 14px;    margin-top: -7px;    box-shadow: 0;    background: #fff;    border: 2px solid #91d5ff;    border-radius: 50%;    cursor: pointer;    transition: border-color .3s,box-shadow .6s,transform .3s cubic-bezier(.18,.89,.32,1.28);    &:hover {      border-color: #1890ff;    }  }}</style>

②在要使用的页面引入

<div class="m-num">    <p class="u-num">{{ low }}</p>    <p class="u-num">{{ high }}</p></div><div class="slider">    <Slider        :min="0"        :max="100"        :initialMin="low"        :initialMax="high"        @lowChange="lowChange"        @highChange="highChange"    /></div>import Slider from '@/components/Slider'components: {    Slider}data () {    return {        low: 20,        high: 80    }}lowChange (val) {      this.low = val      console.log('lowChange:', val)},highChange (val) {      this.high = val      console.log('highChange:', val)}

以上就是关于“Vue怎么实现双向滑动输入条”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue怎么实现双向滑动输入条

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue怎么实现双向滑动输入条

这篇“Vue怎么实现双向滑动输入条”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue怎么实现双向滑动输入条”文章吧。效果图
2023-06-29

vue怎么实现滑动验证条

这篇文章主要介绍“vue怎么实现滑动验证条”,在日常操作中,相信很多人在vue怎么实现滑动验证条问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue怎么实现滑动验证条”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-29

Vue怎么实现下拉框双向联动效果

今天小编给大家分享一下Vue怎么实现下拉框双向联动效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、前言在开发前端页面的
2023-06-29

vue 数据双向绑定怎么实现

这篇文章给大家分享的是有关vue 数据双向绑定怎么实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 前言实现简易版的数据双向绑定2. 代码实现2.1 目的分析本文要实现的效果如下图所示:本文用到的HTML和
2023-06-06

vue双向数据绑定怎么实现

Vue的双向数据绑定是通过v-model指令来实现的。1. v-model是Vue提供的一个指令,用于在表单元素上实现双向数据绑定。可以将v-model绑定到一个Vue实例的data属性上,这样在表单元素中输入的值会自动同步到Vue实例的d
2023-08-09

Vue中怎么实现数据双向绑定

这篇文章主要介绍了Vue中怎么实现数据双向绑定的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中怎么实现数据双向绑定文章都会有所收获,下面我们一起来看看吧。在我们使用vue的时候,当数据发生了改变,界面也会
2023-07-04

vue怎么实现滑动解锁功能

本文小编为大家详细介绍“vue怎么实现滑动解锁功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue怎么实现滑动解锁功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果如下话不多说,直接上代码;
2023-06-29

怎么在vue中实现数据双向绑定

怎么在vue中实现数据双向绑定?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。vue是什么Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的
2023-06-14

Vue组件间的双向绑定怎么实现

这篇“Vue组件间的双向绑定怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue组件间的双向绑定怎么实现”文章吧。何
2023-07-05

vue双向绑定的订阅器怎么实现

这篇文章主要介绍“vue双向绑定的订阅器怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue双向绑定的订阅器怎么实现”文章能帮助大家解决问题。在Vue.js中,双向数据绑定是其最为重要也是最
2023-07-06

vue怎么实现响应式与双向数据

这篇文章给大家介绍vue怎么实现响应式与双向数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。vue-响应式是什么?Vue 最独特的特性之一,是其非侵入性的响应式系统。数据模型仅仅是普通的 JavaScript对象。而
2023-06-15

vue输入框怎么实现输完后光标自动跳到下一个输入框中

本篇内容主要讲解“vue输入框怎么实现输完后光标自动跳到下一个输入框中”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue输入框怎么实现输完后光标自动跳到下一个输入框中”吧!实现思路首先我们需要
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录