当前位置:首页 > VUE

vue实现滑动条

2026-03-07 20:47:53VUE

Vue 实现滑动条的方法

使用原生 HTML5 input range

通过 Vue 绑定 v-model 实现双向数据绑定,监听 inputchange 事件更新数值。

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

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

自定义样式滑动条

通过 CSS 覆盖原生样式实现个性化设计。

<template>
  <div class="custom-slider">
    <input 
      type="range" 
      class="slider"
      v-model="value"
    />
  </div>
</template>

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

.slider {
  -webkit-appearance: none;
  width: 100%;
  height: 8px;
  background: #ddd;
  outline: none;
  opacity: 0.7;
  transition: .2s;
}

.slider:hover {
  opacity: 1;
}

.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 20px;
  height: 20px;
  background: #4CAF50;
  cursor: pointer;
  border-radius: 50%;
}
</style>

使用第三方组件库

推荐使用 vue-slider-component 等成熟库实现高级功能。

vue实现滑动条

安装:

npm install vue-slider-component --save

示例代码:

vue实现滑动条

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

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

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

实现垂直滑动条

通过 CSS 的 transform 属性旋转实现垂直方向。

<template>
  <div class="vertical-container">
    <input 
      type="range" 
      class="vertical-slider"
      v-model="value"
    >
  </div>
</template>

<style>
.vertical-container {
  height: 200px;
  display: flex;
  align-items: center;
}

.vertical-slider {
  -webkit-appearance: slider-vertical;
  width: 8px;
  height: 150px;
  padding: 0 5px;
}
</style>

带刻度标记的滑动条

结合 v-for 渲染刻度标记,通过计算属性定位。

<template>
  <div class="marked-slider">
    <input 
      type="range" 
      v-model="value"
      min="0"
      max="100"
      step="10"
    >
    <div class="marks">
      <span 
        v-for="i in 11" 
        :key="i"
        :style="{ left: `${(i-1)*10}%` }"
      >{{ (i-1)*10 }}</span>
    </div>
  </div>
</template>

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

.marks {
  display: flex;
  justify-content: space-between;
  position: absolute;
  width: 100%;
  top: 20px;
}

.marks span {
  position: absolute;
  transform: translateX(-50%);
}
</style>

标签: vue
分享给朋友:

相关文章

eventbus vue实现

eventbus vue实现

EventBus 实现原理 EventBus 是一种发布/订阅模式,用于 Vue 组件间的通信。核心是通过一个中央事件总线管理事件监听和触发。 创建 EventBus 在 Vue 项目中创建一个独立…

vue 方法实现

vue 方法实现

在 Vue 中,方法的实现通常通过 methods 选项完成。以下是 Vue 方法实现的核心要点和示例: 基本方法定义 在 Vue 组件中定义方法时,需将函数声明放在 methods 对象内。这些方…

vue router 实现

vue router 实现

Vue Router 的实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的核心实现方式。 安装 Vue Router 通过…

vue实现定时

vue实现定时

Vue 实现定时功能的方法 使用 setInterval 和 clearInterval 在 Vue 中可以通过 setInterval 和 clearInterval 实现定时功能。在组件的 mou…

vue 实现流程

vue 实现流程

Vue 实现流程 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是 Vue 实现的基本流程: 安装 Vue.js 通过 CDN 引入或使用 npm/yarn 安装:…

vue如何实现

vue如何实现

Vue 实现方法 在 Vue 中实现功能通常涉及组件化开发、状态管理和响应式数据绑定。以下是几种常见的实现方式: 组件化开发 使用 Vue 的单文件组件(.vue 文件)结构,将 UI 拆分为可复用…