HaikuImagePopup

    @@ -1,30 +1,56 @@ /* - * @title HaikuImagePopup - * @description ハイクの画像リンクをポップアップ表示に変更 + * @title haikuimagepopup + * @description ハイクのimgをオーバーレイでポップアップ表示させる * @include http://h.hatena.ne.jp/* * @license MIT License * @require jquery */ - - $(function(){ + var activeFlag = false; $(".entry-body-content img").live("click",function(){ + + // クリックした画像のファイルパス取得 var imgFilePath = $(this).attr("src"); - var htmlShadowBlock = '<div id="brm-image-overlay-shadow"></div>'; - var htmlOverlayBlock; - htmlOverlayBlock = '<div id="brm-image-overlay"><div id="brm-image-overlay-inner"><img src="' + imgFilePath + '"></div></div>'; + // オーバーレイ用HTML生成 + var htmlShadowBlock = '<div id="brm-image-overlay-shadow"></div>'; + var htmlOverlayBlock = '<div id="brm-image-overlay"><div id="brm-image-overlay-inner"><img src="' + imgFilePath + '"></div></div>'; + // ウィンドウ領域取得 var windowWidth = $(window).width(); var windowHeight = $(window).height(); - var overlayWidth = windowWidth; - var overlayHeight = windowHeight; - - + // HTMLブロックをbody末尾に追加 $("body").append(htmlShadowBlock); $("body").append(htmlOverlayBlock); + + // リサイズ前の画像サイズ取得 + var imgWidth = $("#brm-image-overlay-inner img").width(); + var imgHeight = $("#brm-image-overlay-inner img").height(); + + // オーバーレイサイズの取得 + var overlayWidth; + var overlayHeight; + // width取得 + if(imgWidth > windowWidth - 40){ + // 画像サイズ>ウィンドウサイズ-40pxの場合、オーバーレイサイズをウィンドウサイズ-40pxに指定する + overlayWidth = windowWidth - 40; + } else { + // 画像サイズ <= ウィンドウサイズ-40pxの場合、オーバーレイサイズを画像サイズ+40pxに指定する + overlayWidth = imgWidth + 40; + } + //Height取得 + if(imgHeight > windowHeight - 40){ + // 画像サイズ>ウィンドウサイズ-40pxの場合、オーバーレイサイズをウィンドウサイズ-40pxに指定する + overlayHeight = windowHeight - 40; + } else { + // 画像サイズ <= ウィンドウサイズ-40pxの場合、オーバーレイサイズを画像サイズ+40pxに指定する + overlayHeight = imgHeight + 40; + } + + + // 影のスタイル指定 $("#brm-image-overlay-shadow") .css({ "position": "fixed", @@ -37,46 +63,51 @@ "z-index": "10000" }); - overlayWidth = overlayWidth - 40; - overlayHeight = overlayHeight - 40; + // オーバーレイ本体のスタイル指定 $("#brm-image-overlay") .css({ "position": "fixed", "width": overlayWidth, "height": overlayHeight, - "top": 20, - "left": 20, - "z-index": "10001" + "top": (windowHeight / 2) - (overlayHeight / 2), + "left": (windowWidth / 2) - (overlayWidth / 2), + "z-index": "10001", + "background": "#fff", + "border-radius": 10 }); + + // オーバーレイ中身のスタイル指定 $("#brm-image-overlay-inner") .css({ - "position": "absolute", - "height": "100%", - "width": "100%", - "background": "#fff", - "border-radius": 10 }); + // 生成されたオーバーレイ中身のサイズ指定 var overlayInnerWidth = $("#brm-image-overlay-inner").width(); var overlayInnerHeight = $("#brm-image-overlay-inner").height(); - var imgWidth = $("#brm-image-overlay-inner img").width(); - var imgHeight = $("#brm-image-overlay-inner img").height(); + // 生成されたimgタグの整形 $("#brm-image-overlay-inner img") .css({ - "position": "absolute", - "left": (overlayInnerWidth / 2) - (imgWidth /2), - "top": (overlayInnerHeight / 2) - (imgHeight /2), "max-width": "100%", "max-height": "100%" }); + //ステータスフラグを立てる + activeFlag = true; + return false; }); + if(activeFlag){ + $(window).resize(function(){ + + }); + } + $("#brm-image-overlay-shadow, #brm-image-overlay").live("click",function(){ $("#brm-image-overlay,#brm-image-overlay-shadow").remove(); + activeFlag = false; return false; }); });
  • /*
     * @title haikuimagepopup
     * @description ハイクのimgをオーバーレイでポップアップ表示させる
     * @include http://h.hatena.ne.jp/*
     * @license MIT License
     * @require jquery
     */
    
    $(function(){
      var activeFlag = false;
      $(".entry-body-content img").live("click",function(){
    
        // クリックした画像のファイルパス取得
        var imgFilePath = $(this).attr("src");
    
        // オーバーレイ用HTML生成
        var htmlShadowBlock = '<div id="brm-image-overlay-shadow"></div>';
        var htmlOverlayBlock = '<div id="brm-image-overlay"><div id="brm-image-overlay-inner"><img src="' + imgFilePath + '"></div></div>';
    
        // ウィンドウ領域取得
        var windowWidth = $(window).width();
        var windowHeight = $(window).height();
    
        // HTMLブロックをbody末尾に追加
        $("body").append(htmlShadowBlock);
        $("body").append(htmlOverlayBlock);
    
        // リサイズ前の画像サイズ取得
        var imgWidth = $("#brm-image-overlay-inner img").width();
        var imgHeight = $("#brm-image-overlay-inner img").height();
    
        // オーバーレイサイズの取得
        var overlayWidth;
        var overlayHeight;
        // width取得
        if(imgWidth > windowWidth - 40){
          // 画像サイズ>ウィンドウサイズ-40pxの場合、オーバーレイサイズをウィンドウサイズ-40pxに指定する
          overlayWidth = windowWidth - 40;
        } else {
          // 画像サイズ <= ウィンドウサイズ-40pxの場合、オーバーレイサイズを画像サイズ+40pxに指定する 
          overlayWidth = imgWidth + 40;
        }
        //Height取得
        if(imgHeight > windowHeight - 40){
          // 画像サイズ>ウィンドウサイズ-40pxの場合、オーバーレイサイズをウィンドウサイズ-40pxに指定する
          overlayHeight = windowHeight - 40;
        } else {
          // 画像サイズ <= ウィンドウサイズ-40pxの場合、オーバーレイサイズを画像サイズ+40pxに指定する 
          overlayHeight = imgHeight + 40;
        }
    
    
        // 影のスタイル指定
        $("#brm-image-overlay-shadow")
          .css({
            "position": "fixed",
            "width": "100%",
            "height": "100%",
            "top": "0",
            "left": "0",
            "background": "gray",
            "opacity": "0.5",
            "z-index": "10000"
          });
    
        // オーバーレイ本体のスタイル指定
        $("#brm-image-overlay")
          .css({
            "position": "fixed",
            "width": overlayWidth,
            "height": overlayHeight,
            "top": (windowHeight / 2) - (overlayHeight / 2),
            "left": (windowWidth / 2) - (overlayWidth / 2),
            "z-index": "10001",
            "background": "#fff",
            "border-radius": 10
          });
    
        // オーバーレイ中身のスタイル指定
        $("#brm-image-overlay-inner")
          .css({
          });
    
        // 生成されたオーバーレイ中身のサイズ指定
        var overlayInnerWidth = $("#brm-image-overlay-inner").width();
        var overlayInnerHeight = $("#brm-image-overlay-inner").height();
    
    
        // 生成されたimgタグの整形
        $("#brm-image-overlay-inner img")
          .css({
            "max-width": "100%",
            "max-height": "100%"
          });
    
        //ステータスフラグを立てる
        activeFlag = true;
    
        return false;
      });
    
      if(activeFlag){
        $(window).resize(function(){
    
        });
      }
    
      $("#brm-image-overlay-shadow, #brm-image-overlay").live("click",function(){
        $("#brm-image-overlay,#brm-image-overlay-shadow").remove();
        activeFlag = false;
        return false;
      });
    });
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2014/09/22 01:16:42 - 2014-09-22
  2. 2014/09/22 01:13:09 - 2014-09-22
  3. 2014/09/22 01:01:54 - 2014-09-22
  4. 2014/09/13 03:23:25 - 2014-09-13
  5. 2014/09/13 02:19:12 - 2014-09-13