vue 上下滑动选择小时
时间: 2023-09-14 20:14:01 浏览: 120
下拉选择时间
你可以使用 Vue.js 中的指令 `v-on:scroll` 来监听滚动事件,然后根据滚动条的位置来判断当前选中的小时。
以下是一个简单的实现示例:
```html
<template>
<div class="hour-picker" v-on:scroll="onScroll">
<div v-for="hour in hours" :key="hour" class="hour" :class="{ active: hour === selectedHour }">{{ hour }}</div>
</div>
</template>
<script>
export default {
data() {
return {
hours: Array.from({ length: 24 }, (_, i) => i), // 生成小时数组
selectedHour: null, // 当前选中的小时
};
},
methods: {
onScroll(event) {
// 计算当前滚动位置
const scrollTop = event.target.scrollTop;
const hourHeight = 40; // 每个小时的高度
const hourIndex = Math.floor(scrollTop / hourHeight);
// 更新选中的小时
this.selectedHour = this.hours[hourIndex];
},
},
};
</script>
<style scoped>
.hour-picker {
height: 200px;
overflow-y: scroll;
}
.hour {
height: 40px;
line-height: 40px;
text-align: center;
}
.hour.active {
background-color: #ccc;
}
</style>
```
在上面的代码中,我们使用了 `v-for` 指令来生成小时列表,并且通过 `v-bind:class` 指令来动态添加选中样式。在滚动事件的回调函数中,我们首先计算当前的滚动位置,然后根据每个小时的高度来计算当前选中的小时的索引,最后更新 `selectedHour` 的值即可。
阅读全文