美文网首页Vue
移动端使用vue-preview-photo动态加载图片实现图片

移动端使用vue-preview-photo动态加载图片实现图片

作者: halowyn | 来源:发表于2020-11-26 11:51 被阅读0次

使用场景:移动端需要实现附件预览功能,图片文件可以手指缩放。由于附件比较多,打开页面比较卡,为了提高用户体验,所以预先加载图片信息,当用户点击想要查看的附件才打开对应的图片

先贴出实现过程

安装

npm install vue-photo-preview --save

引入main.js

import preview from 'vue-photo-preview'
import 'vue-photo-preview/dist/skin.css'
let options = {
  fullscreenEl: false,
  closeEl: false, // 控制是否显示右上角关闭按钮
  tapToClose: true, // 点击滑动区域应关闭图库
  shareEl: false, // 控制是否显示分享按钮
  zoomEl: false, // 控制是否显示放大缩小按钮
  counterEl: false, // 控制是否显示左上角图片数量按钮
  arrowEl: true, // 控制如图的左右箭头(pc浏览器模拟手机时)
  tapToToggleControls: true, // 点击应切换控件的可见性
  clickToCloseNonZoomable: true // 点击图片应关闭图库,仅当图像小于视口的大小时
}
Vue.use(preview, options)

option里的选项根据自己需要来配置

页面上使用方法

1、静态引用方式-常用方式

<img src="xxx" preview="1" preview-text="描述文字" title="点击查看大图"> 

2、当页面上图片文件较多的情况,我们采用这种方式来展示会使页面加载变慢,尤其是通过数据交换平台处理之后,页面必须展示base64,交互效果可想而知,因此我们在页面上
一次只显示一张图片,点击哪个就显示那哪一张


async viewImg (item, index) {
  // 预览图片首先清除之前插入的dom
  // eslint-disable-next-line
  $('#hide-img').remove()
  let data = await this.getSrc(item)
  if (data.flag === 'SUCCESS') {
    // eslint-disable-next-line
    $('body').append(`<img id="hide-img" preview="${index}" src="${data.data}">`)
    // 动态插入之后调用插件方法刷新预览图盒子
    this.$previewRefresh()
    let galleryElement = document.querySelector('#hide-img')
    galleryElement.onclick = this.onThumbnailsClick
    galleryElement.click()
  }
}

假如我们需要预览列表,那么据需要我们将preview设置相同的属性,这样图片就是一个分组
我们将上边代码进行完善

async viewImg (item, index) { // 查看附件
      // 预览图片首先清除之前插入的dom
      // eslint-disable-next-line
      $('.hide-img').remove()
      let files = this.translateData.fileList
      files.forEach(async (item, index) => {
        if (item.fileName.toLowerCase().includes('png') || item.fileName.toLowerCase().includes('jpg') || item.fileName.toLowerCase().includes('jpeg') || item.fileName.toLowerCase().includes('pdf')) {
          let data = await this.getSrc(item)
          if (data.flag === 'SUCCESS') {
            // 一组的图片preview属性值需要相同
            // eslint-disable-next-line
            $('body').append(`<img class="hide-img" preview="0" src="${data.data}">`)
            // 动态插入之后调用插件方法刷新预览图盒子
            this.$previewRefresh()
            if (index === 0) {
              let galleryElement = document.querySelector('.hide-img')
              galleryElement.onclick = this.onThumbnailsClick
              galleryElement.click()
            }
          } else {
            this.$toast(data.msg)
          }
        }
      })
    },

相关文章

  • 移动端使用vue-preview-photo动态加载图片实现图片

    使用场景:移动端需要实现附件预览功能,图片文件可以手指缩放。由于附件比较多,打开页面比较卡,为了提高用户体验,所以...

  • 图片响应式(数据绑定在标签上)

    大屏加载大图,小屏加载小图 目的各种终端都需要正常显示图片移动端应该使用更小的图片 思路:将元素中直接设置的图片背...

  • Flutter之:图片加载

    一、ClipOval 实现圆形图片 需要设置图片宽高 二、使用cached_network_image缓存加载图片...

  • Picasso的使用

    Picasso的基本使用 picasso仅需一行代码就能实现图片的异步加载 Picasso不仅实现了图片异步加载的...

  • 图片懒加载组件与应用

    实现图片只加载首屏用到的,其他的等滚动到再加载这就是图片懒加载 使用vue-lazyload插件实现 安装vue-...

  • iOS Gif图片加载

    Gif图片如越来越受欢迎,移动端对它的支持也是有些知识点的,主要是加载图片性能优化 Gif图片的生成 Gif图片是...

  • vue实现图片预览组件的封装与使用

    这是移动端使用vue框架与mint-ui实现的父用子之间的通信实现的图片预览的功能,在父组件中每一张图片都可以实现...

  • Glide加载图片实现不同大小圆角图片

    当我们用Glide图片加载器加载图片的时候,只要使用Glide 的 apply() 方法就可以实现各种类型的图片。...

  • 20.网站如何解决图片过大加载慢的问题?

    一、图片过大 判断用户的设备(主要用在移动端)、网络等,分别加载不同质量的图片(例如高端 iPhone wifi ...

  • 面试题

    移动端的性能优化方法有哪些?首屏loading加载,图片的预加载懒加载,按需加载 https为什么比http更安全...

网友评论

    本文标题:移动端使用vue-preview-photo动态加载图片实现图片

    本文链接:https://www.haomeiwen.com/subject/depaiktx.html