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正则表达式在页面验证url网址输入是否正确
Apr 04 jQuery
jQuery手风琴的简单制作
May 12 jQuery
深入研究jQuery图片懒加载 lazyload.js使用方法
Aug 16 jQuery
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
解决jquery的ajax调取后端数据成功却渲染失败的问题
Aug 08 jQuery
使用jquery DataTable和ajax向页面显示数据列表的方法
Aug 09 jQuery
jQuery实现表格的增、删、改操作示例
Jan 27 jQuery
jQuery实现的五星点评功能【案例】
Feb 18 jQuery
jQuery实现checkbox全选、反选及删除等操作的方法详解
Aug 02 jQuery
jQuery实现验证用户登录
Dec 10 jQuery
jQuery实现简易聊天框
Feb 08 jQuery
jquery实现广告上下滚动效果
Mar 04 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之数据库操作详解及乱码解决!
2007/01/02 PHP
那些年一起学习的PHP(二)
2012/03/21 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
PHP实现正则匹配所有括号中的内容
2018/06/22 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
vue写一个组件
2018/04/09 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
详解K-means算法在Python中的实现
2017/12/05 Python
python中reader的next用法
2018/07/24 Python
对python的输出和输出格式详解
2018/12/08 Python
django-allauth入门学习和使用详解
2019/07/03 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
工业学校毕业生自荐信范文
2014/01/03 职场文书
群众路线批评与自我批评
2014/02/06 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
继承公证书格式
2015/01/26 职场文书
三八妇女节慰问信
2015/02/14 职场文书
电影红河谷观后感
2015/06/11 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书