uniapp轮播图自适应宽高比例实现

<template>
  <view class="swiper-container">
    <swiper class="swiper" autoplay :interval="3000" :duration="500">
      <swiper-item v-for="(item, index) in list" :key="index">
        <image class="image" :src="item.imgUrl" mode="aspectFill" />
      </swiper-item>
    </swiper>
  </view>
</template>

<script>
export default {
  data() {
    return {
      list: [ // 轮播图数据,替换为你的图片路径
        { imgUrl: '/static/1.jpg' },
        { imgUrl: '/static/2.jpg' }
      ]
    }
  }
}
</script>

<style>
.swiper-container {
  position: relative;
  width: 100%;
  /* 根据宽高比计算padding-top,例如16:9 => 9/16=56.25% */
  padding-top: 56.25%;
}

.swiper {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.image {
  width: 100%;
  height: 100%;
}
</style>

外层容器:使用position: relative和padding-top设置比例。例如,16:9的比例对应padding-top: 56.25%(计算方式:9 ÷ 16 × 100%)。

轮播图定位:swiper组件通过position: absolute填满外层容器,确保宽高自适应。

图片模式:image的mode设为aspectFill,保持比例并覆盖容器,避免变形(可根据需求调整为aspectFit等模式)。

其他比例调整:
修改.swiper-container中的padding-top值即可适配不同比例:

4:3 → padding-top: 75% (3/4 × 100%)

1:1 → padding-top: 100%

3:4 → padding-top: 133.33%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值