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实现定时刷新功能代码
May 09 jQuery
jQuery操作之效果详解
May 19 jQuery
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
jQuery获取table表中的td标签(实例讲解)
Jul 28 jQuery
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
jQuery 改变P标签文本值方法
Feb 24 jQuery
jQuery创建及操作xml格式数据示例
May 26 jQuery
使用jquery DataTable和ajax向页面显示数据列表的方法
Aug 09 jQuery
AJAX在JQuery中的应用详解
Jan 30 jQuery
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
Jun 02 jQuery
jQuery实现容器间的元素拖拽功能
Dec 01 jQuery
jQuery实现tab栏切换效果
Dec 22 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
PHP中判断变量为空的几种方法小结
2013/11/12 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
jQuery代码优化 事件委托篇
2011/11/01 Javascript
javascript 构造函数强制调用经验总结
2012/12/02 Javascript
JS cookie中文乱码解决方法
2014/01/28 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
2020/10/29 Javascript
在Python中实现贪婪排名算法的教程
2015/04/17 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
Python如何读取文件中图片格式
2020/01/13 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
计算机专业毕业生推荐信
2013/11/25 职场文书
实习生单位鉴定意见
2013/12/04 职场文书
单方离婚协议书范本2014
2014/10/28 职场文书
护士2014年终工作总结
2014/11/11 职场文书
同乡会致辞
2015/07/30 职场文书
物业保洁员管理制度
2015/08/05 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
Python中文纠错的简单实现
2021/07/07 Python
SQL Server中的游标介绍
2022/05/20 SQL Server