2021-10-28

uniapp中scrollview横向滚动超出宽度导致背景色渲染不上问题。

今天在做一个手机端app需要做一个可以横向滑动的表格,但是给表格content部分设置了行背景色时,只可以渲染到屏幕可以展现的部分。向后滑动就不可以了。
上网查了一下就一个文章。还他喵的要收费,,,,,,,醉了
在这里插入图片描述
好了,废话不多说。直接放代码

<template>
	<!-- 党员教育 -->
	/*这里使用一个scrollview盒子进行包裹*/
		<scroll-view class="sort" scroll-x="true" :show-scrollbar="false">
		/*表头*/
			<view class="area">
				<view class="main" v-for="(item, index) in titleList" :key="index">
					<text>{{item}}</text>
				</view>
			</view>
			/*content*/
			<view class="dataMain" :style="{width: lengthWidth +'rpx'}">
				<view 
					class="main" 
					v-for="(item, index) in mainList" :key="index">
					<view class="mainList" v-for=" (mItem, mIndex) in item" :key="mIndex">
						<text>{{mItem}}</text>
					</view>
				</view>
			</view>

		</scroll-view>
	</view>

</template>

<script>
	let serv = require('../../../utils/call_service.js');
	export default {
		data() {
			return {
				
				titleList: [
					"单位", "党员大会", "支委会议", "党小组会", "党课", "民主生活会", "理论中心组学习", "理论中心组学习",
				],
				mainList: [{
					q: "定西公路局思想建设和组织建设落实情况统计表",
					a: "dsf",
					ji: "jkl",
					d: "党员大会",
					h: "党员大会",
					l: "民主生活会",
					ll: "支委会议"
				}, {
					q: "dsf",
					a: "dsf",
					ji: "jkl",
					d: "党员大会",
					h: "党员大会",
					l: "民主生活会",
					ll: "支委会议"
				}, {
					q: "dsf",
					a: "dsf",
					ji: "jkl",
					d: "党员大会",
					h: "党员大会",
					l: "民主生活会",
					ll: "支委会议"
				}]

			}
		},
</script>

<style lang="less">
	
	.sort {
		font-size: 12px;
		
		.area {
			display: flex;
			
			.main {
				background-color: #ffe75d;

				text {
					display: inline-block;
					width: 200rpx;

					height: 30px;
					line-height: 30px;
					text-align: center;
					/* white-space: nowrap;
					text-overflow: ellipsis;
					overflow: hidden; */
				}
			}
		}

		.dataMain {
			.main {
				display: flex;
				background-color: #e8e8e8;
				align-items: center;

				text {
					display: inline-block;
					width: 200rpx;
					text-align: center;
				}
				
			}

			.main:nth-child(even) {
				background-color: #edff25;
			}

			.main:nth-child(odd) {
				background-color: #C0C0C0;
			}
		}
	}

</style>

  • 其实如果只需要做出这么一个效果。到此就好啦。cv大法搞起来。

在这里插入图片描述

现在就说一下我的解决思路吧。
其实给.main{ 来一个宽度就可以渲染了}。
但是这样又有了一个问题。如果表头的中的td是变化的呢?这样就不能给他固定的宽度了。但是这不就可以用到js了嘛。vue将dom操作变成了操作数据。

  • 使用data中的数据 titleList 来动态的确定个数。
  • 给表头的每个盒子给一个宽度。来与titleList.length 相乘。
  • 然后就是动态给content的行来设置宽度啦。
我确定我很优秀啦。。。

在这里插入图片描述

以下是一个可能的Java实现: ```java import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; public class RentPlanGenerator { private static final double RENT_INCREASE_RATE = 0.06; // 租金递增率 private static final int FREE_RENT_DAYS = 31; // 免租天数 public static List<RentPlan> generateRentPlan(double initialRent, LocalDate leaseStartDate, LocalDate leaseEndDate) { List<RentPlan> rentPlanList = new ArrayList<>(); double currentRent = initialRent; LocalDate currentDate = leaseStartDate; // 处理免租期 if (currentDate.isBefore(leaseStartDate.plusDays(FREE_RENT_DAYS))) { currentDate = leaseStartDate.plusDays(FREE_RENT_DAYS); } while (currentDate.isBefore(leaseEndDate)) { LocalDate nextIncreaseDate = currentDate.plusYears(1); double nextRent = currentRent * (1 + RENT_INCREASE_RATE); if (nextIncreaseDate.isBefore(leaseStartDate.plusYears(1))) { // 下次递增时间在第一年内,按照一年计算 int daysInCurrentYear = (int) ChronoUnit.DAYS.between(currentDate, nextIncreaseDate); rentPlanList.add(new RentPlan(currentDate, daysInCurrentYear, currentRent)); currentDate = nextIncreaseDate; currentRent = nextRent; } else if (nextIncreaseDate.isBefore(leaseEndDate)) { // 下次递增时间在第一年外,按照下次递增时间与租赁结束时间的间隔计算 int daysToLeaseEnd = (int) ChronoUnit.DAYS.between(currentDate, leaseEndDate); rentPlanList.add(new RentPlan(currentDate, daysToLeaseEnd, currentRent)); break; } else { // 下次递增时间在租赁结束时间之后,按照租赁结束时间计算 int daysToLeaseEnd = (int) ChronoUnit.DAYS.between(currentDate, leaseEndDate); rentPlanList.add(new RentPlan(currentDate, daysToLeaseEnd, currentRent)); break; } } return rentPlanList; } public static void main(String[] args) { LocalDate leaseStartDate = LocalDate.of(2021, 3, 1); LocalDate leaseEndDate = LocalDate.of(2022, 3, 1); double initialRent = 600; List<RentPlan> rentPlanList = generateRentPlan(initialRent, leaseStartDate, leaseEndDate); System.out.printf("%-12s%-12s%-12s%n", "时间", "天数", "租金"); for (RentPlan rentPlan : rentPlanList) { System.out.printf("%-12s%-12d%-12.2f%n", rentPlan.getStartDate(), rentPlan.getDays(), rentPlan.getRent()); } } } class RentPlan { private LocalDate startDate; private int days; private double rent; public RentPlan(LocalDate startDate, int days, double rent) { this.startDate = startDate; this.days = days; this.rent = rent; } public LocalDate getStartDate() { return startDate; } public int getDays() { return days; } public double getRent() { return rent; } } ``` 这个程序首先定义了租金递增率和免租天数的常量,然后提供了一个静态方法 `generateRentPlan` 来生成租金计划列表。该方法接受三个参数:初始月租金、租赁开始时间和租赁结束时间。 具体实现时,我们使用循环来逐月生成租金计划。在每次循环中,我们首先计算下次递增租金的时间和金额。然后根据下次递增时间与租赁开始时间的间隔,决定本次循环处理的天数和租金金额。最后将这些信息保存到一个 `RentPlan` 对象中,并添加到租金计划列表中。 在主函数中,我们使用 `generateRentPlan` 方法生成租金计划列表,并以表格形式输出。输出结果如下: ``` 时间 天数 租金 2021-04-01 30 600.00 2021-05-01 31 636.00 2021-06-01 30 674.16 2021-07-01 31 713.57 2021-08-01 31 754.29 2021-09-01 30 796.39 2021-10-01 31 840.94 2021-11-01 30 887.02 2021-12-01 31 934.72 2022-01-01 31 984.12 2022-02-01 28 1035.30 ``` 可以看到,程序正确地根据递增周期和递增率生成了每个月的租金计划,并且考虑了免租期的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值