uni——月份选择(横向滑动tab,横向滚动选择日期)

案例展示

在这里插入图片描述

案例代码

已封装成组件使用
<template><view><view class="tabBox"><scroll-view scroll-x="true" :scroll-left="scrollLeft" :scroll-with-animation="true"><view class="box"><view class="tabItem" v-for="(item,index) in monthList" :key="index":class="{'ac':tabCurrent == index}" @click="tabChange(index)">{{item.month}}</view></view></scroll-view></view></view>
</template><script>export default {data() {return {itemWidth: 0, //每个item的宽度scrollLeft: 0, //滑动距离tabCurrent: 0, //默认当前月份sendMonth:'',monthList: [{id: 1,month: '1月'}, {id: 2,month: '2月'}, {id: 3,month: '3月'}, {id: 4,month: '4月'}, {id: 5,month: '5月'}, {id: 6,month: '6月'}, {id: 7,month: '7月'}, {id: 8,month: '8月'}, {id: 9,month: '9月'}, {id: 10,month: '10月'}, {id: 11,month: '11月'}, {id: 12,month: '12月'}]}},mounted() {// 先获取当前时间的月份let date = new Date();this.tabCurrent = date.getMonth(); // getMonth()返回的月份从0开始  正好符合tabCurrent  不用再加1了this.sendMonth = date.getMonth()+1; // 初次加载,传当前月份this.$nextTick(() => {const query = uni.createSelectorQuery().in(this);query.select('.tabItem').boundingClientRect(data => {// item宽度 = 自身宽度 + 8px右边距this.itemWidth = data.width + 8;this.scrollLeft = this.itemWidth * (this.tabCurrent - 1);}).exec();})},methods: {// 点击tab切换高亮,并进行滑动,(index-1)是为了点击项显示在第二栏的位置tabChange(index) {this.tabCurrent = index;// 传参的月份this.sendMonth = this.monthList[index].idthis.scrollLeft = this.itemWidth * (index - 1);console.log(this.scrollLeft);this.$emit('tabChange',this.sendMonth)},}}
</script>
<style lang="scss">.tabBox {background: #ffffff;/* 隐藏滚动条样式 */::-webkit-scrollbar {width: 0;height: 0;}.box {width: 1400rpx;margin: 0 24rpx;display: flex;align-items: center;height: 90rpx;.tabItem {flex-shrink: 0;text-align: center;width: 100rpx;height: 60rpx;line-height: 60rpx;color: #636363;font-size: 28rpx;margin-right: 8px;border-radius: 50rpx;}.ac {background: #F9682A;font-size: 28rpx;color: #FFFFFF;}}}
</style>

参考网址

https://uniapp.dcloud.net.cn/component/scroll-view.html

2.年月按钮,从某个范围开始到当前的所有的月份。

案例展示

在这里插入图片描述

<template><view><view class="tabBox"><scroll-view scroll-x="true" :scroll-left="scrollLeft" :scroll-with-animation="true" class="scrollBox"><view class="box"><view class="tabItem" v-for="(item,index) in monthList" :key="index":class="{'ac':tabCurrent == index}" @click="tabChange(item,index)">{{item}}</view></view></scroll-view></view></view>
</template><script>export default {data() {return {itemWidth: 0, //每个item的宽度scrollLeft: 0, //滑动距离tabCurrent: 0, //默认当前月份sendMonth: '',monthList: [{}]}},mounted() {let date = new Date();let year = date.getFullYear();let month = date.getMonth() + 1;let day = date.getDate();let currentDate = `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`;this.getMonthsInRange('2020-01-01', currentDate);this.$nextTick(() => {const query = uni.createSelectorQuery().in(this);query.select('.tabItem').boundingClientRect(data => {this.itemWidth = data.width;this.scrollLeft = this.itemWidth * (this.tabCurrent - 1);}).exec();})},methods: {tabChange(item, index) {this.tabCurrent = index;this.sendMonth = itemthis.scrollLeft = this.itemWidth * (index - 1);this.$emit('tabChange', this.sendMonth)},getMonthsInRange(start, end) {var startMonth = new Date(start).getMonth();var endMonth = new Date(end).getMonth();var startYear = new Date(start).getFullYear();var endYear = new Date(end).getFullYear();var months = [];for (var i = startYear; i <= endYear; i++) {var monthStart = i === startYear ? startMonth : 0;var monthEnd = i === endYear ? endMonth : 11;for (var j = monthStart; j <= monthEnd; j++) {var month = j + 1;months.push(i + '-' + (month < 10 ? '0' + month : month));}}this.monthList = monthsthis.tabCurrent = this.monthList.length - 1 // 初次加载默认显示}}}
</script>
<style lang="scss">.tabBox {background: #ffffff;.scrollBox {margin: 0 24rpx;width: 700rpx;}/* 隐藏滚动条样式 */::-webkit-scrollbar {width: 0;height: 0;}.box {// width: 1400rpx;display: flex;align-items: center;height: 90rpx;.tabItem {flex-shrink: 0;text-align: center;width: 140rpx;height: 60rpx;line-height: 60rpx;color: #636363;font-size: 28rpx;border-radius: 50rpx;}.ac {background: #F9682A;font-size: 28rpx;color: #FFFFFF;}}}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/82932.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[excel]vlookup函数对相同的ip进行关联

一、需求&#xff08;由于ip不可泄漏所以简化如下&#xff09; 有两个sheet: 找到sheet1在sheet2中存在的ip&#xff0c;也就是找到有漏洞的ip 二、实现 vlookup函数有4个参数 第一个:当前表要匹配的列&#xff0c;选择第一个sheet当前行需要处理的ip即可 第二个:第二个shee…

北京多铁克FPGA笔试题目

1、使用D触发器来实现二分频 2、序列检测器&#xff0c;检测101&#xff0c;输出1&#xff0c;其余情况输出0 module Detect_101(input clk,input rst_n,input data, //输入的序列output reg flag_101 //检测到101序列的输出标志 );parameter S0 2d0;S1 2d1;S2 2d2;S4 …

ThingJS开发使用感受

封面来源于网络。 一、前言 1. 背景 出于为了实现有关厂区的数字孪生项目&#xff0c;断断续续使用ThingJS平台开发一年左右&#xff0c;做一个使用感受的总结。 2. 业务场景 开发一个基于厂区的数字孪生项目&#xff0c;基于ThingJS低代码开发的页面分为div3d、div2d结构&am…

rust关于项目结构包,Crate和mod和目录的组织

rust 最近开始学习rust语言。感觉这门语言相对java确实是难上很多。开几个文章把遇到的问题记录一下 rust关于包&#xff0c;Crate 关于包&#xff0c;Crate这块先看看官方书籍怎么说的 crate 是 Rust 在编译时最小的代码单位。如果你用 rustc 而不是 cargo 来编译一个文件…

直线模组在AGV物流设备起什么作用?

在物流产业高速发展的今天&#xff0c;机器人技术的应用程度已经成为决定企业间相互竞争和未来发展的重要衡量因素。智能机器人运用到物流产业&#xff0c;其效率不言而喻。AGV智能仓储作为现代物流系统的重要组成部分&#xff0c;物流自动化、智能化不光是能提升效率和安全性&…

【JavaEE】懒人的福音-MyBatis框架—介绍、搭建环境以及初步感受

【JavaEE】MyBatis框架要点总结&#xff08;1&#xff09; 文章目录 【JavaEE】MyBatis框架要点总结&#xff08;1&#xff09;1. MyBatis是什么&#xff1f;2. 搭建MyBatis的开发环境2.0 MySQL建库建表2.1 新项目添加MyBatis框架2.2 设置MyBatis的配置2.2.1 设置数据库的连接信…

U8g2 驱动oled自定义中文字库

原文&#xff1a;Arduino驱动LED128X64 - U8g2 参考&#xff1a; Arduino通过u8g2库驱动OLED适合 u8g2 的中文字体&#xff0c;采用文泉驿点阵宋体作为源本&#xff0c;提供 12x12、13x13、14x14、15x15 和 16x16 点阵字库。 本文所需工具下载 我们在项目中大概率会遇到LED显示…

Unity3d C#利用本地网页快速打开萤石云监控视频流(ezopen)实现云台,声音等控制,支持WebGL平台,替代UMP播放(含源码)

前言 之前我介绍了替代Universal?Media?PlayerUMP播放石云监控视频流(ezopen)的功能&#xff0c;效果还是很明显的&#xff0c;笔者的测试是差不多3-5秒就能打开监控画面&#xff0c;不过稍微遗憾的是&#xff0c;之前的功能是iframe打开石云提供的播放网页的形式&#xff0…

在linux系统上部署Nginx

一、准备环境 1、关闭防火墙 systemctl disable firewalld.service 2、 安装Nginx相关依赖 yum install -y gcc-c zlib zlib-developenssl openssl-devel pcre pcre-devel 二、源码安装 1、上传压缩包并解压到目标文件 cd /usr/local tar -zxvf nginx-1.22.0.tar.gz 2、…

06-4_Qt 5.9 C++开发指南_MDI应用程序设计

文章目录 1. MDI简介2. 文档窗口类 QFormDoc 的设计3. MDI主窗口设计与子窗口的使用3.1 主窗口界面设计3.2 MDI子窗口的创建与加入3.3 QMdiArea 常用功能函数3.4 MDI的信号 4. 源码4.1 qwmainwindow.h4.2 qwmainwindow.cpp 1. MDI简介 传统的应用程序设计中有多文档界面(Multi…

企业权限管理(六)-订单详情

订单详情查询 跳转到订单详情页面orders-show.jsp <button type"button" class"btn bg-olive btn-xs" onclick"location.href${pageContext.request.contextPath}/orders/findById.do?id${orders.id}">详情</button>OrdersControl…

北美跨境购物商城多语言多货币系统快捷搭建(java开源)

我了解到您想搭建一个北美跨境购物商城&#xff0c;拥有多语言和多货币系统&#xff0c;并且希望使用Java开源技术进行快速搭建。以下是一个基本的搭建步骤&#xff1a; 1.确定需求&#xff1a;首先确定您的商城需求&#xff0c;包括功能、设计和用户体验等方面。确保您清楚地…

进入现代云技术的世界-APIGateway、ServiceMesh、OpenStack、异步化框架、云原生框架、命令式API与声明式API

目录 APIGateway Service Mesh OpenStack 异步化框架 云原生框架 命令式API与声明式API APIGateway API网关&#xff08;API Gateway&#xff09;是一个服务器——充当了客户端和内部服务之间的中间层。API网关负责处理API请求&#xff0c;将客户端的请求路由到相应的后端…

数据挖掘全流程解析

数据挖掘全流程解析 数据指标选择 在这一阶段&#xff0c;使用直方图和柱状图的方式对数据进行分析&#xff0c;观察什么数据属性对于因变量会产生更加明显的结果。 如何绘制直方图和条形统计图 数据清洗 观察数据是否存在数据缺失或者离群点的情况。 数据异常的两种情况…

webpack基础知识八:说说如何借助webpack来优化前端性能?

一、背景 随着前端的项目逐渐扩大&#xff0c;必然会带来的一个问题就是性能 尤其在大型复杂的项目中&#xff0c;前端业务可能因为一个小小的数据依赖&#xff0c;导致整个页面卡顿甚至奔溃 一般项目在完成后&#xff0c;会通过webpack进行打包&#xff0c;利用webpack对前…

leetcode 33.搜索旋转排序数组

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;搜索旋转排序数组 ps&#xff1a; 本题是二分查找的变形&#xff0c;旋转排序数组之后其实会形成两个有序的区间。算出平均下标先判断是否与 target 相等&#xff0c;因为这样可以减少代码的冗余。如果前者不成立则使用平…

Godot 4 源码分析 - 文件读入编码处理

今天需要读入xml文件进行处理&#xff0c;结果读入一个带中文的文件时&#xff0c;出错了。当然程序还能运行&#xff0c;但编译器一直报错&#xff0c;而且XML解析也不正确 单步调试发现读入的内容出现乱码&#xff0c;具体逻辑&#xff1a; String FileAccess::get_as_text…

【肌电图信号分析】通道肌电图并查找收缩周期的数量、振幅、最大值和持续时间(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

React源码解析18(2)------ FilberNode,FilberRootNode结构关系

摘要 在上一篇&#xff0c;我们实现了通过JSX转换为ReactElement的方法&#xff0c;也看到了转换后React元素的结构。但是这个React元素&#xff0c;并不能很清楚的表达组件之间的关系&#xff0c;以及属性的处理。 所以在React内部&#xff0c;会将所有的React元素转换为Fil…

【Linux】详解进程状态之僵尸进程——孤儿进程

目录 &#x1f31e;专栏导读 &#x1f31b;什么是进程 ⭐什么是PCB&#xff1f; &#x1f31b;查看进程 &#x1f31b;如何通过系统调用查看进程PID &#x1f31b;fork &#x1f31e;认识进程状态 &#x1f31b;查看进程状态 &#x1f31b;R状态 ⭐例如&#xff1a…