2011-11-21 11 views
5

DÜZENİ benim sayfa için nispeten basit bir yapıya sahipIE7'de kesinlikle konumlandırılmış bir div nasıl ortalanır?

İÇİN bağlam temin GÜNCELLEME. Sayfa, her ikisi de kesinlikle konumlandırılmış iki divdan oluşmaktadır. Biri diğerinin ortasında.

#protocol_index_body_wrapper { 
    background: url("/images/stripe.png") repeat scroll 0 0 transparent; 
    position: absolute; 
    top: 120px; 
    left: 0px; 
    right: 0px; 
    bottom: 10px; 
} 
#protocol_index_body { 
    width: 960px; 
    margin: 0 auto; 
    position: absolute; 
    top: 0; 
    left: 0; 
    right: 0; 
    bottom: 0; 

} 

beklenen davranış, yukarıdaki resimde görüldüğü: karşılık gelen CSS içeriyor enter image description here

<div id="protocol_index_body_wrapper"> 
    <div id="protocol_index_body"> 
    </div> 
</div> 

. Bu davranış IE8, Firefox ve Chrome'da bulunur. Ancak, IE7'de ortalanması gereken div sol tarafa doğru akıyor. Herhangi bir fikir?

veya JS ile sargıya

+0

deneyin 'text-align: eklenmesini merkezi;' # protocol_index_body' 'üzere –

+0

Hayır vermedi bir etkisi olmak. –

+0

Body_wrapper div'de% 100 genişlik ayarlamayı deneyin. –

cevap

-1

text-align:center veya <div align=center> (çirkin, biliyorum, ama işleri):

document.getElementById("protocol_index_body_wrapper").style.marginRight = (document.body.clientWidth - 50)/2_+"px" 

eserler sadece IE6 + 'da.

+0

IE6 hatası için bir düzeltme olduğuna inanıyorum ... –

4

bu deneyin:

#protocol_index_body { 
    width: 50px; 
    margin: 0 auto 0 -25px; 
    position: absolute; 
    top: 0; 
    left: 50%; 
    right: 0; 
    bottom: 0; 
    background-color: red; 
} 

Ya da ...

#protocol_index_body { 
    width: 50px; 
    margin: 0 auto 0 50%; 
    position: absolute; 
    top: 0; 
    left: -25px; 
    right: 0; 
    bottom: 0; 
    background-color: red; 
} 
+0

Yalnızca sabit bir kenar boşluğu kullandığınız için çalışır. Boyutu ne olursa olsun ekranın ortasında kalmak gerekiyor. –

0

Eğer çocuğu belirlerken, biraz aptalca olurdu bir sıvı genişliğe (olması üst div gerekmedikçe div'un genişliği), neden sadece ebeveyn div genişliğini ayarlayıp margin:0 auto ekleyelim?

+0

Üst div, alt öğedeki tam genişlikte bir arka plandır. –

0

Tamam onunla etrafında oynanan ve bu FF özdeş çalışır Opera ve IE7:

#protocol_index_body_wrapper { 
    background-color:black; 
    padding: 0 0 20px 0; 
    position: absolute; 
    top: 120px; 
    left: 0px; 
    right: 0px; 
    bottom: 10px; 
    text-align: center; 
    width: 100%; 
    height: 100%; 
} 
#protocol_index_body { 
    width: 50px; 
    margin: 0 auto; 
    background-color: red; 
    height: 100%; 
} 
+0

Ayarlanan yükseklik ve genişlik, ekranın düzeniyle karışır. Güncellenmiş orijinal gönderiye bakın. –

0
autoCenterAlign = function() { 

    var bodyWidth = $("body").innerWidth(); 
    var protocolWidth = $("#protocol_index_body").innerWidth(); 
    if(protocolWidth < bodyWidth) { 

     $("#protocol_index_body").css("left",((bodyWidth-protocolWidth)/2)+"px"); 

    } 

} 

window.onload = autoCenterAlign; 
window.onresize = autoCenterAlign; 
jQuery(window).load(function() { 

    autoCenterAlign() 

}); 
İlgili konular