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 相关文章推荐
一个简单的JavaScript 日期计算算法
Sep 11 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
Dec 20 Javascript
javascript淡入淡出效果的实现思路
Mar 31 Javascript
js网页中的(运行代码)功能实现思路
Feb 04 Javascript
如何使用jquery动态加载js,css文件实现代码
Apr 03 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
Jul 10 Javascript
JavaScript获取/更改文本框的值的实例代码
Aug 02 Javascript
js的hasownproperty使用示例
Mar 02 Javascript
jQuery产品间断向下滚动效果核心代码
May 08 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
Jun 24 Javascript
jquery使整个div区域可以点击的方法
Jun 24 Javascript
详解封装基础的angular4的request请求方法
Jun 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
php&amp;java(一)
2006/10/09 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
2016/01/08 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
JS 自动安装exe程序
2008/11/30 Javascript
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
python队列原理及实现方法示例
2019/11/27 Python
Python中base64与xml取值结合问题
2019/12/22 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
J2EE面试题
2016/03/14 面试题
秋季运动会表扬稿
2014/01/16 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
工程技术员岗位职责
2014/03/02 职场文书
给校长的建议书600字
2014/05/15 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
一行代码python实现文件共享服务器
2021/04/22 Python
MySQL的索引你了解吗
2022/03/13 MySQL