实现预览图片上下滑动关闭效果

uniapp H5实现Word、PPT文档在线预览的实战指南 本文提供了在uniapp H5项目中实现Word、PPT文档在线预览的实战指南。通过集成腾讯云数据万象服务,开发者可轻松将云端文档转换为适配移动端的HTML格式,并使用uniapp的web-view组件进行展示。该方案解决了移动端直接预览Office文档的兼容性与体验难题,核心步骤包括服务配置、预览链接拼接与页面嵌入,是提升H5应用专业度的关键功能。 阅读详情


今天的项目任务中实现一个瀑布流,点击图片可以实现图片预览、左右切换效果。说干就干,下班时,提交完代码准备溜时,提出一个新需求,在预览图片时添加一个上下滑动取消预览的效果,唉,加吧,我爱加班。
这里主要记录一下实现该功能的关键步骤,如下:

一、页面结构

以下是页面结构内容,css样式及组件内容不在此赘述

<template>
  <div>
    <halo-dialog class="preview-image" :visible="visible" @cancel="close">
      <swiper zoom lazy class="swiper-outer" :current="swiperIndex" @swiper="onSwiper" @slideChange="changeIndex">
        <swiper-slide v-for="(item, key) in computedList" :key="item.key || key">
          <div
            class="swiper-zoom-container"
            @touchstart="getTouchstartY"
            @touchmove="getTouchmove"
            @touchend="touchEnd"
            :style="transformStyle"
          >
            <img :data-src="`${item.path}-w1242.jpg`" class="swiper-lazy" />
            <div class="swiper-lazy-preloader swiper-lazy-preloader-white"></div>
          </div>
        </swiper-slide>
      </swiper>
      <div class="close-outer" @click.stop="close">
        <img src="./images/close_icon.png" class="close" />
      </div>
    </halo-dialog>
  </div>
</template>

二、触摸事件概述

预览图片时,移动端界面通过触摸事件来判断是否滑动

事件名称描述是否包含 touches 数组
touchstart触摸开始,多点触控,后面的手指同样会触发是
touchmove接触点改变,滑动时是
touchend触摸结束,手指离开屏幕时是

每个触摸事件都包括了三个触摸列表,每个列表里包含了对应的一系列触摸点(用来实现多点触控):

  1. touches:当前位于屏幕上的所有手指的列表。
  2. targetTouches:位于当前DOM元素上手指的列表。
  3. changedTouches:涉及当前事件手指的列表。

每个 Touch 对象包含的属性如下:

  1. clientX:触摸目标在视口中的x坐标。
  2. clientY:触摸目标在视口中的y坐标。
  3. identifier:标识触摸的唯一ID。
  4. pageX:触摸目标在页面中的x坐标。
  5. pageY:触摸目标在页面中的y坐标。
  6. screenX:触摸目标在屏幕中的x坐标。
  7. screenY:触摸目标在屏幕中的y坐标。
  8. target:触摸的DOM节点目标。

三、功能实现

<script>
export default {
	data() {
		return {
			startY: 0,	
		    startX: 0,
		    imgScale: 1,
		    touchAngle: 0,
		    moveY: 0,
		    moveX: 0,
		    transformStyle: {}
		}
	},
	methods: {
		getTouchstartY(e) {
	      if (e.targetTouches.length === 1) {
	       // 初始style
	        this.transformStyle = {
	          transition: ""
	        };
	        // 获取触摸目标在视口中的位置
	        this.startY = e.targetTouches[0].clientY;  
	        this.startX = e.targetTouches[0].clientX;
	      }
	    },
	    getTouchmove(e) {
	      if (this.prevent) {
	        e.preventDefault();
	      }
	      if (e.targetTouches.length === 1) {
	      	// 获取滑动的距离
	        this.moveY = e.targetTouches[0].clientY - this.startY;
	        this.moveX = e.targetTouches[0].clientX - this.startX;
	        // 设置图片缩放的大小
	        this.imgScale = 1 - Math.abs(this.moveY) / 500;
	
	        // 触摸滑动角度
	        this.touchAngle = Math.abs(this.moveY / this.moveX);
	
	        if (this.touchAngle > 1) {
	          this.transformStyle = {
	            transform: `translate(${this.moveX}px,${this.moveY}px) scale(${this.imgScale})`
	          };
	        }
	      }
	    },
	    touchEnd() {
		   if (this.touchAngle > 1) {
		   		// 如果触摸滑动的距离大于130px,就关闭图片,关闭弹窗
		        if (Math.abs(this.moveY) > 130) {
		          this.transformStyle = {
		            transform: "scale(0)",
		            transition: "all .5s"
		          };
		          setTimeout(() => {
		            this.close();
		          }, 200);
		        } else {
		          // 如果触摸滑动的距离未超过130px,实现图片还原
		          this.transformStyle = {
		            transform: "translateY(0) scale(1)",
		            transition: "all 0.2s"
		          };
		        }
		      }
		 }
	}
}
</script>

