,通过 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 中添加标记点:

<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实现发送值接受值

Vue 实现父子组件传值 父组件向子组件传值(props) 父组件通过 v-bind 或简写 : 向子组件传递数据。子组件通过 props 接收数据。 父组件代码: <template&g…

vue原型实现

vue原型实现

Vue 原型实现的关键点 Vue.js 的原型系统是其响应式机制的核心部分,通过原型链实现数据的动态绑定和依赖收集。以下是实现 Vue 原型的主要技术要点。 数据响应式原理 Vue 通过 Objec…

vue实现切换

vue实现切换

Vue 实现切换功能的方法 在 Vue 中实现切换功能可以通过多种方式实现,以下是一些常见的方法: 使用 v-if 和 v-else 指令 通过条件渲染实现切换功能,适用于简单的显示/隐藏场景…

vue实现frame

vue实现frame

Vue 中实现 iframe 的方法 在 Vue 中可以通过直接使用 <iframe> 标签或动态绑定 src 属性来实现 iframe 功能。 基本用法 <template…

vue el 实现

vue el 实现

Vue 中使用 Element UI (el) 的实现方法 Element UI 是一个基于 Vue 的组件库,提供丰富的 UI 组件,常用于快速构建企业级中后台产品。以下介绍 Vue 项目中集成和使…

vue 实现排序

vue 实现排序

Vue 实现排序的方法 使用计算属性实现排序 通过计算属性对数组进行排序,可以保持原始数据不变。示例代码展示了如何对列表按名称升序排序: <template> <div>…