Uniapp中的轮播组件如何动态根据当前内容的高度去修改swiper高度?

文章介绍了如何在遇到轮播图内容高度不确定的问题时,通过计算每个列表的固定高度并考虑margin,根据当前显示的列表数量动态设置Swiper的高度。作者强调在@animationfinish事件后更新height值以实现适应性设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.它默认高度为150px

2.网上找了很多,试了很多,没有很好的解决方案。

3.我的思路是,假如是说每个轮播的内容是列表类型例如:

那么每个列表的高度是可以确定下来的。

例如它的高度为100px,假如说你当前展示的内容是18个这种的列表,那么就需要18/3=6个这种的高度,再加上它们上下之间margin的距离就是你要设置swiper的总高度。

只需要在触发@animationfinish之后,判断当前选项卡有多少列表,然后计算高度即可,然后给本地定义的的height在每次animationfinish完以后重新附上新的值即可。

此处只介绍解决思路,具体根据自己公司的需求去做!!!!

可以使用 `scroll-view` 组件实现文字自动轮播,并设置 `scroll-y` 属性为 `true`,使其在垂直方向上可以滚动。同时,需要监听 `scroll-view` 的 `scrolltolower` 事件,当滚动到底部时,将文字列表的第一条数据添加到末尾,再移除第一条数据,实现循环滚动。在实现高度自适应时,可以使用 `scroll-view` 的 `bindscrolltolower` 属性配合 `dom` 方法计算内容高度,并动态设置 `scroll-view` 的高度。 示例代码如下: ```html <template> <view class="container"> <scroll-view class="swiper-list" scroll-y bindscrolltolower="onScrollToLower" style="height: {{listHeight}}px;"> <view wx:for="{{textList}}" wx:key="index">{{item}}</view> </scroll-view> </view> </template> <script> export default { data() { return { textList: ['这是第一段文字', '这是第二段文字', '这是第三段文字'], // 文字列表 listHeight: 0 // scroll-view 的高度 } }, mounted() { this.setListHeight() // 初始化设置 scroll-view 高度 }, methods: { // 计算 scroll-view 高度 setListHeight() { const query = uni.createSelectorQuery().in(this) query.select('.swiper-list').boundingClientRect(data => { this.listHeight = data.height }).exec() }, // 滚动到底部时,循环添加和移除文字 onScrollToLower() { const firstText = this.textList[0] this.textList.push(firstText) this.textList.splice(0, 1) } } } </script> <style> .container { width: 100%; height: 300rpx; } .swiper-list { width: 100%; overflow: hidden; } .swiper-list view { font-size: 28rpx; line-height: 40rpx; text-align: center; } </style> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值