四、实现效果

动态效果图可以参照https://live.photoplus.cn/live/65097362?nw=live#/live
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E7iOGxtN-1630051019776)(图片地址)]

微信小程序禁止页面上下滑动的3种方案与实战避坑指南 在移动端开发中,滚动控制是提升用户体验的关键技术点。其原理在于通过CSS属性、JavaScript事件拦截或组件化方案,精确管理页面的滚动行为。这项技术的核心价值在于实现沉浸式交互,避免因误触导致的页面错位,尤其在弹窗、引导页、全屏展示等场景下至关重要。本文聚焦微信小程序生态,针对常见的“禁止页面上下滑动”需求,深入剖析了CSS的overflow:hidden方案、JavaScript的touchmove事件捕获方案以及利用scroll-view的替代方案。其中,catchtouchmove事件和scrol 阅读详情

相关推荐

HTML5通过swiper实现图片预览

html中通过swiper实现的图片预览功能,主要功能是点击图片,图片放大查看,支持左右滑动。

jquery导航图片全屏滚动、首页全屏轮播图,各式相册

jQuery导航图片全屏滚动代码,jQuery鼠标悬停卡片3D翻页特效,jQuery电影相册图片预览,jquery图片墙手风琴,Photo Carousel

lucky_fang的博客 2212

如何制作Mike21溢油模型围油栏文件

这段时间群友在做海洋环评的做了一个MIKE21的溢油模型,溢油模型其实也是ECOLAB模块的应用,而在海上发生溢油事件的时候,为防止溢油对海洋生态的破坏,经常使用的一种手段就是使用围油栏技术将溢油控制在一定范围并进行处理。今天小编就给大家说说在MIKE21里怎么实现围油栏文件的制作

zhuzhujiayoua的博客 1329

JavaScript+css实现的图片自动滑动切换页面web前端html源码

本源码编码:10197,需要的朋友,访问下面链接后,搜索10197,即可获取。

mazai5080的博客 1383

第一篇:常见CAN错误帧及其排查方向

在本文中主要阐述各类错误帧的形成原因以及在使用同星硬件设备出现错误帧时,应当 如何进行排查并消除错误帧。在 CAN 总线通信中,通常遇见的错误帧主要为以下五种,其 分别是:bit error、ACK error、stuff error、CRC error 以及 form error。

u013089100的博客 1742

STM32F4驱动海康工业相机实战:从PWM信号到精准触发拍照(附完整代码)

本文详细介绍了如何使用STM32F4开发板驱动海康工业相机,实现PWM信号精准触发拍照的完整方案。从硬件连接到PWM信号生成,再到相机触发配置与延迟补偿,提供了实战经验和完整代码,帮助开发者解决工业相机硬件触发中的关键问题。

weixin_33716941的博客 694

html页面实现图片滚动

html页面实现图片滚动 css代码 * { margin: 0px;/*设置一个元素所有外边距的宽度*/ padding: 0px;/*设置元素所有内边距的宽度*/ text-align: center;/*规定元素中的文本的水平对齐方式。*/ } #banner { width: 62.5%; height: 50%; marg

qq_44124672的博客 2万+

baostock实战:如何用Python批量下载多只股票的历史数据(含常见错误排查)

本文详细介绍了如何使用Python和baostock库批量下载多只股票的历史数据。内容涵盖从环境搭建、代码标准化到构建稳健的批量下载框架的全过程,并重点提供了高级错误处理、网络重试、数据验证及内存管理等实战解决方案,帮助用户高效构建股票数据处理流水线。

nice1的博客 1081

最全面的无缝滚动轮播图(只为解放你的双手)

文章目录1. 轮播图效果展示2. 轮播图剖析2.1. 原理简介2.2. 功能需求3. 代码分析3.1. HTML代码分析3.2. JavaScript代码逐步引导 写在前面:最近在给自己的二手网页添加动画时发现轮播图还真是无处不在,样式也是五花八门。于是手写轮播图的想法涌上心头,经过一番折腾之后,它诞生了。优化了些内容,对无js基础的小伙伴也很友好(只需改动样式,js动态变化)。 1. 轮播图效果展示 2. 轮播图剖析 2.1. 原理简介 2.2. 功能需求 3. 代码分析 3.1. HTML代码分析 3.

