,通过 v-model 绑定数据:…">
当前位置:首页 > VUE

用vue实现滑动输入条

2026-01-07 06:35:56VUE

使用 Vue 实现滑动输入条

使用原生 HTML5 input range 实现

在 Vue 模板中直接使用 <input type="range">,通过 v-model 绑定数据:

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

<script>
export default {
  data() {
    return {
      sliderValue: 50
    }
  },
  methods: {
    handleInput(event) {
      console.log('当前值:', event.target.value);
    }
  }
}
</script>

自定义样式滑块

通过 CSS 覆盖原生样式实现自定义外观:

<template>
  <div class="custom-slider">
    <input 
      type="range" 
      v-model="sliderValue"
      min="0"
      max="100"
      class="slider"
    >
  </div>
</template>

<style>
.custom-slider {
  width: 300px;
  margin: 20px;
}

.slider {
  -webkit-appearance: none;
  width: 100%;
  height: 8px;
  border-radius: 4px;
  background: #ddd;
  outline: none;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #42b983;
  cursor: pointer;
}

.slider::-moz-range-thumb {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #42b983;
  cursor: pointer;
}
</style>

使用第三方库 vue-slider-component

安装专业滑块组件库:

npm install vue-slider-component --save

实现示例:

<template>
  <vue-slider 
    v-model="value" 
    :min="0" 
    :max="100"
    :tooltip="'always'"
    :height="6"
    :dot-size="20"
    :process-style="{ backgroundColor: '#42b983' }"
  />
</template>

<script>
import VueSlider from 'vue-slider-component'
import 'vue-slider-component/theme/default.css'

export default {
  components: {
    VueSlider
  },
  data() {
    return {
      value: 30
    }
  }
}
</script>

实现双向滑块(范围选择)

修改 vue-slider-component 配置:

<template>
  <vue-slider 
    v-model="rangeValue" 
    :min="0" 
    :max="100"
    :tooltip="'always'"
    :enable-cross="false"
    :lazy="true"
  />
</template>

<script>
import VueSlider from 'vue-slider-component'

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

添加刻度标记

在 vue-slider-component 中添加标记点:

用vue实现滑动输入条

<template>
  <vue-slider 
    v-model="value"
    :min="0"
    :max="100"
    :interval="10"
    :marks="marks"
  />
</template>

<script>
export default {
  data() {
    return {
      value: 50,
      marks: {
        0: '0°C',
        25: '25°C',
        50: '50°C',
        75: '75°C',
        100: '100°C'
      }
    }
  }
}
</script>

以上方法提供了从简单到复杂的滑动输入条实现方案,可根据项目需求选择合适的实现方式。原生方案适合简单需求,而第三方组件则提供更丰富的功能和更好的自定义能力。

标签: vue
分享给朋友:

相关文章

vue实现多选联动

vue实现多选联动

vue实现多选联动的方法 使用v-model绑定数组 在Vue中,可以通过v-model绑定一个数组来实现多选联动。当复选框被选中或取消选中时,数组会自动更新。 <template>…

vue如何实现到期提醒

vue如何实现到期提醒

实现 Vue 到期提醒功能 使用计算属性计算剩余时间 在 Vue 组件中定义一个计算属性,计算目标日期与当前日期的差值。通过 Date 对象获取时间戳并计算剩余天数或小时数。 computed: {…

vue实现框架

vue实现框架

Vue 框架实现的核心方法 基础项目搭建 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 更适合现代轻量级应用。安装后通过命令行工具选择所需配置(如 Rou…

vue实现driver

vue实现driver

Vue 实现 Driver.js 引导功能 Driver.js 是一个轻量级的 JavaScript 库,用于在网页上创建引导式导览。以下是在 Vue 项目中集成 Driver.js 的详细方法:…

vue实现swipe

vue实现swipe

Vue实现Swipe功能的方法 使用第三方库(推荐) Vue生态中有多个成熟的轮播/滑动组件库,例如vue-awesome-swiper或swiper/vue。以下是基于swiper/vue的实现示例…

vue实现布局

vue实现布局

Vue 实现布局方法 Vue 提供了多种方式实现页面布局,可以通过组件化、CSS 框架或自定义样式完成。以下是几种常见方法: 使用 CSS Flexbox 或 Grid 通过 Vue 单文件组件结合…