原生JS实现简单放大镜效果


Posted in Javascript onFebruary 08, 2017

本文实例为大家分享了原生JS实现放大镜效果的具体代码,供大家参考,具体内容如下

<html>

 <head>
 <meta charset="UTF-8">
 <title></title>
 <style type="text/css">
 * {
 margin: 0;
 padding: 0;
 }
 img{
 vertical-align: top;
 }
 .fdj {
 width: 350px;
 height: 350px;
 position: relative;
 margin: 100px auto;
 border: 1px solid gainsboro;
 }
 .small {
 position: relative;
 }
 .small img {
 width: 350px;
 }
 .mask {
 width: 100px;
 height: 100px;
 background: rgba(255, 255, 0, 0.4);
 position: absolute;
 left: 0;
 top: 0;
 cursor: move;
 display: none;
 }
 .big {
 position: absolute;
 top: 0;
 left: 360px;
 width: 500px;
 height: 500px;
 border: 1px solid gainsboro;
 overflow: hidden;
 display: none;
 }
 .big img{
 position: absolute;
 left: 0;
 top: 0;
 }
 </style>
 </head>

 <body>
 <div class="fdj">
 <div class="small">
 <img src="http://cdn.attach.qdfuns.com/notes/pics/201702/08/162503mw0fawb5b02va22i.jpg" />
 <div class="mask"></div>
 </div>
 <div class="big">
 <img src="http://cdn.attach.qdfuns.com/notes/pics/201702/08/162503mw0fawb5b02va22i.jpg" />
 </div>
 </div>
 </body>
 <script type="text/javascript">
 var fdj = document.querySelector('.fdj') // 获得最大的盒子
 var small = document.querySelector('.small'); //获取小图片盒子
 var big = document.querySelector('.big'); //获取大图片盒子
 var bigs = big.children[0] //大图片 
 var smalls = small.children[0] //小图片
 var mask = small.children[1]; //遮罩

 //鼠标移入小图片盒子
 small.onmouseover = function() {
 //鼠标移入图片盒子将遮罩与大图片显示
 mask.style.display = 'block';
 big.style.display = ' block';
 };

 //鼠标移出小图片盒子
 small.onmouseout = function() {
 //鼠标移出小图片盒子将遮罩与大图片隐藏
 mask.style.display = 'none';
 big.style.display = 'none';
 };

 var x=0;
 var y=0;
 //鼠标在小图片上移动时
 small.onmousemove = function(ev) {
 var ev = event || window.event;
 //让鼠标在遮罩正中
 //鼠标X坐标与Y坐标
 x = ev.clientX -this.offsetParent.offsetLeft- mask.offsetWidth / 2 ; 
 y = ev.clientY -this.offsetParent.offsetTop- mask.offsetHeight / 2 ;
 //将遮罩限制在小图片盒子中

 if (x<0) {
 x=0;
 }else if(x>small.offsetWidth-mask.offsetWidth){
 x = small.offsetWidth-mask.offsetWidth;
 }

 if(y<0){
 y=0;
 }else if(y>small.offsetHeight-mask.offsetHeight){
 y= small.offsetHeight-mask.offsetHeight
 }
 mask.style.left = x + 'px';
 mask.style.top = y + 'px';

 //大图与小图的比例

 /*var scalX = bigs.offsetWidth/small.offsetWidth;
 var scalY = bigs.offsetHeight/small.offsetHeight;*/

 var scalX = x/(small.offsetWidth-mask.offsetWidth);
 var scalY = y/(small.offsetHeight-mask.offsetHeight);

 bigs.style.left = -(x*scalX)+'px';
 bigs.style.top = -(y*scalY)+'px';

 };

 </script>

</html>

效果图:(演示)

原生JS实现简单放大镜效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
Jan 16 Javascript
form中限制文本字节数js代码
Jun 10 Javascript
javascript 支持ie和firefox杰奇翻页函数
Jul 22 Javascript
Mootools 1.2教程 输入过滤第二部分(字符串)
Sep 15 Javascript
javascript实现十秒钟后注册按钮可点击的方法
May 13 Javascript
jQuery中trigger()与bind()用法分析
Dec 18 Javascript
动态加载js、css的实例代码
May 26 Javascript
AngularJS中过滤器的使用与自定义实例代码
Sep 17 Javascript
微信小程序中input标签详解及简单实例
May 18 Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
Jul 26 jQuery
js实现自动播放匀速轮播图
Feb 06 Javascript
javascript canvas实现雨滴效果
Jun 09 Javascript
基于JavaScript实现本地图片预览
Feb 08 #Javascript
js 判断登录界面的账号密码是否为空
Feb 08 #Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
Feb 08 #Javascript
js获取地址栏中传递的参数(两种方法)
Feb 08 #Javascript
Bootstrap模态窗口源码解析
Feb 08 #Javascript
Bootstrap路径导航与分页学习使用
Feb 08 #Javascript
Bootstrap缩略图与警告框学习使用
Feb 08 #Javascript
You might like
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
2020/04/06 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
继续学习javascript闭包
2015/12/03 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
AngularJS封装指令方法详解
2016/12/12 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
JS简单添加元素新节点的方法示例
2018/02/10 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
[02:16]DOTA2英雄基础教程 干扰者
2014/01/15 DOTA
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
window下eclipse安装python插件教程
2017/04/24 Python
Python如何存储数据到json文件
2020/03/09 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
复古服装:RetroStage
2019/05/10 全球购物
Java平台和其他软件平台有什么不同
2015/06/05 面试题
电子商务专业学生职业生涯规划
2014/03/07 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
媒矿安全生产承诺书
2014/05/23 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
通过Python把学姐照片做成拼图游戏
2022/02/15 Python
Python自动化实战之接口请求的实现
2022/05/30 Python