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中使用attr(), prop(), val()获取value的异同
Apr 25 jQuery
JS/jquery实现一个网页内同时调用多个倒计时的方法
Apr 27 jQuery
jQuery开源组件BootstrapValidator使用详解
Jun 29 jQuery
jQuery+koa2实现简单的Ajax请求的示例
Mar 06 jQuery
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
Apr 26 jQuery
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
Jan 09 jQuery
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
Feb 20 jQuery
jquery多级树形下拉菜单的实例代码
Jul 09 jQuery
jquery分页优化操作实例分析
Aug 23 jQuery
jquery实现上传图片功能
Jun 29 jQuery
JQuery基于FormData异步提交数据文件
Sep 01 jQuery
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 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
建立动态的WML站点(一)
2006/10/09 PHP
PHP面向对象分析设计的经验原则
2008/09/20 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
2010/07/09 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
Javascript 面向对象特性
2009/12/28 Javascript
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
JS实现的4种数字千位符格式化方法分享
2015/03/02 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
Python中AND、OR的一个使用小技巧
2015/02/18 Python
python实现指定字符串补全空格的方法
2015/04/30 Python
python线程池threadpool实现篇
2018/04/27 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
详解Python的循环结构知识点
2019/05/20 Python
python cumsum函数的具体使用
2019/07/29 Python
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
高中生班主任评语
2014/04/25 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
工伤私了协议书范本
2014/11/24 职场文书
导游词格式
2015/02/13 职场文书
工伤劳动仲裁代理词
2015/05/25 职场文书
三八节活动简报
2015/07/20 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
virtualenv隔离Python环境的问题解析
2022/06/21 Python