divs merkezleme gerektiği gibi çalışmıyor

3 Cevap php

Ben çözümler için etrafa, ve sık sık tavsiye edilir ne uygulamak için çalıştı, ama ben yatay merkezine başka bir div içinde bir div yönetmek değilim edilmiştir.

Benim CMS ile ben sayfanın altına doğru dört bilgi blokları kadar göstermek istiyorum. Yani, iki konteyner divlere içinde sıfır ile dört divs koymak için çalışıyorum. Dört divs% 19,% 33 veya bir sayfada gösterilir kaç divs bağımlı mevcut genişliğinin% 49 bir genişlik olsun. Iç kap, yatay, dış kabın içinde merkezli olması gerekiyordu. Böylece, en fazla dört divs grup ders yatay merkezine kadar bitmeli. İç kap merkezli yukarıda ana içeriğe artı iki sütun olarak aynı genişlikte olduğundan, dikey çizgi görünmelidir. Dış kabı tam sayfa genişliği alır ve bir arka plan görüntüsü vardır.

Benim kod aşağıdaki gibidir şimdi:

<!-- BEGIN USER MODULES -->
<tr>
  <td align="left" valign="top">

	<?php if ( $this->countModules( 'user1 and user2' ) || $this->countModules( 'user1 and user3' ) || $this->countModules( 'user1 and user4' ) || $this->countModules( 'user2 and user3' ) || $this->countModules( 'user2 and user4' ) || $this->countModules( 'user3 and user4' ) ) : ?>
		<style type="text/css">#user1, #user2, #user3, #user4 { width:49%; }</style>
	<?php endif; ?>
	<?php if ( $this->countModules( 'user1 and user2 and user3' ) || $this->countModules( 'user1 and user2 and user4' ) || $this->countModules( 'user1 and user3 and user4' ) || $this->countModules( 'user2 and user3 and user4' ) ) : ?>
		<style type="text/css">#user1, #user2, #user3, #user4 { width:33%; }</style>
	<?php endif; ?>
	<?php if ( $this->countModules( 'user1 and user2 and user3 and user4' ) ) : ?>
		<style type="text/css">#user1, #user2, #user3, #user4 { width:19%; }</style>
	<?php endif; ?>

	<?php if ($this->countModules( 'user1 or user2 or user3 or user4' )) : ?><div id="wrap1234"><div id="user1234">
		<?php if($this->countModules('user1')) : ?><div id="user1" class="module_bc"><jdoc:include type="modules" name="user1" style="xhtml" /></div><?php endif; ?>
		<?php if($this->countModules('user2')) : ?><div id="user2" class="module_bc"><jdoc:include type="modules" name="user2" style="xhtml" /></div><?php endif; ?>
		<?php if($this->countModules('user3')) : ?><div id="user3" class="module_bc"><jdoc:include type="modules" name="user3" style="xhtml" /></div><?php endif; ?>
		<?php if($this->countModules('user4')) : ?><div id="user4" class="module_bc"><jdoc:include type="modules" name="user4" style="xhtml" /></div><?php endif; ?>
	</div><div class="clear"></div></div><?php endif; ?>

	</td>
</tr>

Benim stil sayfaları bu var:

#wrap1234 { background:transparent url(images/header_bg.png) no-repeat scroll 0 0; border-bottom:1px solid #444444; border-top:1px solid #444444; margin:25px 0 10px; padding:5px 0; text-align:center; align:center;}

#user1234 { width:1420px; margin-left:auto; margin-right:auto; }

#user1, #user2, #user3, #user4 { float:left; margin:5px 0; padding:5px 0; text-align:left; }

Bütün bu yerleştirildiği tablo ve vücut doğrudan hiyerarşik hattının dışında kalan her atlama, aşağıdaki gibidir:

<body><div id="wrapper_main"><center><table border="0" cellpadding="0" cellspacing="0" width="<?php echo $this->params->get('width'); ?>" id="main_table"><tbody>

