返回顶部
首页 > 资讯 > 精选 >Vue怎么实现双向滑动输入条
  • 732
分享到

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

2023-06-29 09:06:01 732人浏览 独家记忆
摘要

这篇“Vue怎么实现双向滑动输入条”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“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怎么实现双向滑动输入条”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: Vue怎么实现双向滑动输入条

本文链接: https://lsjlt.com/news/323880.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vue怎么实现双向滑动输入条
    这篇“Vue怎么实现双向滑动输入条”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue怎么实现双向滑动输入条”文章吧。效果图...
    99+
    2023-06-29
  • Vue实现双向滑动输入条
    本文实例为大家分享了Vue实现双向滑动输入条的具体代码,供大家参考,具体内容如下 效果图如下: 组件支持传入最小值(min)最大值(max)的范围,并可设置初始最小值(initial...
    99+
    2024-04-02
  • vue怎么实现滑动验证条
    这篇文章主要介绍“vue怎么实现滑动验证条”,在日常操作中,相信很多人在vue怎么实现滑动验证条问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue怎么实现滑动验证条”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-29
  • vue实现滑动验证条
    本文实例为大家分享了vue实现滑动验证条的具体代码,供大家参考,具体内容如下 效果 代码 VerifySlider.vue <template>   <div ...
    99+
    2024-04-02
  • 怎么用CSS来美化滑动输入条
    这篇文章主要为大家展示了“怎么用CSS来美化滑动输入条”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么用CSS来美化滑动输入条”这篇文章吧。关于原生 inpu...
    99+
    2024-04-02
  • Vue怎么实现下拉框双向联动效果
    今天小编给大家分享一下Vue怎么实现下拉框双向联动效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、前言在开发前端页面的...
    99+
    2023-06-29
  • Android怎么自定义双向滑动控件
    这篇文章主要介绍“Android怎么自定义双向滑动控件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android怎么自定义双向滑动控件”文章能帮助大家解决问题。先看一下效果图1.SeekBarPr...
    99+
    2023-06-30
  • Vue 3.0 中怎么实现双向绑定
    本篇文章为大家展示了Vue 3.0 中怎么实现双向绑定,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。双向绑定由两个单向绑定组成:模型 &mdash;>...
    99+
    2024-04-02
  • vue 数据双向绑定怎么实现
    这篇文章给大家分享的是有关vue 数据双向绑定怎么实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 前言实现简易版的数据双向绑定2. 代码实现2.1 目的分析本文要实现的效果如下图所示:本文用到的HTML和...
    99+
    2023-06-06
  • vue双向数据绑定怎么实现
    Vue的双向数据绑定是通过v-model指令来实现的。1. v-model是Vue提供的一个指令,用于在表单元素上实现双向数据绑定。...
    99+
    2023-08-09
    vue
  • Android开发双向滑动选择器范围SeekBar实现
    目录一、概述二、实现2.1 首先看我们自定义View的全部代码2.2 实现流程初始化计算宽高onDraw 绘制进度条事件监听三、使用 布局文件布局文件(有刻度线)布局文件(无刻...
    99+
    2022-06-09
    选择器 选择 seekbar android开发 Android
  • vue中怎么实现一个拖拽进度条滑动组件
    这期内容当中小编将会给大家带来有关vue中怎么实现一个拖拽进度条滑动组件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。调用组件如下:<slider :mi...
    99+
    2024-04-02
  • Vue 中怎么实现数据双向绑定
    本篇文章给大家分享的是有关 Vue 中怎么实现数据双向绑定,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MVVM 架构的优点低耦合。视图(Vi...
    99+
    2024-04-02
  • vue中双向数据绑定怎么实现
    vue中双向数据绑定是通过数据劫持结合发布订阅模式的方式来实现的,其核心方法是Object.defineProperty()方法。实现双向数据绑定的示例:<!DOCTYPE html><html><h...
    99+
    2024-04-02
  • Vue中怎么实现数据双向绑定
    这篇文章主要介绍了Vue中怎么实现数据双向绑定的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中怎么实现数据双向绑定文章都会有所收获,下面我们一起来看看吧。在我们使用vue的时候,当数据发生了改变,界面也会...
    99+
    2023-07-04
  • vue怎么实现界面滑动效果
    本文小编为大家详细介绍“vue怎么实现界面滑动效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue怎么实现界面滑动效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。项目需求...
    99+
    2024-04-02
  • vue怎么实现滑动解锁功能
    本文小编为大家详细介绍“vue怎么实现滑动解锁功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue怎么实现滑动解锁功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果如下话不多说,直接上代码;<te...
    99+
    2023-06-29
  • 怎么在vue中实现数据双向绑定
    怎么在vue中实现数据双向绑定?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。vue是什么Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的...
    99+
    2023-06-14
  • vue怎么实现响应式与双向数据
    这篇文章给大家介绍vue怎么实现响应式与双向数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。vue-响应式是什么Vue 最独特的特性之一,是其非侵入性的响应式系统。数据模型仅仅是普通的 JavaScript对象。而当...
    99+
    2023-06-15
  • Vue组件间的双向绑定怎么实现
    这篇“Vue组件间的双向绑定怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue组件间的双向绑定怎么实现”文章吧。何...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作