0

私は次のコードを持っています:

function c() {
        var h = ($(window).height() - $('#maincontainer').outerHeight()) / 2;
        var w = ($(window).width() - $('#maincontainer').outerWidth()) / 2;

        $('#maincontainer').css('position', 'absolute');
        $('#maincontainer').css('top', h);
        $('#maincontainer').css('left', w);
    }

    $(window).resize(c);
    $(window).load(c);

このresizeイベントは、試したすべてのブラウザーで正しく機能しますが、load常に幅の値8pxを返し、maincontainer画面の左端にdivを配置します。これは、IE8でのみウィンドウの中央にdivを配置して適切に実行され、Chrome22およびFirefox16では失敗します。

編集:うまくいったように見える解決策:

    $(window).ready(c);
    $(window).load(c);
    $(window).resize(c);

また、the body持っている必要がありwidth: 100%ます。

4

1 に答える 1

1

それ以外の:

$(window).resize(c);
$(window).load(c);

行う:

$(function(){
    c();
    $(window).resize(c);
});

何が起こっているのかというと、何かがロードされる前にドキュメントのサイズを要求しているので、(ほとんど)何も得られません。これは、ドキュメントが「準備完了」になるとすぐに実行されるため、より有用な値が得られます。

また、体の幅と高さを100%にし、窓の代わりにそのサイズを使用する必要がある場合もあります。

于 2012-10-18T10:36:12.797 に答える