jquery实现放大镜简洁代码(推荐)


Posted in jQuery onJune 08, 2017

简介

网上有许多放大镜的jquery的插件,但是用着不是那么得心应手,现在一页代码实现一个放大镜功能,如果需要附加的功能可以手动修改,原理都在注释里

jquery实现放大镜简洁代码(推荐)

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>放大镜效果</title>
  <style type="text/css">
    * {
      margin: 0;
      padding: 0;
    }
    .small {
      margin-left:40px;
      margin-top:50px;
      width: 150px;
      height: 150px;
      /*border: 2px solid yellow;*/
    }
     .small>img {
      width: 150px;
      height: 150px;
    } 
    .slider {
      width: 50px;
      height: 50px;
      background: rgba(180,180,135,0.3);
      position: absolute;
      display: none;
    }
    #big {
      //设置为固定大小;
      width: 200px;
      height: 200px;
      position: absolute;
      /* border: 2px solid red;*/
      overflow: hidden;
      display: none;
    }
  </style>
</head>
<body>
<!--缩略图-->
<div class="small">
  <img src="thumb.jpg" />
  <!--放大镜,在原图不上的小块-->
  <div class="slider"></div>
</div>
<!--放大镜区域,大图,设置为none隐藏-->
<div id="big">
  <img id="bigImg" src="big.jpg" />
</div>
even.clientX<input type="text" value="0" id="test" /><br/>
even.clientY<input type="text" value="0" id="test1" />
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript">
  var small = $(".small")[0];
  var slider = $(".slider")[0];
  var big = document.getElementById("big");//试一试js获取
  var bigImg = document.getElementById("bigImg");
//让slider跟随鼠标移动.给小的方块绑定事件
  $(".small").mousemove(function(e) {
    var even = e || event; //兼容火狐浏览器
    var x = even.clientX - small.offsetLeft - slider.offsetWidth/2;
    var y = even.clientY - small.offsetTop - slider.offsetHeight/2;
//测试even.clientX和even.clientY
    $("#test").val(even.clientX);
    $("#test1").val(even.clientY);
//水平方向的最大值
    var maxX = small.clientWidth - slider.clientWidth;
//竖直方向的最大值
    var maxY = small.clientHeight - slider.clientHeight;
    if(x<0){
//相当于超出左侧,超出左侧时,拉回
      x=0;
    }
//超出右侧时拉回
    if(x>maxX){
      x = maxX;
    }
//顶部超出
    if(y<0){
      y=0;
    }
//底部超出
    if(y>maxY){
      y = maxY;
    }
    slider.style.top = (y+small.offsetTop) + "px";
    slider.style.left = (x+small.offsetLeft) + "px";
//放大的图片的主要实现代码:比例计算, big.scrollLeft是id=big的div中下方滚轴的位置
//由于id=big的div设置成固定大小,而图片又非常大,所以这个div就像个放大镜一样在大图上晃
//比例计算很简单,鼠标在缩略图的位置与缩略图宽高比=鼠标在大图位置与大图宽高比,现在未知数是大图鼠标的位置
    big.scrollLeft = x/maxX * (bigImg.clientWidth - big.clientWidth) ;
    big.scrollTop = y/maxY * (bigImg.clientHeight -big.clientHeight) ;
  });
//鼠标移入事件
  $(".small").mouseenter(function(){
//鼠标移入到缩略图时候实现,上面出现的小的方块
    $(".slider").css("display","block");
    $("#big").css("top",small.offsetTop+"px");
//隐藏的大图=获取左图的左边位置+宽度+10(隔开点缝隙与缩略图)+px
    big.style.left = small.offsetLeft + small.offsetWidth + 10 + "px";
//右侧的大图区域显示出来图片
    $("#big").css("display","block");
  });
//移除事件
//添加鼠标移出事件,鼠标移出缩略图的时候
  $(".small").mouseleave(function(){
    $(".slider").css("display","none");
    $("#big").css("display","none");
  }); 
</script>
</body>
</html>

下载demo

https://github.com/mytheshow/...

链接: http://pan.baidu.com/s/1nvMBgb3

以上所述是小编给大家介绍的jquery实现放大镜简洁代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

jQuery 相关文章推荐
jQuery Jsonp跨域模拟搜索引擎
Jun 17 jQuery
jquery基于layui实现二级联动下拉选择(省份城市选择)
Jun 20 jQuery
jQuery中.attr()和.data()的区别分析
Sep 03 jQuery
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
jquery ztree实现右键收藏功能
Nov 20 jQuery
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
Jan 25 jQuery
jQuery实现碰到边缘反弹的动画效果
Feb 24 jQuery
JQuery Ajax执行跨域请求数据的解决方案
Dec 10 jQuery
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
Dec 10 jQuery
jQuery事件多次绑定与解绑问题实例分析
Feb 19 jQuery
JQuery实现折叠式菜单的详细代码
Jun 03 jQuery
jQuery实现放大镜案例
Oct 19 jQuery
jQuery+ajax实现局部刷新的两种方法
Jun 08 #jQuery
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 #jQuery
jquery dataTable 后台加载数据并分页实例代码
Jun 07 #jQuery
jQuery用户头像裁剪插件cropbox.js使用详解
Jun 07 #jQuery
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 #jQuery
jquery仿京东商品放大浏览页面
Jun 06 #jQuery
jquery实现图片放大点击切换
Jun 06 #jQuery
You might like
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
19个Android常用工具类汇总
2014/12/30 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
php的常量和变量实例详解
2017/06/27 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
js与jquery回车提交的方法
2015/02/03 Javascript
javascript实现拖放效果
2015/12/16 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
Python切片知识解析
2016/03/06 Python
python非递归全排列实现方法
2017/04/10 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
2017/10/11 Python
python如何读写csv数据
2018/03/21 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
python移位运算的实现
2019/07/15 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
html5 CSS过度-webkit-transition使用介绍
2013/07/02 HTML / CSS
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
师范生个人推荐信
2013/11/29 职场文书
中学生英语演讲稿
2014/04/26 职场文书
公司酒会致辞
2015/07/30 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
JavaScript 定时器详情
2021/11/11 Javascript
php解析非标准json、非规范json的方式实例
2022/05/10 PHP