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 ui sortable拖拽后保存位置
Apr 27 jQuery
jQuery实现简单日期格式化功能示例
Sep 19 jQuery
解决Jquery下拉框数据动态获取的问题
Jan 25 jQuery
jQuery实现checkbox全选功能完整实例
Jul 12 jQuery
jQuery实现的页面弹幕效果【测试可用】
Aug 17 jQuery
jQuery选择器之基本选择器用法实例分析
Feb 19 jQuery
jquery登录的异步验证操作示例
May 09 jQuery
jquery操作checkbox的常用方法总结【附测试源码下载】
Jun 10 jQuery
jQuery实现的记住帐号密码功能完整示例
Aug 03 jQuery
jQuery实现颜色打字机的完整代码
Mar 19 jQuery
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 jQuery
jquery轮播图插件使用方法详解
Jul 31 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线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
php微信开发之关注事件
2018/06/14 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
深入理解Javascript箭头函数中的this
2017/02/13 Javascript
js a标签点击事件
2017/03/30 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
vue超时计算的组件实例代码
2018/07/09 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
基于python的Paxos算法实现
2019/07/03 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
简单的Python人脸识别系统
2020/07/14 Python
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
上课说话检讨书大全
2014/01/22 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
休学证明范本
2015/06/19 职场文书
《称赞》教学反思
2016/02/17 职场文书
MySQL日期时间函数知识汇总
2022/03/17 MySQL
Redis实现订单过期删除的方法步骤
2022/06/05 Redis
Redis过期数据是否会被立马删除
2022/07/23 Redis