Jdoit CW的博客 1万+

电磁场仿真软件:Sonnet_(1).Sonnet软件概述

根据特定需求自定义仿真流程,如多频率点仿真、多边界条件仿真等。

kkchenjj的博客 1450

使用Python爬虫抓取旅游景点评价数据并进行热度可视化

景点热度通常由景点的评分、评论数以及游客的热情度来决定。高热度的景点通常意味着更高的游客评分和更多的游客评论。热度不仅反映了景点的受欢迎程度,还可以揭示某些景点的潜力和存在的问题。评分:游客对景点的综合评分,通常是0到5分。评论数:景点的评论数量,反映了游客对景点的关注程度。热度变化:在一定时间内,景点的评价和评论数量变化,能够反映景点的热度波动。通过使用Python爬虫技术抓取旅游景点的评价和评论数据,我们能够深入分析景点的热度,并通过数据可视化工具将这些信息展示给用户。

2201_76125261的博客 1282

简单的swiper实现照片预览功能

/实现轮播图的预览效果//调用uni.previewImage()方法预览图片//预览时,默认显示图片的索引currenti,//所有图片url地址的数组urls})}

m0_66975650的博客 1350

在Keil uv5里面添加STC元器件库,不影响其他元件

先到网上下载stc.CBD(宏晶网站的地址实效了)还有STC新系列单片机的头文件,宏晶的网站就有1、在Keil/C51/INC下新建目录"STC"文件夹, 把所有STC新系列单片机的头文件拷贝到"STC"目录下。2、下载的用于keil下的STC器件数据库更名为STC.CDB并拷贝到Keil/UV4目录下。3、打开Keil文件夹下的TOOLS.ini文件。4、在[UV2]下键入CDB0="UV2\S

技术联盟 1万+

推荐使用:FTImageViewer——轻量级的iOS图片预览神器

推荐使用:FTImageViewer——轻量级的iOS图片预览神器 在今天这个图像信息泛滥的时代,一个高效、易用的图片预览组件对于提升用户体验至关重要。因此,我们向您隆重推荐【FTImageViewer】——一款由刘峰亭开发的开源库,它以简洁的代码实现强大的图片预览功能,让您的应用在展示图片时更加得心应手。 项目介绍 FTImageViewer是一个专为iOS平台设计的图片预览框架,旨在简化图片查...

gitblog_00607的博客 1035

UG二次开发之 三面摆正体代码分析

CIUGUIBlock 是一个从UIBlock 派生的一个类,为什么要从UIBlock 派生出CIUGUIBlock,这是为了兼容低版的UG。如果我们不从的UIBlock 派生控件类对象指针,在UG 8.5以下的版本,会出现编译错误的问题。这是一个简单的入门功能,包括了不少的常用的UF函,下面我们将结合成品代码一起分析一下常用的函数,这对初学者是必要的。根据创建好的UI控件,在 initialize_cb 中创建控件的指针对象。//根据选定的面,指定 X,Y坐标系轴。//根据变换的矩阵,平移实体。

u014657217的博客 351

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

UniApp高效集成图片预览组件实战指南

本文提供了在UniApp项目中集成专业图片预览组件的实战指南。通过对比官方API与第三方组件,详细介绍了如何引入和配置uni-ImagePreview组件,实现图片放大查看功能、多图滑动、双指缩放等流畅交互,并重点解决了跨平台兼容性、性能优化及自定义UI等核心问题,助力开发者提升应用用户体验。

weixin_28323057的博客 332

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SlideCloseLayout—仿头条多图预览的页面关闭效果

序最近同事问头条多图预览界面的关闭效果怎么实现,之前没有怎么注意,查看之后,顿时发现这个关闭效果还挺有意思,于是决定弄上一弄!那就撸起袖子开始吧!注:此项目是参考SwipableLayout 控件做的,如有侵权,请联系我(1547740082)一. 功能概述 在上滑或者下滑时,随着手指的移动,图片区域跟随移动,并且activity的背景逐渐变的透明 在滑动距离不超过一段范围时,会有回弹效果。 在滑动

xingxing_yan的博客 1261

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

rn 实现上下滑动选择列表_[RN] react-native FlatList 实现列表选中的最佳方式(刷新指定Item)...

