js放大镜放大购物图片效果


Posted in Javascript onJanuary 18, 2017

图片放大镜效果,供大家参考,具体内容如下

一难点:不让黄盒子出界

二难点:让大盒子相应移动(比例)

<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>我的放大镜</title>
 <style>
  *{
   margin: 0;
   padding: 0;
  }
  .box{
   margin: 100px;
   position: relative;
  }
  .small{
   width: 350px;
   height: 350px;
   border: 1px solid #999;
   position: relative;
  }
  .select{
   display: none;
   width: 100px;
   height: 100px;
   background: rgba(255,255,0,0.4);
   position: absolute;
   left: 0;
   top: 0;
   cursor: move;

  }
  .big{
   display: none;
   position: absolute;
   left: 360px;
   top: 0;
   width: 450px;
   height: 450px;
   border: 1px solid #ccc;
   overflow: hidden;
  }
  .big img{
   position: absolute;
   left: 0;
   top: 0;
  }
 </style> 
</head>
<body>
 <div class="box">
  <div class="small" id="smallbox">
   <img src="images/001.jpg" alt="">
   <div class="select" id="mask" style="display:none;"></div>
  </div>

  <div class="big" id="bigbox">
   <img src="images/0001.jpg" alt="">
  </div>
 </div>

 <script> 
  var smallbox = document.getElementById('smallbox');
  var bigbox = document.getElementById('bigbox');
  var mask = document.getElementById('mask');
  var bigImg = bigbox.children[0];
  smallbox.onmouseover = function(){
   mask.style.display = "block";
   bigbox.style.display = "block";
  }
  smallbox.onmouseout = function(){
   mask.style.display = "none";
   bigbox.style.display = "none";
  }

  smallbox.onmousemove = function(event){
   var event = event || window.event;

   var x = event.clientX - this.offsetParent.offsetLeft - mask.offsetWidth/2;
   var y = event.clientY - this.offsetParent.offsetTop - mask.offsetHeight/2;
   //不让黄盒子出界
   if(x < 0){
    x = 0;
   }else if(x > smallbox.offsetWidth - mask.offsetWidth){
    x = smallbox.offsetWidth - mask.offsetWidth;
   }

   if(y<0) {
    y = 0;
   }else if(y > smallbox.offsetHeight - mask.offsetHeight){
     y = smallbox.offsetHeight - mask.offsetHeight;
   }
   mask.style.left = x + "px";
   mask.style.top = y + "px";

   bigImg.style.left = -x/smallbox.offsetWidth * bigbox.offsetWidth + "px"; //注意是-x
   bigImg.style.top = -y/smallbox.offsetHeight * bigbox.offsetHeight + "px";
  }
 </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js获取当前select 元素值的代码
Apr 19 Javascript
javascript中的继承实例代码
Apr 27 Javascript
jquery时间下拉框小例子
Apr 15 Javascript
window.opener用法和用途实例介绍
Aug 19 Javascript
JavaScript判断FileUpload控件上传文件类型
Sep 28 Javascript
AngularJS 模块详解及简单实例
Jul 28 Javascript
vuex实现简易计数器
Oct 27 Javascript
vue文件运行的方法教学
Feb 12 Javascript
JavaScript或jQuery 获取option value值方法解析
May 12 jQuery
VUE-ElementUI 自定义Loading图操作
Nov 11 Javascript
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
如何用JavaScript实现一个数组惰性求值库
May 05 Javascript
详解vue 中使用 AJAX获取数据的方法
Jan 18 #Javascript
easyui 中的datagrid跨页勾选问题的实现方法
Jan 18 #Javascript
JavaScript日期对象(Date)基本用法示例
Jan 18 #Javascript
jQuery中的一些小技巧
Jan 18 #Javascript
AngularJS Select(选择框)使用详解
Jan 18 #Javascript
基于JavaScript实现屏幕滚动效果
Jan 18 #Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
Jan 18 #Javascript
You might like
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
2017/06/19 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
基于JQuery的多标签实现代码
2012/09/19 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
2014/02/23 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
2019/03/11 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
python实现解数独程序代码
2017/04/12 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
python实现大文件分割与合并
2019/07/22 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
党员干部反四风对照检查材料思想汇报
2014/09/14 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
入党积极分子个人总结
2015/03/02 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
JavaScript的function函数详细介绍
2021/11/20 Javascript
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers