.image-viewer{position:fixed;z-index:99;top:0;left:0;height:100%;width:100%;background:rgba(0,0,0,0.6);cursor:move;transition:background0.3s;/*进出动画效果*/&.v-enter,&.v-leave-to{背景:rgba(0,0,0,0);}.image{位置:绝对;用户选择:无;变换原点:中心;will-change:transform,top,left;}}前言早年开发内部技术论坛时,为了实现一个图片浏览体验的过程,基于Vue开发了一个图片查看器组件,并实现思路简单整理了一下,希望能给大家提供一些帮助。先来看看效果图:从交互的角度来看,内容很简单。点击页面上的图片,图片的浮层会从图片当前位置弹出,从而达到图片浏览的目的。原理分析根据点击事件,获取被点击的图片元素,使当前图片元素不可见(通过visibility或opacity)创建阴影层在图片元素当前位置创建一个相同大小的图片元素创建动画来把图片放大到合适的大小(更新位置,比例)思路很清晰,实现起来也不难。实现方案因为最终目的是在Vue项目中使用,所以下面的方案直接封装成Vue组件。图像查看器基本结构图像查看器组件的视图结构很简单:
复制代码简单分析一下:transition:外层嵌套transition组件,可以很方便我们以后做图片位移缩放的动画效果。image-viewer:root元素用于放置图片元素,同时也起到覆盖层的作用。image:点击图片后显示的悬浮图片即为该元素,后续操作均在该图片上进行。show(el):点击图片后会调用该方法,将图片元素传入组件,以非常简洁的风格展示图片查看器。绘制半透明阴影动画非常简单: