当前位置:首页 > VUE

用vue实现滑动输入条

2026-03-06 21:14:12VUE

使用 Vue 实现滑动输入条

基础实现(使用原生 input range)

Vue 可以结合 HTML 的原生 input[type="range"] 快速实现滑动输入条功能。以下是一个基础示例:

<template>
  <div>
    <input 
      type="range" 
      v-model="sliderValue" 
      :min="min" 
      :max="max" 
      @input="handleInput"
    />
    <p>当前值: {{ sliderValue }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      sliderValue: 50,
      min: 0,
      max: 100
    }
  },
  methods: {
    handleInput() {
      console.log('值变化:', this.sliderValue);
    }
  }
}
</script>

自定义样式滑动条

如果需要自定义样式,可以隐藏原生输入条并用 CSS 重新设计:

<template>
  <div class="custom-slider">
    <input 
      type="range" 
      v-model="sliderValue" 
      :min="min" 
      :max="max" 
      class="slider"
    />
    <div class="slider-track">
      <div 
        class="slider-thumb" 
        :style="{ left: thumbPosition }"
      ></div>
    </div>
    <span>{{ sliderValue }}</span>
  </div>
</template>

<script>
export default {
  data() {
    return {
      sliderValue: 30,
      min: 0,
      max: 100
    }
  },
  computed: {
    thumbPosition() {
      const range = this.max - this.min;
      const percent = (this.sliderValue - this.min) / range * 100;
      return `${percent}%`;
    }
  }
}
</script>

<style>
.custom-slider {
  position: relative;
  width: 300px;
}

.slider {
  position: absolute;
  width: 100%;
  opacity: 0;
  z-index: 2;
  height: 40px;
}

.slider-track {
  position: relative;
  width: 100%;
  height: 6px;
  background: #ddd;
  border-radius: 3px;
}

.slider-thumb {
  position: absolute;
  width: 20px;
  height: 20px;
  background: #42b983;
  border-radius: 50%;
  top: -7px;
  transform: translateX(-50%);
}
</style>

使用第三方库(如 vue-slider-component)

对于更复杂的需求,可以使用专门的 Vue 滑动组件库:

用vue实现滑动输入条

  1. 安装 vue-slider-component

    npm install vue-slider-component --save
  2. 基础使用示例:

    用vue实现滑动输入条

    
    <template>
    <vue-slider 
     v-model="value" 
     :min="0" 
     :max="100" 
     :interval="10"
     tooltip="always"
    />
    </template>
import VueSlider from 'vue-slider-component' import 'vue-slider-component/theme/default.css'

export default { components: { VueSlider }, data() { return { value: 40 } } }

```

实现双向滑动条(范围选择)

需要选择范围值时,可以使用数组作为 v-model:

<template>
  <vue-slider 
    v-model="rangeValue" 
    :min="0" 
    :max="100" 
    :tooltip="true"
    :range="true"
  />
</template>

<script>
export default {
  data() {
    return {
      rangeValue: [20, 80]
    }
  }
}
</script>

垂直滑动条实现

通过设置 direction 属性可以创建垂直滑动条:

<template>
  <vue-slider 
    v-model="value" 
    :min="0" 
    :max="100" 
    direction="vertical"
    :height="300px"
  />
</template>

注意事项

  • 移动端兼容性需要测试 touch 事件
  • 自定义样式时注意处理浏览器兼容前缀
  • 性能敏感场景避免频繁触发 @input 事件,可使用防抖
  • 无障碍访问需要添加适当的 ARIA 属性

标签: vue
分享给朋友:

相关文章

vue实现$.extend

vue实现$.extend

Vue 实现类似 jQuery 的 $.extend 功能 在 Vue 中实现类似 jQuery 的 $.extend 功能,可以通过多种方式完成。$.extend 主要用于合并多个对象的属性,Vue…

vue grid实现

vue grid实现

Vue Grid 实现方法 在 Vue 中实现网格布局可以通过多种方式完成,包括使用原生 CSS Grid、第三方组件库或自定义组件。以下是几种常见方法: 使用原生 CSS Grid 通过 Vue…

vue拖拽实现

vue拖拽实现

Vue 拖拽实现方法 使用 HTML5 原生拖拽 API HTML5 提供了原生拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 drop 事…

vue实现加减

vue实现加减

Vue 实现加减功能 在 Vue 中实现加减功能可以通过数据绑定和事件监听来完成。以下是一个简单的实现方法: 模板部分 <template> <div> <…

vue实现分步

vue实现分步

Vue 实现分步功能 在 Vue 中实现分步功能可以通过多种方式完成,以下是几种常见的方法: 使用动态组件 通过动态组件切换不同的步骤内容,结合 v-if 或 component 标签实现分步逻辑。…

vue实现模糊

vue实现模糊

Vue实现模糊搜索的方法 在Vue中实现模糊搜索功能通常需要结合输入框和列表渲染,通过监听输入内容动态过滤数据。以下是几种常见实现方式: 使用计算属性实现 计算属性适合处理需要响应式更新的搜索逻辑:…