,通过 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 实现思路 核心是数据劫持结合发布-订阅模式,通过 Object.defineProperty 或 Proxy 监听数据变化,触发视图更新。 数据劫持实现 class Observer…

vue表格实现教学

vue表格实现教学

Vue 表格实现方法 使用原生HTML表格 在Vue模板中直接使用HTML的<table>标签,结合v-for动态渲染数据: <template> <table&g…

vue卖座网实现

vue卖座网实现

Vue 卖座网实现 项目结构搭建 使用 Vue CLI 快速初始化项目,安装必要依赖如 Vue Router、Vuex、Axios。 创建核心目录结构:components(通用组件)、views(页…

vue登录逻辑的实现

vue登录逻辑的实现

Vue 登录逻辑实现 前端实现 创建登录组件 在 Vue 项目中创建一个登录组件,通常命名为 Login.vue。该组件包含表单元素,如用户名和密码输入框,以及提交按钮。 <template…

拖拽式编程vue实现

拖拽式编程vue实现

拖拽式编程在 Vue 中的实现方法 使用 HTML5 原生拖放 API Vue 可以结合 HTML5 的拖放 API 实现基础拖拽功能。通过 draggable 属性标记可拖拽元素,监听 dragst…

vue为啥能实现监听

vue为啥能实现监听

Vue 实现监听的原理 Vue 的监听能力主要基于其响应式系统,该系统通过数据劫持和依赖收集实现。当数据变化时,系统能自动触发视图更新或执行回调函数。 核心机制:Object.defineProp…