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源码】
Apr 10 jQuery
jQuery实现锚点向下平滑滚动特效示例
Aug 29 jQuery
jQuery UI 实例讲解 - 日期选择器(Datepicker)
Sep 18 jQuery
jQuery中常用动画效果函数知识点整理
Aug 19 jQuery
基于jquery实现九宫格拼图小游戏
Nov 30 jQuery
jQuery实现的简单日历组件定义与用法示例
Dec 24 jQuery
jquery ui 实现 tab标签功能示例【测试可用】
Jul 25 jQuery
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
jquery 时间戳转日期过程详解
Oct 12 jQuery
jQuery实现消息弹出框效果
Dec 10 jQuery
详解jQuery中的prop()使用方法
Jan 05 jQuery
jQuery 实现扁平式小清新导航
Jul 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
ajax缓存问题解决途径
2006/12/06 PHP
php后台程序与Javascript的两种交互方式
2009/10/25 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
HTML上传控件取消选择
2013/03/06 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
layui 对弹窗 form表单赋值的实现方法
2019/09/04 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
如何将python中的List转化成dictionary
2016/08/15 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
python3.6 如何将list存入txt后再读出list的方法
2019/07/02 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
python如何写try语句
2020/07/14 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
大学生的网络创业计划书
2013/12/26 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
工作年限证明模板
2014/11/01 职场文书
初婚初育证明范本
2014/11/24 职场文书
讲文明倡议书
2015/04/29 职场文书
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android