原生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 相关文章推荐
js简易namespace管理器 实例代码
Jun 21 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
Feb 12 Javascript
Express作者TJ告别Node.js奔向Go
Jul 14 Javascript
javascript去掉代码里面的注释
Jul 24 Javascript
微信小程序 聊天室简单实现
Apr 19 Javascript
angularjs 页面自适应高度的方法
Jan 17 Javascript
vue.js实现二级菜单效果
Oct 19 Javascript
jquery实现聊天机器人
Feb 08 jQuery
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
Aug 25 Javascript
js 实现碰撞检测的示例
Oct 28 Javascript
微信小程序:报错(in promise) MiniProgramError
Oct 30 Javascript
手写Vue2.0 数据劫持的示例
Mar 04 Vue.js
基于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
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
php include加载文件两种方式效率比较
2010/08/08 PHP
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
thinkphp连贯操作实例分析
2014/11/22 PHP
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
裁剪字符串trim()自定义改进版
2013/04/10 Javascript
JS获取各种浏览器窗口大小的方法
2014/01/14 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
React-Native左右联动List的示例代码
2017/09/21 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
利用python将json数据转换为csv格式的方法
2018/03/22 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
python使用递归的方式建立二叉树
2019/07/03 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
Web时代变迁及html5与html4的区别
2016/01/06 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
初中地理教学反思
2014/01/11 职场文书
《记承天寺夜游》教学反思
2014/02/16 职场文书
副总经理岗位职责
2014/03/16 职场文书
行政专员岗位职责范本
2014/08/26 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
结婚主持人致辞
2015/07/28 职场文书
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