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实现图片平滑滚动详解
Mar 22 jQuery
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
jquery获取链接地址和跳转详解(推荐)
Aug 15 jQuery
jQuery实现简单的计时器功能实例分析
Aug 29 jQuery
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
Sep 22 jQuery
jquery ajaxfileupload异步上传插件
Nov 21 jQuery
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
Jan 25 jQuery
jQuery实现仿京东防抖动菜单效果示例
Jul 06 jQuery
学习jQuery中的noConflict()用法
Sep 28 jQuery
AJAX在JQuery中的应用详解
Jan 30 jQuery
jQuery开发仿QQ版音乐播放器
Jul 10 jQuery
jQuery实现简单QQ聊天框
Aug 27 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
PHP判断上传文件类型的解决办法
2015/10/20 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
JS 控件事件小结
2012/10/31 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
2019/09/19 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
python批量同步web服务器代码核心程序
2014/09/01 Python
python单元测试unittest实例详解
2015/05/11 Python
Python模块包中__init__.py文件功能分析
2016/06/14 Python
Python探索之pLSA实现代码
2017/10/25 Python
Python列表推导式与生成器表达式用法示例
2018/02/08 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
日本最大级玩偶手办购物:あみあみ Amiami
2018/04/23 全球购物
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
个人自我评价分享
2013/12/20 职场文书
面试后感谢信
2014/02/01 职场文书
工程质检员岗位职责
2015/04/08 职场文书
2015新教师教学工作总结
2015/07/22 职场文书