jQuery插件之文章图片弹出放大效果

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

$.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);

参考地址:http://barretlee.com/blog/2015/09/19/jquery-plugin-for-alert-img/

时间: 2024-10-06 00:56:36

jQuery插件之文章图片弹出放大效果的相关文章

改善用户体验之wordpress添加图片弹出层效果 (插件 FancyBox)

下面说说在改善用户体验之wordpress添加图片弹出层效果.效果图如下: 像这篇文章如何在百度搜索结果中显示网站站点logo? 文章内有添加图片,没加插件之前用户点击图片时,是直接_black打开新窗口到 图片地址,非常不友好,很不和谐!添加wordpress添加图片弹出层效果之后如上所示效果.逼格瞬间提高! 打造这个效果的这款插件名称是FancyBox for WordPress

前端jquery实现点击图片弹出大图层(且滚动鼠标滑轮图片缩放)

<img src="{$vo.photo}" height="50px" onclick="showdiv({$i});"> <div id="bg"></div> <div id="show{$i}" class="show" style="display:none;"> <img src="{$vo.

jQuery点击图片弹出放大特效下载

效果体验:http://hovertree.com/texiao/jqimg/1/ 效果图: 代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>美女图片浏览特效 - 何问起</title> <link href=&q

用 zoom.js 给博客园中博文的图片添加单击时弹出放大效果

1.写在前面 由于博客园本身不提供的上传图片后提供单击图片放大的功能,但是我们看到了有些博文却拥有放大图片的功能,自己也想拥有此项功能怎么办呢?博客园的好处就是提供了自定义功能了,具体是怎么实现的呢? 首先我们打开我的博客——管理——设置——申请到JS权限. 拿到权限后,接着去github下载zoom.js功能文件...... 下载解压取出zoom.js和zoom.css文件,将俩个文件上传到——我的博客——管理——文件:如图 点击进入文件,复制URL,如:https://blog-static

Bootstrap实现图片弹出放大

前台HTML: <td><center><img style="height: 100px;width: 100px;" onmouseover="this.style.cursor='pointer';this.style.cursor='hand'" onmouseout="this.style.cursor='default'" src="<?php echo $v['pic_detail'];

JQ——图片弹出效果(定时弹出图片)、toggle

1.使用 hide() 和 show() 方法来隐藏和显示 HTML 元素(这里是img) <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>定时弹出图片——图片弹出的效果</title> <script type="text/javascript" src="../js/jquery-1.8.3.js&quo

3种jQuery弹出大图效果

本实例用到了jquery.imgbox.pack.js库.直接看代码: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 5 <meta name="keywords" content=&

jquery实现点击按钮弹出层和点击空白处隐藏层

昨天做项目遇到一个问题,和大家分享下,jquery实现点击按钮弹出层和点击空白处隐藏层的问题 if($('.autoBtn').length){                $('.autoBtn').find('.assess').unbind().bind('click',function(event){                    //取消事件冒泡                      event.stopPropagation(); if($('.abtnBox').is

jQuery实现的关闭页面弹出提示实例代码

jQuery实现的关闭页面弹出提示实例代码:当要关闭当前页面的时候,如果能够弹出一个提示那算是一个相当人性化的举措,因为可以防止误操作,当然也会因人而异,因为有些浏览者会感觉比较麻烦,不管怎么说,确实有这样的需求,下面就分享一下具有这个功能的代码.代码实例如下: $(window).bind('beforeunload',function(){ return '确定要离开当前页面吗'; }); 以上代码当在刷新或者关闭浏览器页面的时候会弹出提示.浏览器兼容性:1.谷歌浏览器效果良好.2.火狐浏览