首页 > 其他分享 >uniapp+vue3+swiper 高度自适应

uniapp+vue3+swiper 高度自适应

时间:2024-06-06 09:36:52浏览次数:12  
标签:uniapp actualHeight const index value result vue3 ref swiper

转自:https://blog.csdn.net/hjd2018/article/details/137261819 

 

<template>
<view class="top_swiper">
<swiper @change="onSwiperChange" class="swiper" :style="{ height: swiperHeight }" circular indicator-dots="true" :autoplay="true" interval="2000" duration="500">
<block v-for="(item, index) in bannerList" :key="item.id">
<swiper-item>
<image class="top_swiper_img" :src="item.image" alt="" mode="widthFix" @load="imageLoaded(index, $event)" />
</swiper-item>
</block>
</swiper>
</view>
</template>

 

<script setup>
import { ref, onMounted, nextTick } from 'vue';
import { post } from '../../libs/request.js'

const bannerList = ref([])
const swiperHeight = ref('300rpx');
const imageHeights = ref([]); // 存储图片的高度

onMounted(() => {
getBanner();
})

/**
* 图片加载完成
*/
const imageLoaded = (index, event) => {
const { width, height } = event.detail;
let actualHeight = height / (width / 750);
imageHeights.value[index] = actualHeight;
if (index === 0) {
swiperHeight.value = actualHeight + 'rpx';
}
}

/**
* swiper 切换
*/
const onSwiperChange = async (e) => {
const index = e.detail.current;
await nextTick();
const currentImageHeight = imageHeights.value[index];
swiperHeight.value = currentImageHeight + 'rpx';
}

/**
* 获取轮播图
*/
const getBanner = () => {
post("Banner/getList", {}).then((result) => {
if (result.code == 0) {
bannerList.value = result.data;
}
})
}

</script>

标签:uniapp,actualHeight,const,index,value,result,vue3,ref,swiper
From: https://www.cnblogs.com/ch-zaizai/p/18234427

相关文章

  • 如何在Vue3中使用provide/inject实现跨组件状态共享?
    在前端开发中,组件之间的状态管理和数据共享是一个常见且重要的话题。Vue3作为一个流行的前端框架,提供了多种方法来解决这个问题。今天,我们将深入探讨在Vue3中使用provide和inject来实现跨组件状态共享的方法。什么是provide/inject?provide和inject是Vue3中提供的一种机制,......
  • uniapp-two-day-two之基础内容and滑动组件和滚动栏
    基础内容又是码农无聊的一天,今天也就上了一节早课,下课想学习的服了结果玩了半天手机,终于是在下午学上了,真的是很难控制自己。闲聊结束。text标签text中有上面这几个属性,其中在我看来selectable是挺重要的一个属性,是吧现在不都说是cv工程师吗?可不就是这个来组成了我们工程师......
  • DIYGW UniApp低代码可视化开发工具:构建移动应用的高效利器
    ​随着移动互联网的飞速发展,移动应用开发已成为当今技术领域的热点之一。然而,传统的移动应用开发方式需要编写大量的代码,这不仅提高了开发门槛,也延长了开发周期。为了解决这一问题,DIYGWUniApp低代码可视化开发工具应运而生,成为高效构建移动应用的利器。本文将详细介绍DIYGWUn......
  • uniapp 2.0可视化开发工具:引领前端开发新潮流
    引言在移动互联网时代,跨平台应用开发成为前端开发者面临的重要挑战。uniapp作为一款优秀的跨平台应用框架,以其强大的功能和易用性赢得了广大开发者的青睐。特别是uniapp2.0版本的发布,伴随着可视化开发工具的出现,更是为前端开发带来了革命性的变革。本文将深入探讨uniapp2.0......
  • 微信小程序(uniapp)页面之间通信
    前言开发微信小程序,页面与页面之间少不了数据通信,一起来看看有哪些方法。以下是本篇文章正文内容,下面案例可供参考一、跳转路径?拼接参数适合数据量小的情况,如数据量大的情况不建议此方式。注意:如传递了number类型数据,接收回来的数据会转换成string类型/**A.vue**/......
  • UniApp-CURD
    药品添加<template> <viewclass="content"> <viewclass="form-container"> <viewclass="form-item"> <labelclass="label">药品名称</label> <inputtype="text"class=......
  • Vue3-shallowRef与shallowReactive
    shallowRef作用:创建一个响应式数据,但只对顶层属性进行响应式处理。用法:letmyVar=shallowRef(initialValue);特点:只跟踪引用值的变化,不关心值内部的属性变化。shallowReactive作用:创建一个浅层响应式对象,只会使对象的最顶层属性变成响应式的,对象内部的嵌套属......
  • Vue3-Pinia状态管理器
    Pinia是Vue的专属状态管理库,它允许你跨组件或页面共享状态。如果你熟悉组合式API的话,你可能会认为可以通过一行简单的 exportconststate=reactive({}) 来共享一个全局状态。对于单页应用来说确实可以,但如果应用在服务器端渲染,这可能会使你的应用暴露出一些安全漏洞......
  • Vue3单文件组件实现省市区县三级联动
    Provinces.vue<template>  <divclass="select-container">    <selectv-model="selectedProvince"@change="handleProvinceChange">      <optionvalue=""disabled>请选择省份</opti......
  • Vue3中实现父子组件通信
    Vue3中实现父子组件通信父传子父组件给子组件绑定属性,子组件内部提供props选项接收setup语法糖下局部组件无需注册可以直接使用//父组件中<scriptsetup>importSonComfrom''constmessage=ref('thisisfather')</script><template><SonCom:messgae="mess......