uniapp手写滚动选择器

代码

复制代码
<template>
	<view class="container">
		<picker-view class="sleepPage-time-picker" :indicator-style="indicatorStyle" :value="timeValue"
			@change="handleTimeChange">
			<picker-view-column>
				<view v-for="(val, index) in subsections" :key="index"
					:class="['sleepPage-time-picker_item',{ selected: timeValue[0] === index }]">
					{{ val }}
				</view>
			</picker-view-column>
			<!-- 小时选择 -->
			<picker-view-column>
				<view v-for="(hour, index) in hours" :key="index"
					:class="['sleepPage-time-picker_item',{ selected: timeValue[1] === index }]">
					{{ hour }}
				</view>
			</picker-view-column>
			<!-- 分钟选择 -->
			<picker-view-column>
				<view v-for="(minute, index) in minutes" :key="index"
					:class="['sleepPage-time-picker_item',{ selected: timeValue[2] === index }]">
					{{ minute }}
				</view>
			</picker-view-column>
		</picker-view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				timeValue: [0, 0, 0], // 默认选中的时间值,[小时索引, 分钟索引]
				indicatorStyle: "height: 50px;background: #fff;z-index: 0;",
				hours: [...Array(12).keys()].map((n) => (n + 1).toString().padStart(2, "0")), // 生成小时选项数组
				minutes: [...Array(60).keys()].map((n) => n.toString().padStart(2, "0")), // 生成分钟选项数组
				subsections: ["上午", "下午"], // 生成分钟选项数组
			};
		},
		onLoad() {
			let date = new Date();
			let hours = date.getHours();
			let minutes = date.getMinutes();
			console.log("hours--", hours);
			console.log("minutes--", minutes);
			let subsections = hours < 12 ? 0 : 1
			if (hours == 0) {
				hours = 12
			} else if (hours < 12) {
				hours = hours - 1
			} else if (hours > 12) {
				hours = hours - 13
			}
			this.timeValue = [subsections, hours, minutes]
		},
		methods: {
			handleTimeChange(e) {
				console.log("e.detail---", e.detail);
				this.timeValue = e.detail.value; // 更新选择的时间值
				// 处理选择后的逻辑,例如更新界面显示的时间
				console.log(
					"Selected Time:",
					this.hours[this.timeValue[0]],
					":",
					this.minutes[this.timeValue[1]]
				);
			},
		}

	}
</script>

<style>
	.container {}

	.sleepPage-time-picker-box {
		display: flex;
		margin-bottom: 10px;
	}

	.sleepPage-time-picker {
		height: 380rpx;
		width: 500rpx;
		margin: 0 auto;
	}

	.selected {
		color: #29c9d0;
	}

	.sleepPage-time-picker_item {
		text-align: center;
		height: 50px;
		line-height: 50px;
		position: relative;
		font-size: 40rpx;
	}
</style>

效果图

相关推荐
来恩1003几秒前
jQuery选择器
前端·javascript·jquery
前端繁华如梦3 分钟前
树上挂苹果还是挂玻璃球?Three.js 程序化果实的完整实现指南
前端·javascript
墨痕诉清风10 分钟前
Web浏览器客户端检测网站网络健康(代码)
前端·网络·测试工具
IMPYLH12 分钟前
Linux 的 wc 命令
linux·运维·服务器·前端·bash
江上清风山间明月19 分钟前
如何将python开发的window应用打包成exe
开发语言·python·exe·打包
SXJR25 分钟前
Java中的Cross-Encoder模型解决方案
java·开发语言
happybasic29 分钟前
Python库升级标准流程~
linux·前端·python
彦为君34 分钟前
JavaSE-11-BIO/NIO/AIO(多人聊天室)
java·开发语言·python·ai·nio
川冰ICE34 分钟前
前端工程化深度实战:从Webpack5到Vite5的构建工具演进与选型决策
前端
CDwenhuohuo35 分钟前
优惠券组件直接用 uview plus
前端·javascript·vue.js