原生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 相关文章推荐
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
Jan 11 Javascript
特殊日期提示功能的实现方法
Jun 16 Javascript
jquery——九宫格大转盘抽奖实例
Jan 16 Javascript
JavaScript 总结几个提高性能知识点(推荐)
Feb 20 Javascript
快速使用node.js进行web开发详解
Apr 26 Javascript
vue+axios实现登录拦截的实例代码
May 22 Javascript
js断点调试心得分享(必看篇)
Dec 08 Javascript
vue router 源码概览案例分析
Oct 09 Javascript
vue组件之间通信方式实例总结【8种方式】
Feb 22 Javascript
ES6的解构赋值实例详解
May 06 Javascript
Javascript通过控制类名更改样式
May 24 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
Nov 16 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对象类型判断
2008/08/27 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
JavaScript中的对象和原型(一)
2016/08/12 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
如何从零开始手写Koa2框架
2019/03/22 Javascript
[36:54]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python私有属性和方法实例分析
2015/01/15 Python
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
python实现自动登录后台管理系统
2018/10/18 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
python中的列表与元组的使用
2019/08/08 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
写一个用矩形法求定积分的通用函数
2012/11/08 面试题
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
创业计划书中包含的9个方面
2013/12/26 职场文书
暑期实践思想汇报
2014/01/06 职场文书
农民致富事迹材料
2014/01/23 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
初婚未育证明样本
2015/06/18 职场文书
go语言中json数据的读取和写出操作
2021/04/28 Golang
python基于turtle绘制几何图形
2021/06/15 Python
Nginx限流和黑名单配置
2022/05/20 Servers