效果如下:核心思路就是往数据源里面 给每条数据加一个选中状态.如图在网络请求完成之后,给每条数据添加一个select的状态:data.list.forEach(item => item.select = false);fetchList(page) {if (page == && !this.state.refreshing) {Toast.loading('加载中', )...

weixin_32049741的博客 1092

小程序生成长图(预览,不限高度)+小程序码+小程序码中间logo换成自定义logo

上条博客已经介绍了如何云调用生成小程序码,链接地址: https://blog.csdn.net/mingjuna2010/article/details/92796711 这条博客我们来介绍小程序中怎么生成长图,如何预览,并且在长图中绘制小程序码,以及小程序码中间的默认logo换成自定义logo。 ①首先在页面上准备一个画布,画布的宽度设定,高度不定。代码如下: ...

mingjuna2010的博客 4733

开源一个个人app,包含图片浏览、视频播放、新闻等功能

个人业余练习的一个小应用。目的想练习一些主流开源项目的使用,搞一些自己感兴趣但是没有做过的东西,最近一年多比较忙,业余做的功能也少了,xplan借鉴了很多开源项目,所以想开源出来。 源码地址:https://github.com/JustRight815/xplan_kotlin 效果预览: 项目环境 android studio 、kotlin(本来是java项目,部分界...

u010351494的专栏 1134

零基础入门:HoneyView图片浏览器的10个必备技巧

作为一名图片浏览的重度用户,我最近发现了一款非常轻量且功能强大的软件——HoneyView。今天我就来分享一下,作为新手如何快速上手HoneyView的10个实用技巧。我个人很喜欢HoneyView的轻量化和多功能,特别是它支持直接浏览压缩包内的图片,大大提高了工作效率。通过这10个技巧,相信你已经能够轻松使用HoneyView来浏览和管理图片了。使用鼠标滚轮可以快速缩放图片,按住左键拖动可以移动图片位置。在"查看器"选项卡中,可以自定义背景颜色、图片显示方式等。可以直接浏览压缩包内的图片,无需解压。

NightshadeEagle34的博客 857

MHVideoPhotoGallery核心功能解析:10个你必须了解的图片视频展示技巧

MHVideoPhotoGallery是一款功能强大的图片视频展示框架,专为iOS应用开发设计。它提供了丰富的媒体浏览体验,支持图片和视频的无缝切换与交互操作。本文将详细解析该框架的10个核心功能,帮助开发者快速掌握其使用技巧,打造专业级的媒体展示界面。 ## 1. 直观的媒体概览视图 MHVideoPhotoGallery提供了直观的媒体概览视图,让用户可以一目了然地浏览所有媒体内容。这个视

gitblog_00049的博客 433

React Native Lightbox集成指南:如何在现有项目中快速部署

想要为你的React Native应用添加惊艳的全屏图片查看功能吗?React Native Lightbox正是你需要的终极解决方案!这个轻量级组件让用户能够点击图片后以流畅的动画效果进入全屏模式,为移动应用带来专业级的用户体验。😊 ## 快速安装步骤 在你的React Native项目中,只需一条简单的命令即可完成安装: ```bash yarn add react-native-li

gitblog_00384的博客 1007

移动端安卓和IOS开发框架Framework7教程-图片浏览器

图片浏览器是一个像iOS图片浏览器一样用来展示图片的组件。图片可以被缩放或者平移 (可选)。 图片浏览器使用 幻灯片组件来展现图片。 创建一个图片浏览器实例 图片浏览器只需通过javaScript就可以被创建和初始化。我们需要使用App封装好的方法: myApp.photoBrowser(parameters) -  带参初始化图片浏览器 parameters - objec...

zaixianshouce的博客 711

html5网页中加入播放器,10款jquery+html5实现的网页播放器

1.3D版HTML5模拟衣服拖拽动画效果这是一款3D版HTML5模拟衣服拖拽动画效果源码,是一款非常具有创意而且很好玩的HTML5动画。运行本例源码可见衣服布料呈3D环形显示,可以用鼠标左键来拖拽衣服,鼠标右键用来切割衣服,还可以根据鼠标用力程度决定衣服破碎程度的关系,是一款非常优秀的HTML5 3D功能源码。2.jquery caroufredsel图片局部放大查看效果插件这是一款基于jquer...

weixin_31475247的博客 1044

LongCat-Image-Edit小白指南:18GB显存轻松运行图片编辑

本文介绍了如何在星图GPU平台上自动化部署LongCat-Image-Edit动物百变秀镜像,实现基于自然语言的智能图片编辑。用户只需通过文字描述需求,如将宠物照片中的猫转换为狮子或添加创意元素,该工具即可快速生成相应的视觉效果,大幅降低专业修图门槛。

weixin_35045970的博客 262
上一篇: 图像裁剪器 Cropperjs
下一篇: vue实现瀑布流效果
伦为JAY下囚
博客等级 码龄7年 52粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值