uni-app 中 swiper 轮播图高度自适应

这篇具有很好参考价值的文章主要介绍了uni-app 中 swiper 轮播图高度自适应。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方法一(好像只对第一张起作用)

1、首先 swiper 标签的宽度是 width: 100%

2、swiper 标签存在默认高度是 height: 150px ;高度无法实现由内容撑开,在默认情况下,图片的高度显示总是 150px

swiper 宽度 / swiper 高度 = 原图宽度 / 原图高度

swiper 高度 = swiper 宽度 * 原图高度 / 原图宽度

<swiper class="swiper-box" indicator-dots autoplay circular>
  <swiper-item v-for="(item, i) in imgList" :key="i">
    <image style="width: 100%" :src="item" mode="widthFix" />
  </swiper-item>
</swiper>
.swiper-box {
  width: 100%;
  height: calc(100vw * 9 / 16);
}

方法二(推荐)

1、在每次滑动切换的时候,动态地获取 swiper-item 内部的 DOM 的元素的高度

2、将获取的高度动态设置给 swiper 元素文章来源地址https://www.toymoban.com/news/detail-701936.html

<swiper
  :current="currIndex"
  @change="changeSwiper"
  :style="{ height: swiperHeight + 'px' }"
  indicator-dots
  autoplay
  circular
  :duration="1000"
>
  <swiper-item v-for="(item, i) in imgList" :key="i">
    <image :id="'wrap' + i" style="width: 100%" :src="item" mode="widthFix" />
  </swiper-item>
</swiper>
currIndex: 0, // 当前索引
swiperHeight: 0, // 滑块的高度(单位px)
onLoad(e) {
  this.$nextTick(() => {
    this.setSwiperHeight(); // 动态设置 swiper 的高度
  });
},
/* 切换 swiper 滑块 */
changeSwiper(e) {
  this.currIndex = e.detail.current;
  this.$nextTick(() => {
    this.setSwiperHeight(); // 动态设置 swiper 的高度
  });
},
/* 动态设置 swiper 的高度 */
setSwiperHeight() {
  const element = "#wrap" + this.currIndex;
  const query = uni.createSelectorQuery().in(this);
  query.select(element).boundingClientRect();
  query.exec(res => {
    if (res && res[0]) this.swiperHeight = res[0].height;
  });
},

到了这里,关于uni-app 中 swiper 轮播图高度自适应的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app/微信小程序:scroll-view纵向滚动高度自适应flex布局填充剩余高度

    uni-app文档:https://uniapp.dcloud.net.cn/component/scroll-view.html 使用竖向滚动时,需要给 一个固定高度,通过 css 设置 height 微信文档:https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html 使用竖向滚动时,需要给scroll-view一个固定高度,通过 WXSS 设置 height 所以,给scroll-view设置

    2024年02月09日
    浏览(59)
  • 【uni-app】swiper的使用

    最近在学习小程序的开发,其中有用到swiper,在这里记录一下我的学习历程 有一些人,他刚开始并不会开发小程序,但是在任务面前,没有什么是不可以学的… 刚开始接触到swiper的时候,是在uni-app的官方文档里,这可真是个好东西!这里附上官网链接,想了解的小伙伴直接

    2023年04月26日
    浏览(25)
  • 解决微信小程序swiper轮播图撑不满有留白 实现swiper轮播图撑满父容器

    问题 :如下图,swiper轮播图两侧会有留白,没有撑满swiper 失败的尝试 : 1.调整图片尺寸 2.设属性设置image的mode为scaleToFill 3.设置item的属性 都没能实现将图片填充满轮播图,图片会有右侧和底部两块留白 通过调试器查看到image区域很小,怀疑是image本身属性的问题 随后尝试在

    2024年04月25日
    浏览(55)
  • 使用 swiper 做轮播图

    大好好,我是 17。 虽然我是一个喜欢造轮子的人,但是对于 swiper,我还是直接拿过来用了,功能很多,也很方便。本文介绍一些常用的功能。 版本 Swiper 8.3.0 我把所有常用配置的都写上了,不需要哪个直接删除就好。 最外层的 swiper 的样式 并没有设置高宽,需要使用者来设

    2024年02月07日
    浏览(45)
  • uni-app 之 scroll-view和swiper

    uni-app 之 scroll-view和swiper swiper 轮播图 //indicator-dots=\\\"ture\\\"小圆点, //autoplay=\\\"ture\\\"自动轮播, //interval=\\\"1000\\\"跳转时间, //circular=\\\"ture\\\"是否采用衔接滑动,即播放到末尾后重新回到开头

    2024年02月09日
    浏览(44)
  • Swiper轮播图后端接口实现

    2024年01月25日
    浏览(47)
  • vue中swiper轮播图的使用

    说明:导入相应js引css import \\\"Swiper\\\" from \\\"swiper\\\" import \\\"swiper/css/swiper.css\\\"; import \\\"swiper/js/swiper\\\"; 说明:必要的结构使用;直接封装成一个组件  说明:(页面当中务必要有结构);注释已经写入代码。 第一:可以解决获取数据在Swiper实例之前;第二:可以解决v-for遍历完后在Swiper之

    2024年02月14日
    浏览(45)
  • 微信小程序轮播图swiper使用

    文章目录 一、swiper的作用? 二、使用步骤 1.引入库 2.读入数据 总结 小程序中创建轮播图。 微信开放文档中组件--》视图容器--》swiper将下面代码拷贝   将代码粘贴至需要轮播图的页面,并根据实际情况修改代码 这里的tabList和img是根据接口传来的数据,需要在js中定义,这

    2024年02月12日
    浏览(46)
  • Vue2+swiper基础实现轮播图

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 swiper的基础使用 提示:以下是本篇文章正文内容,下面案例可供参考 Swiper中文网-轮播图幻灯片js插件,H5页面前端开发         注意:我们用的是vue2所以推荐大家下载swiper5版本 示例: 查看安装是否完成

    2024年01月16日
    浏览(75)
  • 微信小程序swiper实现层叠轮播图

    在微信小程序中,需要实现展示5个,横向层叠的轮播图效果,轮播图由中间到2侧的依次缩小.如下图 使用原生小程序进行开发,没有使用Skyline模式,所以layout-type配置项也无效。所以基于swiper组件进行调整。 主要思路就是设置不同的样式,根据当前激活的项,来动态切换样式。

    2024年01月24日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包