练手小项目——canvas放大镜效果 放大图片
参考:canvas之放大镜效果_WHTGS的博客-CSDN博客_canvas 放大镜
效果:
代码:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>canvas_magnifier</title><link rel="stylesheet" href="canvas_magnifier.css"></head><body><div><canvas width="3000" height="2000" id="canvas1"></canvas><canvas width="1000" height="500" id="canvas2"></canvas></div><script src="canvas_magnifier.js"></script>
</body></html>
div {position: relative;
}
div canvas {position: absolute;left: 0;top: 0;margin: 0 auto;
}
div #canvas2 {border-radius: 50%;box-shadow: 10px 10px #665858;
}
var canvas1 = document.querySelector("#canvas1");
var canvas2 = document.querySelector("#canvas2");
var div = document.querySelector("div");
var ctx1 = canvas1.getContext('2d');
var ctx2 = canvas2.getContext('2d');var img = new Image();
img.src = 'graduate2020.png';
img.addEventListener("load", loadHandler);function loadHandler(e) {div.addEventListener("mousemove", mouseHandler)// 2、3参数决定开始剪切的x坐标位置、开始剪切的y坐标位置。// 3、4参数决定被剪切图像的宽度、高度。ctx1.drawImage(img, 0, 0, 3000, 2000);
}function mouseHandler(e) {console.log(e.clientX, e.clientY);canvas2.style.left = e.clientX + 'px';canvas2.style.top = e.clientY + 'px';// 1、2参数决定要清除的矩形左上角的x坐标、y坐标。// 3、4参数决定要清除的矩形的宽度、高度,以像素计。ctx2.clearRect(0, 0, 1000, 500);// 5、6参数决定在画布上放置图像的 x、y 坐标位置。// 7、8参数决定要使用的图像的宽度、高度(伸展或缩小图像)。ctx2.drawImage(img, e.clientX * (img.width / 3000), e.clientY * (img.height / 2000), 1000, 500, 0, 0, 2000, 1000);
}
注意:
使用canvas时出现Uncaught TypeError: Cannot read property ‘getContext‘ of null 错误。
这是因为浏览器还没有加载htnml文件的时候就已经执行了文件。
练手小项目——canvas放大镜效果 放大图片相关推荐
- 练手小项目,爬取3DM图片
博客原文:https://weweweha.com 1. 概述 爬取3DM指定网页的游戏壁纸,并且通过多线程来加速爬取图片的速度. 2.使用库 request库用来1解析指定网页,re库用来搜 ...
- click 点击图片不起作用_JavaScript 练手小案例:基于SVG的图片切换效果
最近太忙了,自动来到rjxy后,不晓得怎么回事,忙的都没时间更博了. 昨天还有个同学跟我说,你好久没更新博客了.. 甚为惭愧~~ 正好12月来了,今天开一篇. 最近上课讲到了 SVG,不晓得同学们理解 ...
- 台式小风扇(HTML+CSS+JS练手小项目)
台式小风扇(HTML+CSS+JS练手小项目) 功能介绍 外观展示 HTML代码 CSS代码 JS代码 总结 功能介绍 前段时间看到这样的风扇特效,感觉还挺好玩,就自己也写一个练练手. 风扇有四个档位 ...
- springboot+vue练手小项目[前台搭建+后台编写](非常详细)
[ springboot+vue练手小项目 ] 技术栈: springboot+vue3+element-plus +Mybaties-plus+hutool +mysql8 项目介绍 :最近刚学了s ...
- ssm练手小项目_20 个 JavaScript+Html+CSS 练手的小项目
前言: 最近在 GitHub 上发现了一个 vanillawebprojects[1] 开源仓库,里面收集了 20 个 JavaScript+Html+CSS的练手项目,没有使用任何框架,可以让你从基 ...
- 爬虫练手小项目:豆瓣高分图书TOP100
爬虫练手小项目:豆瓣高分图书TOP100 import requests import re from requests.exceptions import RequestException impo ...
- 数据结构练手小项目(AVL树、哈希表、循环链表、MySQL数据库)
文章目录 前言 正文(无删减) 我的想法(删减修改版) 数据导入与数据存储 功能实现 数据结构 用户结构 SIM卡结构 AVL树数据结构 哈希表结构 数据表 用户表 SIM卡表 时间安排 前言 本月主 ...
- html+css+js之20个练手小项目(一)
html+css+js之20个练手小项目(一)--Hangman 前言 一.HTML 二.CSS 三.JS 前言 前端新手练习,记录不迷失. 主要练习html和CSS布局以及JS. 来源github, ...
- c语言模拟器怎么打程序,C语言初学者练手小项目——万花模拟器
原标题:C语言初学者练手小项目--万花模拟器 还记得小时候玩的万花尺么?好好玩,各种不同的点距能画出各种各样形状图形. C语言程序万花尺模拟 函数功能:每隔5秒随机生成万花图形 并自动保存作图参数以及 ...
最新文章
- android模糊查询listview数据_ListView的简单应用(一)
- ORM学员管理系统单表查询示例
- python动态心形代码-Python数学方程式画心型图案源码示例
- python学习手册中文版免费下载-Python学习手册
- Netty详解(五):Netty TCP粘包 拆包
- mysql集群经常无法truncate_失败的mysql cluster配置-无法顺利转换已有数据
- 为什么剩余数不能相加_为什么各位之和是 3 的倍数的数能被 3 整除?
- 如何拉取k8s镜像_K8s 从懵圈到熟练 – 镜像拉取这件小事
- awk是命令还是编程语言
- struts1.3.8与hibernate3.2.5整合所遇到的问题
- oracle 判断数值为小数位数为一位且为0_Python的循环、判断和各种表达式(长文系列第二篇)...
- java 基础数据结构源码详解及数据结构算法
- [BZOJ]4127: Abs
- OSPF与EIGRP的比较
- 【Android RTMP】RTMP 数据格式 ( FLV 视频格式分析 | AVC 序列头格式解析 )
- 聊一聊TVS管的电路使用
- 数据可视化之中国足球队在国际足联及亚洲的历史排名看这儿
- 阳光宽频加密算法破解,找出隐藏真实地址。
- 《面向对象程序设计》2018年春学期寒假及博客作业总结
- 一朝春尽红颜老,花落人亡两不知.
热门文章
- web编程期中大作业
- IP地址的划分(A/B/C/D/E)类
- 智原深耕网通应用 布建完整ASIC解决方案
- android sqlite #039;,问题详情_百度云推送_免费专业最精准的移动推送服务平台
- Android 多窗口适配
- 一个悲观主义者的积极思考——职业篇[待续2021/06/27]
- 抖音直播监测——2分钟了解知音数据小程序
- 解决Windows10开机黑屏问题
- 如何使用Kumo Java Word Cloud?
- TI公司DSP集成开发环境(CCS)有哪几种工作模式?各自特点是什么?