微信小程序-横向轮播时,轮播高度随内容高度动态撑开

在使用小程序轮播图过程中,发现轮播滑动高度是固定的,当活动到第二页时,会出现很大一块空白内容,视觉效果比较差
实现效果:

第一页:

第二页:

轮播高度计算

复制代码
每页轮播高度 = 当页图片总高度 + 总间距

图片设计图显示尺寸(px):105 × 108
设计图标准尺寸(px):375
屏幕宽度(px):screenWidth
屏幕与设计图分辨率比率: ratio = screenWidth / 375
图片实际展示尺寸:imgWidth = 105 * ratio,  imgHeight = 108 * ratio

已知图片间距 space = 12 px
每页轮播图片展示行数 row

图片总高度 = imgHeight * row
总间距 = (row - 1) * 12px

① 获取screenWidth,计算屏幕与设计图分辨率比率 ratio

javascript 复制代码
let windowInfo = wx.getWindowInfo()
let ratio = windowInfo.screenWidth / 375
this.setData({
	ratio: ratio
})

② 计算轮播图片展示行数 row,设置首页轮播高度swiperHeight

javascript 复制代码
let imgHeight = 108
let row = Math.ceil(this.data.list[0].length / 3) // 计算单页轮播行数 
let swiperHeight = row * imgHeight *  +  (row - 1) * 12
this.setData({
	currentSwiper: 0, // 默认轮播下标
	swiperHeight: swiperHeight // 首页轮播高度
})
html 复制代码
<swiper 
	class="my-swipe" 
	indicator-dots="{{false}}" 
	interval="{{5000}}"
	style="height: {{swiperHeight}}px;"
	current="{{currentSwiper}}"
	bindchange="onChange"
>
</swiper>

③ 轮播图滑动时,重新计算高度

javascript 复制代码
onChange() {
	let currentIndex = el.detail.current
	let row = Math.ceil((this.data.list[currentIndex].length / 3))
	let swiperHeight = row * 108 * this.data.ratio + (12 * (row - 1))
	this.setData({
		swiperHeight: swiperHeight
	})
}
相关推荐
星光开发者10 小时前
基于决策树随机森林算法的小说推荐系统的设计与实现-计算机毕设【课程设计】78485
vue.js·算法·微信小程序·django·php·课程设计·express
程xu袁10 小时前
只有一段副歌,AI写歌选小程序、Suno还是海绵音乐?
小程序·suno·ai音乐·ai音乐工具·ai生成音乐·ai写歌工具
专业程序开发源19 小时前
springboot生命故事书制作小程序65290-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·mysql·小程序·课程设计
QQ_216962909620 小时前
基于微信小程序的智能膳食分析系统
java·大数据·spring boot·微信小程序·小程序·旅游
QQ_216962909620 小时前
基于C#(Asp.net)电竞陪玩信息管理系统的设计与实现
java·大数据·spring boot·微信小程序·c#·云计算·asp.net
扶风ff2 天前
求职笔试资料太散?用练题簿在线刷题,按岗位整理练习清单
前端·学习·小程序
Ai-_Man2 天前
请问豆包的智能体聊天记录该怎么弄
开发语言·前端·javascript·人工智能·小程序·ecmascript·电脑
m0_462803882 天前
名单制签到怎么落地:拆解“仅名单内人员签到“的配置链路与匹配逻辑
微信小程序
Ai-_Man2 天前
您您这可以把Dola的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。用AI导出鸭,答案是可以的
开发语言·前端·人工智能·小程序
卓怡学长3 天前
w192基于springboot“考研情报站”微信小程序设计与实现
java·spring boot·spring·微信小程序·intellij-idea