8

jquery blockuiを使用していますが、カバーされている div が非常に長いため、読み込みメッセージが画面外に表示されます。

とにかく、スクロールダウンせずにメッセージを見ることができるように、jquery blockui 読み込みメッセージを表示画面の中央に垂直に配置することはできますか?

4

7 に答える 7

10

これが明確な答えです。

この関数を作成します。

$.fn.center = 関数 () {
    this.css("位置","絶対");
    this.css("top", ($(window).height() - this.height()) / 2+$(window).scrollTop() + "px");
    this.css("左", ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px");
    これを返します。
}

blockUI を呼び出した後、次のようにダイアログ ウィンドウを中央に配置します。

$('.blockUI.blockMsg').center();
于 2012-12-03T17:46:10.080 に答える
6

画面の中央に簡単に配置:

$.blockUI({
    message: myMessage,
    centerY: false,
    centerX: false,
    css:{
        position: 'fixed',
        margin: 'auto'
    }
});
于 2015-11-19T21:26:15.313 に答える
1

blockUIデフォルトでは、画面の中央に表示されます。そして、ページをスクロールし続けても中央に表示されると思います。

ただし、を呼び出すときに以下のプロパティを設定できますblockUI

centerX: true
centerY: true
于 2012-02-05T02:57:10.580 に答える
1

しかし、本当にdivをカバーする必要がありますか? おそらく、ページ全体をブロックする方が良いオプションでしょうか?

2 つの異なるアプローチを次に示します。

1) ページ全体をブロックする

この場合、追加の機能は必要なく、メッセージは常に中央にあります。

$.blockUI({});

2) 特定の HTML 要素をブロックする

ただし、この要素のサイズが非常に長い場合は、追加の作業を行う必要があります。まずはメソッド宣言

$.fn.center = function () {
    this.css("position","absolute");
    this.css("top", ($(window).height() - this.height()) / 2+$(window).scrollTop() + "px");
    this.css("left", ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px");
    return this;
}

その後

$('.very-long-container').block({});

$('.blockUI.blockMsg').center();

ここで両方のオプションを示す JS Fiddle デモ例

于 2015-12-10T22:20:34.290 に答える
1

css を使用して blockUI を中央に配置します。これは、水平方向と垂直方向の両方で機能します。
注: これを使用して、blockUI からデフォルト スタイルを削除することをお勧めし$.blockUI.defaults.css = {};
ます。

.blockUI
{
    position: fixed;
    top: 50%; 
    left: 50%;
    margin-right: -50%;
    transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);   /* IE 9 */
    -webkit-transform: translate(-50%, -50%);   /* Chrome, Safari, Opera */
}

于 2014-12-17T00:54:59.833 に答える
0

これにより、ウィンドウのサイズを変更してもメッセージが中央に配置されます。

$.blockUI({ 
         css: { 
                width: message_width + "px",
                height: message_height + "px",
                top: '50%',
                left: '50%',
                margin: (-message_height / 2) + 'px 0 0 '+ (-message_width/2) + 'px'
         },
         message: messageText
        });

ページ全体をブロックしている場合は機能せず、要素のブロックにのみ影響しますcenterXcenterY

于 2012-12-23T17:10:52.013 に答える
-1

この jquery プラグインのプラグインを作成します。もっと完璧に。

高さの中心を得る方法に注意してください。

/**
     * lijg によって追加されました。
     * 参照: http://forum.jquery.com/topic/blockui-centering-the-dialog-window
     */
    (関数(){
      function cp_props(inSrcObj, inDestObj, inOverride) {
        if (inDestObj == null) {
          inSrcObj を返します。
        }
        var プロップ;
        for (inSrcObj のプロップ) {
          if (inOverride || !inDestObj[prop]) {//まず、上書きできるかどうかを判断します。true は計算後の値であり、false は計算後の値です。
            inDestObj[prop] = inSrcObj[prop];
          }
        }
        inDestObj を返します。
      }

      関数_debug_info(コンテナ、目的){
        console.info("$(window).height():" + $(window).height() + ", $(window).width():" + $(window).width());
        console.info("$(window).scrollTop():" + $(window).scrollTop() + ", $(window).scrollLeft():" + $(window).scrollLeft());
        console.info("container.height():" + container.height() + ", container.width():" + container.width());
      }

      関数 center_of_dom(コンテナ、目的){
        //_debug_info(コンテナ、目的);
        container.css("位置", "絶対");
        container.css("width", aim.width() + "px");
        container.css("height", aim.height() + "px");
        container.css("top", ( $(window).height() - container.height() ) / 2 + $(window).scrollTop() + "px");
        container.css("left", ( $(window).width() - container.width() ) / 2 + $(window).scrollLeft() + "px");
      }
      関数center_of_x(コンテナ、目的){
        //_debug_info(コンテナ、目的);
        container.css("位置", "絶対");
        container.css("width", aim.width() + "px");
        container.css("left", ( $(window).width() - container.width() ) / 2 + $(window).scrollLeft() + "px");
      }
      関数center_of_y(コンテナ、目的){
        //_debug_info(コンテナ、目的);
        container.css("位置", "絶対");
        container.css("height", aim.height() + "px");
        container.css("top", ( $(window).height() - container.height() ) / 2 + $(window).scrollTop() + "px");
      }

      $._blockUI = $.blockUI;
      $.blockUI = function(opts){
        if(! opts.onOverlayClick){
          opts.onOverlayClick = $.unblockUI;
        }

        $._blockUI(opts);//blockUI を呼び出す

        var コンテナー = $('.blockUI.blockMsg');
        var 目的 = opts.message;
        if(opts.auto_center){
          center_of_dom(コンテナ, 狙い);//中央揃え
          //サイズ変更時に中央揃え
          $(window).resize(関数() {
            center_of_dom(コンテナ、目的);
          });
        }else if(opts.auto_center_x){
          center_of_x(コンテナ, 狙い);//中央揃え
          //サイズ変更時に中央揃え
          $(window).resize(関数() {
            center_of_x(コンテナ、目的);
          });
        }else if(opts.auto_center_y){
          center_of_y(コンテナ, 狙い);//中央揃え
          //サイズ変更時に中央揃え
          $(window).resize(関数() {
            center_of_y(コンテナ、目的);
          });
        }

      };
      cp_props($._blockUI, $.blockUI, true);//cp プロパティ

      //その他のメソッド
      $.blockUI.center_of_dom = center_of_dom;

    })();


于 2013-10-29T14:19:36.797 に答える