原生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 相关文章推荐
jquery 插件学习(六)
Aug 06 Javascript
捕获键盘事件(且兼容各浏览器)
Jul 03 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
Dec 02 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
Apr 14 Javascript
js修改onclick动作的四种方法(推荐)
Aug 18 Javascript
js实现右键自定义菜单
Dec 03 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
Apr 07 Javascript
Angular.JS中的this指向详解
May 17 Javascript
详解微信小程序调起键盘性能优化
Jul 24 Javascript
利用Node.js批量抓取高清妹子图片实例教程
Aug 02 Javascript
vue输入节流,避免实时请求接口的实例代码
Oct 30 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
Aug 08 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的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
Javascript之String对象详解
2016/06/08 Javascript
url传递的参数值中包含&amp;时,url自动截断问题的解决方法
2016/08/02 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
在Django中创建动态视图的教程
2015/07/15 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
python多维数组切片方法
2018/04/13 Python
python绘制热力图heatmap
2020/03/23 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
三个python爬虫项目实例代码
2019/12/28 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
彻底解决Python包下载慢问题
2020/11/15 Python
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
九年级政治教学反思
2014/02/06 职场文书
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
一分钟演讲稿
2014/04/30 职场文书
学风建设演讲稿
2014/09/12 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
借名购房协议书范本
2014/10/06 职场文书
投诉书格式范本
2015/07/02 职场文书
会议简讯范文
2015/07/20 职场文书