2

どこが間違っているのか誰にも教えてもらえますか... (window).height. 625 は、中央に配置されている Div の高さです...

これは Firefox では機能しますが、IE7 では、ブラウザ ウィンドウのサイズを変更するまでマージントップが設定されません。

テスト サイトはhttp://guylloyd.co.ukです。

どんな考えでも驚くほど高く評価されます!

マーティン

jQuery.noConflict();
jQuery(document).ready(function () {

jQuery(function(){   
var $marginTop = ((jQuery(window).height() - 625) / 2 + 'px');
if(jQuery(window).height() > 625){
jQuery('body').css({'margin-top': $marginTop});   
}
});

jQuery(window).resize(function(){
var $marginTop = ((jQuery(window).height() - 625) / 2 + 'px');
if(jQuery(window).height() > 625){
jQuery('body').css({'margin-top': $marginTop});
}
});

});

4

2 に答える 2

1

そのようにコンテンツをレイアウトするために jquery を使用する必要はありません。単純な css と xhtml で同じことを実現できます。

IE6 と同じ問題で、JavaScript の実行に遅延が発生する可能性があります。タイムアウトと Seth が設計したコードの呼び出しを含めてみてください。

function doResize() {   
    var $marginTop = ((jQuery(window).height() - 625) / 2 + 'px');   
    if(jQuery(window).height() > 625){   
        jQuery('body').css({'margin-top': $marginTop});   
    }   
}  
//when document has been fully loaded
jQuery(document).ready(function()
{
    setTimeout('doResize()', 1 );

}); 
于 2010-02-18T14:20:37.943 に答える
0

実際の質問についてはわかりません。これが、ウィンドウのサイズを変更するまでIE7がマージンを設定しない理由ですが、次のような冗長コードを減らすことを検討してください。

function doResize() {
    var $marginTop = ((jQuery(window).height() - 625) / 2 + 'px');
    if(jQuery(window).height() > 625){
        jQuery('body').css({'margin-top': $marginTop});
    }
}

jQuery.noConflict();
jQuery(document).ready(doResize);
jQuery(window).resize(doResize);

IE に関して言えば、アラート ステートメントをメソッドに追加すると、いつ呼び出されたかがわかります。IE7 は document.ready 関数を実行していませんか? それとも、実行中ですが、何もしていませんか?

于 2010-02-18T14:14:43.350 に答える