محاذاة رأسيا ديس باستخدام jQuery لتعيين الهامش أعلى
-
21-09-2019 - |
سؤال
هل يمكن لأي شخص أن يخبرني أين أخطأ ... أنا أستخدم ما يلي لمحاذاة Div رأسيًا عن طريق ضبط الهامش ، باستخدام (النافذة). 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});
}
});
});
المحلول
لا تحتاج حقًا إلى استخدام jQuery لوضع المحتوى بهذه الطريقة ، يمكن أن يحقق CSS البسيط و XHTML نفس الشيء.
يمكن أن تكون مشكلة كما في IE6 والتي تسبب تأخيرًا في JavaScript التي تم تنفيذها ، حاول ، بما في ذلك وقتًا طويلاً ومكالمة إلى رمز Seth الذي صممه 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 );
});
نصائح أخرى
لست متأكدًا من سؤالك الفعلي ، ولهذا السبب لا يقوم 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 لا تنفذ الدالة المستند. أم أنها تنفذ ، ولكن لا تفعل أي شيء؟