jQuery实现文章图片弹出放大效果


Posted in jQuery onApril 06, 2017

首先先搭写一个基本的格式:

$.fn.popImg = function() {
  //your code goes here
}

然后用自调用匿名函数包裹你的代码,将系统变量以变量形式传递到插件内部,如下:

;(function($,window,document,undefined){
  $.fn.popImg = function() {
   //your code goes here
  }
})(jQuery,window,document);

那么接下来我们就在里面实现点击文章图片弹出该图片并放大的效果。

整体代码如下:

;(function($,window,document,undefined){
 $.fn.popImg = function(){

   //创建弹出层
   var $layer = $("<div>").css({
    position:'fixed',
    left:0,
    right:0,
    top:0,
    bottom:0,
    width:'100%',
    height:'100%',
    zIndex:9999999,
    display:'none',
    background: "#000",
    opacity:'0.6'
   });

   //复制点击的图片,获得图片的宽高以及位置
   var cloneImg = function($targetImg){
     var cloneW = $targetImg.width(),
       cloneH = $targetImg.height(),
       left = $targetImg.offset().left,
       top = $targetImg.offset().top;

     return $targetImg.clone().css({
       position:'fixed',
       width:cloneW,
       height:cloneH,
       left:left,
       top:top,
       zIndex:10000000
     });
   };

   //让复制的图片居中显示
   var centerImg = function($cloneImg){
     var dW = $(window).width();
     var dH = $(window).height();
     $cloneImg.css('cursor','zoom-out').attr('clone-bigImg',true);
     var img = new Image();
     img.onload = function(){
      $cloneImg.stop().animate({
         width: this.width,
        height: this.height,
        left: (dW - this.width) / 2,
        top: (dH - this.height) / 2
      },300);
     }
     img.src = $cloneImg.attr('src');
   };

   this.each(function(){
     $(this).css('cursor','zoom-in').on('click',function(){
       var $body = $("body");
       $layer.appendTo($body);
       $layer.fadeIn(300);
       var $c = cloneImg($(this));
       $c.appendTo($body);
       centerImg($c);
     });
   });

  var timer = null;
  $(window).on("resize", function(){
   $("img[clone-bigImg]").each(function(){
    var $this = $(this);
    timer && clearTimeout(timer);
    timer = setTimeout(function(){
     centerImg($this);
    }, 10);
   });
  });

  $(window).on("click keydown", function(evt){
   if(evt.type == "keydown" && evt.keyCode === 27) {
    $layer.fadeOut(300);
    $("img[clone-bigImg]").remove();
   }
   var $this = $(evt.target);
   if($this.attr("clone-bigImg")){
    $layer.fadeOut(300);
    $("img[clone-bigImg]").remove();
   }
  });
 }
})(jQuery,window,document);

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

jQuery 相关文章推荐
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
Mar 23 jQuery
jquery中关于bind()方法的使用技巧分享
Mar 30 jQuery
jQuery树插件zTree使用方法详解
May 02 jQuery
jquery replace方法去空格
May 08 jQuery
使用jQuery实现简单的tab框实例
Aug 22 jQuery
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
jQuery插件jsonview展示json数据
May 26 jQuery
jQuery 导航自动跟随滚动的实现代码
May 30 jQuery
jQuery基于闭包实现的显示与隐藏div功能示例
Jun 09 jQuery
jQuery实现网页拼图游戏
Apr 22 jQuery
jQuery弹框插件使用方法详解
May 26 jQuery
JQuery通过键盘控制键盘按下与松开触发事件
Aug 07 jQuery
jQuery自定义图片上传插件实例代码
Apr 04 #jQuery
jQuery使用unlock.js插件实现滑动解锁
Apr 04 #jQuery
利用jquery正则表达式在页面验证url网址输入是否正确
Apr 04 #jQuery
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
Apr 04 #jQuery
使用jQuery卸载全部事件的思路详解
Apr 03 #jQuery
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
Apr 03 #jQuery
基于JQuery和原生JavaScript实现网页定位导航特效
Apr 03 #jQuery
You might like
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
jQuery生成asp.net服务器控件的代码
2010/02/04 Javascript
Javascript动态绑定事件的简单实现代码
2010/12/25 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
jQuery简单实现日历的方法
2015/05/04 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
[02:20]2014DOTA2西雅图邀请赛 MVP外卡赛首胜采访
2014/07/09 DOTA
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
python操作文件的参数整理
2019/06/11 Python
python程序变成软件的实操方法
2019/06/24 Python
python列表推导式操作解析
2019/11/26 Python
Django之form组件自动校验数据实现
2020/01/14 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
Django自带的用户验证系统实现
2020/12/18 Python
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
如何高效率的查找一个月以内的数据
2012/04/15 面试题
企业法人授权委托书
2014/04/03 职场文书
2015年度物流工作总结
2015/04/30 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
监守自盗观后感
2015/06/10 职场文书
初三毕业感言
2015/07/31 职场文书
超市主管竞聘书
2015/09/15 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书