首页 > 其他分享 >【快应用】图片放大预览功能的实现

【快应用】图片放大预览功能的实现

时间:2023-08-18 10:36:15浏览次数:29  
标签:预览 offsetX offsetY background changedTouches 放大 500 图片

 【关键词】

放大、image、background-position


【问题背景】

快应用中并没有直接的放大图片预览的功能,然而是可以利用现有的功能去实现图片的放大预览功能的。这样在快应用中浏览页面内容遇到图片时,遇到一些小图,觉得图片内容是不错的,就可以点击图片局部地方,放大查看图片的部分细节,提升用户体验。


【解决方案】

实现上主要分为两部分:

一、获取要展示的局部图片;

这个是比较好实现的,我们只要实时获取在图片上滑动时的一个X,Y坐标,这个可以用touchmove事件返回的offsetX和offsetY来获取。

【快应用】图片放大预览功能的实现_图片预览

move(e) {

      this.display = true

      if (e.changedTouches[0].offsetX < 500 && e.changedTouches[0].offsetX > 0) {

        this.positionX = 0 - e.changedTouches[0].offsetX;

      }

      if (e.changedTouches[0].offsetY < 500 && e.changedTouches[0].offsetY > 0) {

        this.positionY = 0 - e.changedTouches[0].offsetY;

      }

    },

二、显示放大的局部图片;

这里是使用一个div块 + background的各个属性来实现的。

background-image:用来展示图片(一张原图);

background-size:设置背景图大小来选择放大的倍数;image大小是500*500,该值设置的1000*1000,即图片被放大了4倍。

background-position:设置背景图展示的位置属性,即展示局部放大后的图片;此处是动态填入处理后的touchmove事件返回的XY坐标,需要将值取反,如下所示:

this.positionX = 0 - e.changedTouches[0].offsetX;

this.positionY = 0 - e.changedTouches[0].offsetY;

细节部分:滑动超过图片的范围时,就显示对应的四个角的位置。

实现代码:

<template>

  <!-- Only one root node is allowed in template. -->

  <div class="container">

    <text class="title">图片放大预览功能,点击图片后,在图片上滑动</text>

    <div>

      <image id="imgid" class="img" src="/Common/logo.png" ontouchmove="move" ontouchend="moveEnd"></image>

    </div>

    <div class="preview" show="{{display}}" style="background-position: {{positionX}} {{positionY}};"></div>

  </div>

</template>

 

<style>

  .container {

    flex-direction: column;

    align-items: center;

  }

 

  .title {

    font-size: 50px;

  }

  .img {

    width: 500px;

    height: 500px;

  }

  .preview {

    width: 500px;

    height: 500px;

    background-image: url(/Common/logo.png);

    background-size: 1000px 1000px;

    margin-top: 10px;

  }

</style>

 

<script>

  module.exports = {

    data: {

      display: false,

      positionX: 0,

      positionY: 0,

    },

    onInit() {

      this.$page.setTitleBar({

        text: '图片预览',

        textColor: '#ffffff',

        backgroundColor: '#007DFF',

        backgroundOpacity: 0.5,

        menu: true

      });

    },

    move(e) {

      this.display = true

      if (e.changedTouches[0].offsetX < 500 && e.changedTouches[0].offsetX > 0) {

        this.positionX = 0 - e.changedTouches[0].offsetX;

      }

      if (e.changedTouches[0].offsetY < 500 && e.changedTouches[0].offsetY > 0) {

        this.positionY = 0 - e.changedTouches[0].offsetY;

      }

    },

    moveEnd() {

      this.display = false

    }

  }

</script>

【快应用】图片放大预览功能的实现_图片预览_02

标签:预览,offsetX,offsetY,background,changedTouches,放大,500,图片
From: https://blog.51cto.com/u_15687416/7132237

相关文章

  • vue3项目,vie框架,相对路径图片,测试时正常显示,发布后不显示问题解决方案
    参考Vite官网的说明,修改图片的引用路径后,图片发布后可以正常显示constimgUrl=newURL('./img.png',import.meta.url).hrefdocument.getElementById('hero-img').src=imgUrl官网地址: https://cn.vitejs.dev/guide/assets.html ......
  • 基于 Easysearch kNN 搭建即时图片搜索服务
    环境准备启动 Easysearch 服务:#Makesureyourvm.max_map_countmeetstherequirementsudosysctl-wvm.max_map_count=262144dockerrun-it--rm-p9200:9200\-e"discovery.type=single-node"\-eES_JAVA_OPTS="-Xms512m-Xmx512m"\......
  • HTML图片元素
    1.<img>标签作用:给网页插入图片常用属性:src(必需):“source”,表示来源,即为图片地址。alt(必需):指定图像不能显示时候的替代文本。width,height:宽度和高度,单位:像素px或百分比%。摘录自:https://man.ilovefishc.com/pageHTML5/img.html......
  • UMEditor 复制word里面带图文的文章,图片可以直接显示
    ​ 百度ueditor新增的将word内容导入到富文本编辑框的功能怎么没有啊,...ueditor实现word文档的导入和下载功能的方法:1、UEditor没有提供word的导入功能,只能说是粘贴复制。2、方案:用poi来提供word导入,思路是将word转换为html输出,再用UEditor提供的setContent()方法将html的内容......
  • 百度ueditor 复制word里面带图文的文章,图片可以直接显示
    ​ 1.编辑器修改(可选)1.1在 ueditor/config.json 中添加代码块    /* 上传word配置 */    "wordActionName":"wordupload",/* 执行上传视频的action名称 */    "wordFieldName":"upfile",/* 提交的视频表单名称 */    "wordPathFormat":"/p......
  • 百度ueditor编辑器 复制word里面带图文的文章,图片可以直接显示
    ​ 图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。加入下面的代码://判断剪......
  • 百度编辑器 复制word里面带图文的文章,图片可以直接显示
    ​ 由于工作需要必须将word文档内容粘贴到编辑器中使用但发现word中的图片粘贴后变成了file:///xxxx.jpg这种内容,如果上传到服务器后其他人也访问不了,网上找了很多编辑器发现没有一个能直接解决这个问题考虑到自己除了工作其他时间基本上不使用windows,因此打算使用nodejs来解......
  • FastReport 报表中图片对象
    fastreport报表中的图片对象TFrxPictureView赋值方式通过数据集赋值procedureTForm1.Button1Click(Sender:TObject);beginfrxReport1.Clear;frxReport1.LoadFromFile('c:\reports\rp06.fr3');pv:=frxReport1.FindObject('Picture1')asTfrxPictu......
  • CKEditor 复制word里面带图文的文章,图片可以直接显示
    ​ 在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper。通过知乎提供的思路找到粘贴的原理,通过TheViper找到粘贴图片的方法。其原理为一下步骤:监听粘贴事件;【用于插入图片】获取光标位置;【......
  • 【代码快】-验证码-绘制倒图片显示
    整理代码块代码块整理后存储,供后期使用SubshowRandomStr()str=String.Empty'生成随机数字符串DimrAsRandom=NewRandom()Fori=0To4str+=r.Next(0,9).ToStringNext'画字符串DimbmpAsBitmap=NewBitmap(120,......