uniapp Swiper图片自适应高度
文章描述:
swiper里面图片很多时候高度是固定的,如果当用户上传的图片宽度和高度不一样时,如何处理图片在100%显示的时候自动适应高度
template
<template>
<view class="container">
<view class="uni-margin-wrap">
<swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval"
:duration="duration"
:style="{height:bannerH}">
<swiper-item v-for="(item,index) in swiperList" :key="index">
<view class="swiper-item uni-bg-red">
<image :src="item.pic" mode="widthFix"></image>
</view>
</swiper-item>
</swiper>
</view>
</view>
</template>
script
1、获取设备的宽度和高度
2、获取图片的宽度和高度
3、计算出比例,根据比例计算高度
export default{
data(){
return{
indicatorDots: true,
autoplay: true,
interval: 2000,
duration: 500,
swiperList:[
{
pic:"../../static/images/banner.png"
},
{
pic:"../../static/images/banner.png"
}
],
win_W:'',
win_H:'',
bannerH:''
}
},
mounted() {
// 注意,这里要用个变量存this,不然进到getSystemInfo后this指向会变化,找不到data变量
var _this = this
uni.getSystemInfo({
success: function (res) {
_this.win_W = res.windowWidth
_this.win_H = res.windowHeight
}
})
setTimeout(()=>{
let win_W= _this.win_W // 设备宽度
_this.swiperList.forEach((item,index)=>{
//console.log(item.pic)
uni.getImageInfo({
src:item.pic,
success:function(image){
var imgBl = (image.width / win_W).toFixed(2) // 比例
_this.$set(item,'height',Math.ceil(image.height / imgBl)) // swiper数据 - 新增字段
_this.bannerH = Math.ceil(image.height / imgBl) + 'px'
}
})
})
console.log(_this.swiperList)
},500)
},
}
style
.container{
}
.swiper{
width: 100%;
}
.swiper image{
width: 100%;
}
发布时间:2022/07/28
发表评论