uni-app自定义幻灯组件swiper自适应高度

用Uni-app做的swiper幻灯片组件,图片在APP端正常情况下无法自适应高度。

手动写高度也非常鸡肋。

那么如何让它自适应高度呢?

现提供一个简单自定义幻灯模板组件

<template>

<view>

<swiper class="swiper flex flex-center"  :style="{'height':Dheight+'px'}"

:indicator-dots="indicatorDots" :autoplay="autoplay"  :interval="interval" :duration="duration">

<swiper-item v-for="(item,index) in slidelist" :key="index">

<view class="swiper-item flex flex-center">

<image class="swiperimg text-center" :style="{'width':imgwidth}" @load="setHeight" :mode="imgmode" @click="onClick(item)"  lazy-load="true" :src="item.src"></image>

</view>

</swiper-item>

</swiper>

</view>

</template>

<script>

export default {

data() {

            return {

               Dheight:100,

   Dindex:0

            }

        },

props: {

indicatorDots: {

type: [Boolean],

default: true

},

autoplay: {

type: [Boolean],

default: true

},

interval: {

type: [Number],

default: 2000

},

duration: {

type: [Number],

default: 500

},

imgwidth: {

type: String,

default: '100%'

},

imgmode:{

type:[String],

default:'widthFix'

},

slidelist:{

type:Array,

value:[]

}

},

computed: {

},

methods: {

onClick(item) {

this.$emit('click',item)

},

                        setHeight(){

var that=this;

const query = uni.createSelectorQuery().in(that);

query.select('.swiperimg').boundingClientRect(data => {

 if(JSON.stringify(data)){

 that.Dheight=data.height;

 }

}).exec(function(res){});

}

}

}

</script>

    /*

        uni-swiper .uni-swiper-dots-horizontal 指示器主题

uni-swiper .uni-swiper-dot-active 选中状态

uni-swiper .uni-swiper-dot 未选中状态

   */

<style>

</style>

引用:

<slides :slidelist="hdlist" @click="sildeclick"></slides>

import slides from '../../components/slide/slide.vue'

export default { 

components: {

faicons,

slides

},

data() {

return {

hdlist:[

{id:1,src:'../../static/index/i_1.jpg'},

{id:2,src:'../../static/index/i_1.jpg'}

]

}

},

onLoad() {

var that=this;

console.log(this.$comjs.weburl)

},

onReady(){

},

methods: {

sildeclick(data){

    console.log('标题:' + JSON.stringify(data))

  

}

    

}

}

原理很简单,当图片@load后,重置swiper高度即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值