美文网首页功能模块
图片放大镜功能

图片放大镜功能

作者: 千茉紫依 | 来源:发表于2019-03-22 09:32 被阅读0次

思路:在图片上面放置一层透明canvas,监听鼠标移入移出事件,移入时根据设置的放大倍数实时绘制canvas,移出时清空canvas

实现:本文中使用到了canvas、vue

一、页面结构

<canvas class="img-over img" ref="canvas" @mousemove="enlargePic" @mouseout="endLarge"></canvas>
<img class="img" :src="img" ref="pic" v-if="showPic" />

//css
.img {
    height: 20rem;
    width: 30rem;
}
.img-over {
     z-index: 4;
}

通过设置z-index实现透明canvas覆盖在图片上面

二、data设置

data() {
        return {
            imgScale: 1.1, //放大倍数
            img:'url',  //图片路径
            showPic: true,  //控制图片显示,移入时显示canvas而不显示图片
            ctx: null   //canvas句柄,移入时将他设置,移出时将他清空
        };
    }

三、函数

        /*当鼠标移入时触发*/
        enlargePic(e) {
            this.showPic = false;   //图片隐藏
            let pic = new Image();  //新建Image对象pic
            pic.src = this.img;   //将img拷贝至pic,这样做能优化运算速度
            let canvas = this.$refs.canvas; //获取页面canvas元素
            this.ctx = canvas.getContext('2d'); //新建2d绘图
            //初始化,将绘图清空,避免历史残留图像造成影响
            this.ctx.clearRect(0, 0, canvas.width, canvas.height);
            //将用户点击时的页面坐标,转化成canvas内部坐标
            //canvas.getBoundingClientRect()能够取到canvas距离页面边距的left等值
            let coordInCanvas = {
                x: e.clientX - canvas.getBoundingClientRect().left,
                y: e.clientY - canvas.getBoundingClientRect().top
            };
            /*对canva进行放大处理,newSize指图片显示的部分区域,区域变小,
              但尺寸不变,图片就会呈现放大效果*/
            let newSize = {
                width: canvas.width / this.imgScale,
                height: canvas.height / this.imgScale
            };
            //以用户鼠标为中心,以新尺寸,确定新的绘图起点
            let newX = coordInCanvas.x - newSize.width / 2;
            let newY = coordInCanvas.y - newSize.height / 2;
            //在图片中截取一个区域覆盖原图片
            this.ctx.drawImage(
                pic,
                newX,
                newY,
                newSize.width,
                newSize.height,
                0,
                0,
                canvas.width,
                canvas.height
            );
        },

         /*当鼠标移出时触发*/
        endLarge() {
             //获取页面canvas元素
            let canvas = this.$refs.canvas;
             //擦除canvas
            this.ctx.clearRect(0, 0, canvas.width, canvas.height);
             //显示原始图片
            this.showPic = true;
        },

图片放大镜功能完成

相关文章

  • 图片放大镜功能

    思路:在图片上面放置一层透明canvas,监听鼠标移入移出事件,移入时根据设置的放大倍数实时绘制canvas,移出...

  • 放大镜

    一、多种图片放大镜 二、单张图片放大镜

  • HTML放大镜的一种实现及原理讲解(js)

    0.效果预览 上下方的宽度和高度指的是图片内可移动滑块的长宽,下文以‘放大镜’来称呼该滑块。 基本功能 移动放大镜...

  • 案例:仿京东放大镜

    案例:仿京东放大镜 整个案例可以分为三个功能模块 鼠标经过小图片盒子, 黄色的遮挡层 和 大图片盒子显示,离开隐藏...

  • 29 仿京东放大镜案例

    欢迎关注我的微信公众号:CurryCoder的程序人生 1.仿京东放大镜案例 功能需求:鼠标经过小图片盒子,黄色的...

  • 爱如潮水

    更新iPad多了一些图片处理功能,比如这个放大镜,闲来玩玩修图,修过后,竟然让我心服口服,不是对系统,而是对...

  • 2018-12-01

    JS实现放大镜功能 网店中的商品都能放大查看细节,这里是放大功能的简单实现。。。。 这个放大镜具有选择放大倍数的功...

  • 小猿圈web前端之JavaScript放大镜效果

    对于经常网购的网友们,现在很多网站都有放大镜功能,每当你看到商品的时候,鼠标移动到图片时,就会有放大效果,知道是什...

  • 机器学习笔记_1

    在新标签页中打开图片,点击放大镜图标既可

  • 封装放大镜

    1、放大镜插件的参数 参数参数表示的意义selector(必须写) 指定容器url(必须写) 图片地址 2、放大镜...

网友评论

    本文标题:图片放大镜功能

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