2011-09-03 21 views
24

Üç bitişik divtan oluşan bir düzen oluşturmak istiyorum. Yan divler statik genişliğe sahiptir (javascript ile değişebilir) ve merkezi div kalan alanı doldurur. İlk div'in boyutu değiştiğinde, sadece merkezini etkiler. Üç sütundan oluşan tabloya (dinamik oluşturma ile) benzer.3 sütun, esnek genişlikli orta sütun

Tamam, ama sorun nerede. Sorun şu ki, ilk sütuna yüzen sol div koyarsam ve ikinci ve üçüncü olandaki div'u engellersek, blok blokları garip bir şekilde davranır. Sütunlarında ilk sütundan kayan divın altında işlenirler.

Örnek. Birinci ve ikinci sütunda, yüzer div var ve üçüncü sütunda div'i engelle. Blok div yüzer divların yüksekliği etrafında aşağı kaydırılır. Merkez sütunundaki Div, y konumunda yalnızca solda kayan şamandıra kaymıştır.

Üç yerleşim sırasının her birinin birbirinden bağımsız olmasını isterim. Üçüncü sütundaki öğelerin neden ilk iki sütunda (float özelliği ile) div içinde yüzdüğü hakkında hiçbir fikrim yok.

KODU:

<div style="margin: auto; display: table; width: 260px;"> 
     <div style="display: table-row;"> 
      <div style="display: table-cell; width: 100px;"> 

       <div style="float: left; width: 40px; height: 50px;">COL1</div> 

      </div> 
      <div style="display: table-cell;"> 

       <div style="float: left; height: 50px; width: 40px;">COL2</div> 

      </div style="display: table-cell; width: 100px;"> 
      <div class="sideContainer"> 

       <div>COL3</div> 

      </div> 
     </div> 
</div> 

ve sonuç: result

düzeltmek nasıl. Tüm mizanpajların (sütunların) birbirinden bağımsız olması nasıl yapılır. Herhangi bir fikir?

+0

Kapatmada bir özniteliğiniz var e sekmesi: '' – arnaud576875

+0

Bu benim hatam. Kapat sekmesindeki stil, 'class =' ​​sideContainer 'yerine; –

+0

sonuç bağlantısında işlenen budur. Ama sanırım neden bu şekilde çalıştığını anlıyorum. Örneğin, örneğin: merkez düzeni divinde yüzen div, ebeveyninin ilk çocuğudur. Öyleyse, eğer yüzdürme atlayıcısına sahipse, ama solunda yüzecek hiçbir şeyi yoksa, ebeveyninin önceki kardeşini yüzer (ilk düzenleyici div). Bunu çözmek için yüzer divun önüne bir şey eklemem gerekiyor (yani eşit 0 ile div). Ya da iki yüzen div'um varsa, ilk önce yüzer olmalıdır: yok ve göster: satır içi. –

cevap

55

Bunu, col1 ve col3 'ü sola ve sağa doğru sabit bir genişlikte olacak şekilde yapabilirsiniz.

Ardından, col1 ve col3'ün genişliğine eşit col2'ye bir sol ve sağ kenar boşluğu ekleyin.

Bu size üç sütun verir; col1 ve sağlanacak eni bir şekilde doldurma sabit bir genişliğe sahip olan ve col2 col3:

col2's content box in blue, and its margins in yellow
(mavi COL2 içerik kutusu ve sarı onun kenar)

<div class='container'> 
    <div class='right'> 
     col3 
    </div> 
    <div class='left'> 
     col1 
    </div> 
    <div class='middle'> 
     col2 
    </div> 
</div> 



.container { 
    overflow: hidden; 
} 
.right { 
    float: right; 
    width: 100px; 
} 
.left { 
    float: left; 
    width: 100px; 
} 
.middle { 
    margin: 0 100px; 
} 

Burada deneyin: http://jsfiddle.net/22YBU/

Ekrana ihtiyacınız varsa: tablo, ekran: tablo satırı ve görüntü: tablo hücresi, tablo kullanın ;-)

+0

ohhh evet, ihtiyacım olan şey bu. Senin için gelin arnaud576875. Teşekkürler. –

+20

Divların sırası önemlidir ve sezgisel değildir. –

+3

CSS yüzerleri sezgisel değil :) – arnaud576875