Gövde ve tablosunun Css altındadır. Firebug kullanarak ben kapatıldığında bir fark yapar orada bir şey bulamıyorum.

html, body, form, fieldset{margin:0; padding:0;}
body {background:#222222 none repeat scroll 0 0; color:#777777; font-family:Helvetica,Tahoma,sans-serif; font-size:0.72em; height:100%; text-align:center;}
#wrapper_main {background:#FFFFFF url(images/wrapper_main_bg.gif) repeat-x scroll left top; border-bottom:2px solid #CCCCCC; padding-bottom:20px; position:relative; width:100%; z-index:1;}
td, div {font-size:100%;}

Gerçek sayfa jldev benim geliştirme sitede mevcuttur joomlaloft.com nokta.

Gördüğünüz gibi genellikle yatay bir div ortalamak için bir yol olarak önerilmektedir gibi, ben, iç kap bir sabit genişlik yanı sıra sağ ve sol kenar boşluğu otomatik verdik. Bununla birlikte, içinde divs ile iç kap sola yanaşık biter.

Bu çalışma yapılabilir mi? Ya da, ben en sol ve en sağ bilgi bloğu divlere bir değişken sol marjı ve koyarak doğru, örneğin, bir alternatif denemek gerekir?

Ben Birisi ben nerede yanlış gitti söylemek mümkün olduğunu umut ediyorum böylece stackoverflow üzerinde çok çok iyi cevap olduğunu gördük. Ben ilham dışında olduğum gibi ... Çok teşekkürler önceden herhangi bir yardım için verebilirsiniz!

PS Btw bu gördüğüm en sezgisel ve pratik forumlarda biri olmalı!

3 Cevap

İç merkezli div bu div içeren oluyor daha geniş olamaz. Benim tarayıcıda sitenizin 1200 px genişliğinde ve # user1234 1420px olduğunu;

Genişliğe ayarlanır # user1234:% 90; ve her kullanıcı div genişliği: 25%; 4 divs olduğunda. Put taşma: gizli; # user1234 üzerinde yüzen temizlemek için.

# User1234 div merkezli gibi # birey4 div metin kullanılabilir alanı doldurmak değil çünkü görünmüyor. Background-color koyun: # c00; bu sınırları nerede # user1234 görmek için. (Not: başka gizli # user1234 bir yükseklik yoktur ve arka plan rengini görmezsiniz: Eğer taşma olması gerekir).

Re: Bir önceki açıklama - aynı etiketi genişlik ve marjı kullanarak herhangi bir sorun vardır.

1420px için: Ben niye genişliğini kullanarak emin değilim. this veya css düzgün düzen öğreticiler için this sitesi takip ediniz. Başka bir seçenek, bir css grid kullanmak olacaktır.

Ben şahsen tablo alarak ve bir akışkan ızgara geçiş, tavsiye, sitenize en uygun olacak. Bu, şimdiye kadar sonra mutlu olacağım, bir öğrenme eğrisi biraz var ama bana güven. Sitenizde yapılan bir sürü iş var; CSS daha iyi değiştirilmiş olabilir gerçi. Eğer acil yardıma ihtiyacınız varsa CSS freenode genellikle iyi tavsiye ve eleştiriyi verir.

Başka bir şey, aynı etiketi genişlik ve marj kullanmak için tavsiye edilmez

Ben bir DIV ortalamak istedi ben yaptım şey nispeten konumlandırmak oldu. 50% ve margin-sol 1/2 div genişliğini için sol ayarlanması mükemmel kapta div merkezi olacak. Ben geçmişte bu kullandım ve bildiğim için çoğu tarayıcılarda çalışır (IE6 +, ve non-IE tarayıcıları). Bunu yapmak için daha iyi bir yolu olabilir rağmen.

#user1234 { position: relative; 
            left: 50%;
            margin-left: -710px;
            width:1420px;}