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插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 jQuery
jquery仿微信聊天界面
May 06 jQuery
jQuery滑动到底部加载下一页数据的实例代码
May 22 jQuery
jQuery用户头像裁剪插件cropbox.js使用详解
Jun 07 jQuery
jquery与js实现全选功能的区别
Jun 11 jQuery
jQuery实现菜单栏导航效果
Aug 15 jQuery
jQuery 1.9版本以上的浏览器判断方法代码分享
Aug 28 jQuery
jQuery实现IE输入框完成placeholder标签功能的方法
Sep 20 jQuery
JS和JQuery实现雪花飘落效果
Nov 30 jQuery
jquery.param()实现数组或对象的序列化方法
Oct 08 jQuery
jquery检测上传文件大小示例
Apr 26 jQuery
html中两种获取标签内的值的方法
Jun 16 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
php Smarty 字符比较代码
2011/02/27 PHP
php小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
php支付宝接口用法分析
2015/01/04 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
关于php开启错误提示的总结
2019/09/24 PHP
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
Array.prototype 的泛型应用分析
2010/04/30 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
python 实现删除文件或文件夹实例详解
2016/12/04 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
美国宠物商店:Wag.com
2016/10/25 全球购物
爱普生美国官网:Epson美国
2018/11/05 全球购物
事业单位接收函
2014/01/10 职场文书
项目建议书模板
2014/05/12 职场文书
毕业横幅标语
2014/10/08 职场文书
安全责任书
2015/01/29 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android