uni-app点击预览大图,并可进行缩放

uni-app预览大图且可进行缩放,我们可以使用uni-app内置的组件movable-area

首先为了我们点击预览功能可以被更多地方调用使用,避免重复的代码出现,我们可以封装一个预览的组件

效果图

   --------->>>         

 组件:

<template>
    <div class="bigImgComponent" @click="bigImgclick()">
        <movable-area>
            <movable-view  direction="none" scale-value="1" scale-min="1" scale="true" scale-max="4">
                <img :src="imgVal" alt="">
            </movable-view>
        </movable-area>
    </div>
</template>

<script lang="ts">
import Vue from "vue";
export default Vue.extend({
    name: "bigImg",
    props: {
        imgVal:String,
        closeBigImg: {
            type: Function,
            default: null
        }
    },
    data() {
        return {

        }
    },
    methods:{
        // 通过调用父组件关闭大图方法,帮助关闭大图
        bigImgclick(){
            this.$emit('closeBigImg')
        }
    }
})
</script>

<style lang="scss">
.bigImgComponent{
    width: 100%;
    overflow: hidden;
    height: 100vh;
    top: auto;
    position: absolute;
    left: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.7);//灰色背景
    img{
        width:100%;
        height:100%;
    }
}
//movable-area需要设置宽高
movable-area{
    width: 100%;
    height: 100%;
    top: auto;
    position: absolute;
    left: 0;
    bottom: 0;
    z-index: 9999;
    movable-view{
        display: flex;
        justify-content: center;
        align-items: center;
        width: 100%;
        height: 100%;
        img {
            width: 90% !important;
            height: auto !important;
        }
    }
}
</style>

在需要调用的地方引用组件

具体其他css大家可以自己补全

<template>
    <div>
        <p  @click="showBigImg(imgs)">
             <img :src="imgs" alt="" class="Imgss">
        </p>
    </div>
    <bigImg  v-if="showBigImage" class="big-img-boxs" :imgVal="imgVals" @closeBigImg="closeBigImg"></bigImg>
</template>
<script lang="ts">
import Vue from 'vue'
export default Vue.extend({
    data() {
        return {
            imgs: '',//可以先写死一个进行调试
            imgVals:'', // 大图地址
            showBigImage:false,//控制是否显示大图
            
        }
    }
    methods: {
        // 查看大图
        showBigImg (val:any) {
            this.showBigImage = true
            this.imgVals = val
        },
        //关闭大图
        closeBigImg () {
            this.showBigImage = false
            this.imgVals = ''
        },
    }
})
</script>
<style scoped lang="scss">
.Imgss{
    max-width: 100%;
}
.big-img-boxs{
    position: sticky;
    bottom: 0;
    top: 0;
}
</style>

如果大家是一个列表,列表过长点击弹出大图时滑动会穿透到底部内容也被滑动,那可以给最外成dom做一个动态的样式变换

当大图弹出时设置为overflow: hidden !important;

帮助解决内容过多时,弹出大图后滑动穿透到底部内容被滑动

切记关闭时要恢复为原样式

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uni-app中,要实现微信小程序图片放大预览并带有图片描述并可左右切换,可以使用uni-app提供的组件和方法来实现。 首先,我们可以使用uni-app的image组件来展示图片,并通过设置mode属性为aspectFit,使图片按照原图的长宽比等比缩放并保持完整显示。 然后,为了实现图片放大预览并可左右切换,在点击图片时,我们可以使用uni-app的previewImage方法来打开一个全屏的图片预览,并传入一个包含图片链接数组的current参数,以及一个包含图片描述的urls参数。这样就可以在预览界面中显示图片描述,并且可通过左右滑动切换图片。 具体实现步骤如下: 1.在模板中,使用image组件展示图片,设置mode为aspectFit,并绑定点击事件。 2.在点击事件处理函数中,调用uni-app的previewImage方法,传入图片链接数组和图片描述数组。 3.在预览界面中,通过swiper组件实现图片的左右滑动切换,并显示图片描述。 示例代码如下: ``` <template> <view> <image mode="aspectFit" :src="imageUrl" @click="previewImage"></image> </view> </template> <script> export default { data() { return { imageUrl: '图片链接', imageDesc: '图片描述' } }, methods: { previewImage() { uni.previewImage({ current: this.imageUrl, urls: [this.imageUrl], longPressActions: { itemList: ['保存图片'], success: function(data) { if (data.tapIndex === 0) { uni.saveImageToPhotosAlbum({ filePath: this.imageUrl, success: function() { uni.showToast({ title: '保存图片成功' }) }, fail: function() { uni.showToast({ title: '保存图片失败', icon: 'none' }) } }) } } } }) } } } </script> ``` 使用以上方法,我们可以在uni-app微信小程序中实现图片放大预览并带有图片描述可左右切换的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值