2011-07-24 13 views
21

Chcę umieścić dwa znaczniki DIV obok siebie bez użycia stałej szerokości. Pierwszy element div rozwija się do zawartości, a drugi element div powinien wypełnić pozostałe miejsce. Również element div NIE może znajdować się na wierzchu drugiego elementu div, ponieważ ma przezroczysty obraz tła, więc jeśli przecinają się, jest zauważalny. Wypróbowałem wszystkie możliwości, które mogłem wymyślić, ale nie mogłem znaleźć rozwiązania za pomocą tagów DIV.dwa divy obok siebie, jedna 100% szerokość inne szerokość zależna od zawartości

Mogę to zrobić za pomocą TABELI, ale czy można to zrobić za pomocą DIV? Czy jest to jeszcze jedna rzecz, której DIV nie może zrobić?

Oto kod:

  #right{ 
       background: green;  
       width: 100%; 
      } 
      #left { 
       margin-top: 5px; /* to test if they intersect*/ 
       background: red; 
      } 
      #container { 
       width: 800px; 
      } 
      <div id="container"> 
       <div id="left"> This div is as big as it's content</div> 
       <div id="right"> rest of space</div> 
      </div> 

Dzięki za odpowiedzi!

+0

Tak, używam tabel atm, ale chcę wiedzieć, czy jest to możliwe z DIV. – blejzz

Odpowiedz

62

Patrz:http://jsfiddle.net/kGpdM/

#left { 
    background: #aaa; 
    float: left 
} 
#right { 
    background: cyan; 
    overflow: hidden 
} 

ta działa we wszystkich nowoczesnych przeglądarek i IE7 +.

Lewa kolumna będzie dokładnie taka sama, jak zawierająca ją zawartość. Prawa kolumna zajmie pozostałe miejsce.

"Sztuczka" za tą odpowiedzią to explained here.

+6

Ładnie wykonane. +1 za pokazanie mi nowej sztuczki. –

+0

Nadal nie rozumiem, dlaczego to działa, ale działa. Ale czy możemy ufać, że to zadziała w przyszłości? – Vincent

+0

@Vincent: Tak, gwarantowane działanie w przyszłości, zachowanie jest dobrze zdefiniowane gdzieś w specyfikacji CSS. Innym sposobem na to jest z 'display: table-cell', [tutaj jest przykład] (http://stackoverflow.com/questions/6938900/how-can-i-put-an-input-element-on-the -same-line-as-its-label/6938990 # 6938990). – thirtydot

Powiązane problemy