原生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 相关文章推荐
JqGrid web打印实现代码
May 31 Javascript
使用js画图之圆、弧、扇形
Jan 12 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
Mar 29 Javascript
AngularJS入门之动画
Jul 27 Javascript
JS实现的样式切换功能tableCSS实例
Dec 30 Javascript
详解Angular2 关于*ngFor 嵌套循环
May 22 Javascript
浅析JS中常用类型转换及运算符表达式
Jul 23 Javascript
vue用addRoutes实现动态路由的示例
Sep 15 Javascript
利用HBuilder打包前端开发webapp为apk的方法
Nov 13 Javascript
微信小程序button组件使用详解
Jan 31 Javascript
当vue路由变化时,改变导航栏的样式方法
Aug 22 Javascript
JS实现多功能计算器
Oct 28 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
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
探讨php中header的用法详解
2013/06/07 PHP
php之readdir函数用法实例
2014/11/13 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
让人期待的2011年度最佳 jQuery 插件分享
2012/03/16 Javascript
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
jQuery简单实现图片预加载
2015/04/20 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
Python中文件遍历的两种方法
2014/06/16 Python
Python3字符串学习教程
2015/08/20 Python
使用Python对MySQL数据操作
2017/04/06 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
python实现泊松图像融合
2018/07/26 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
Python request使用方法及问题总结
2020/04/26 Python
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
爱他美官方海外旗舰店:Aptamil奶粉
2017/12/22 全球购物
购买一个高级域名:BuyDomains
2018/03/11 全球购物
企业内部培训方案
2014/02/04 职场文书
生日宴会主持词
2014/03/20 职场文书
继承公证书
2014/04/09 职场文书
保证书格式范文
2014/04/28 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL