原生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 相关文章推荐
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
Nov 30 Javascript
jQuery操作input值的各种方法总结
Nov 21 Javascript
js检测输入内容全为空格的方法
May 03 Javascript
JS控制输入框内字符串长度
May 21 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
Jan 27 Javascript
javascript中eval解析JSON字符串
Feb 27 Javascript
通过sails和阿里大于实现短信验证
Jan 04 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
Apr 16 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
Jun 29 Javascript
深入Vue-Router路由嵌套理解
Aug 13 Javascript
JS正则表达式验证端口范围(0-65535)
Jan 06 Javascript
vue-router 控制路由权限的实现
Sep 24 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多文件上传类实例
2015/03/07 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
2016/03/17 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
Prototype使用指南之ajax
2007/01/10 Javascript
学习ExtJS border布局
2009/10/08 Javascript
jQuery实现的类flash菜单效果代码
2010/05/17 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
使用jquery解析XML的方法
2014/09/05 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
js实现无缝滚动图
2017/02/22 Javascript
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
Python读取图片属性信息的实现方法
2016/09/11 Python
python使用tkinter实现简单计算器
2018/01/30 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
什么是TCP/IP
2014/07/27 面试题
2014年宣传部个人工作总结
2014/12/06 职场文书
网络妈妈观后感
2015/06/08 职场文书
中学教代会开幕词
2016/03/04 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
Python实现拼音转换
2021/06/07 Python
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python