2011-07-24 38 views
21

Tôi muốn đặt hai thẻ DIV cạnh nhau mà không sử dụng chiều rộng cố định. Div đầu tiên mở rộng nội dung của nó và div thứ hai sẽ lấp đầy khoảng trống còn lại. Ngoài ra, div không được ngồi trên đầu trang của div khác, bởi vì chúng có một hình nền trong suốt vì vậy nếu chúng giao nhau thì nó đáng chú ý. Tôi đã thử tất cả các khả năng mà tôi có thể nghĩ ra nhưng không thể tìm thấy một giải pháp bằng cách sử dụng thẻ DIV.hai divs cạnh nhau, một chiều rộng 100% chiều rộng khác phụ thuộc vào nội dung

Tôi có thể thực hiện việc này bằng BẢNG, nhưng có thể thực hiện điều đó bằng DIV không? Hay đây là điều mà DIV không thể làm được?

Dưới đây là các mã:

  #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> 

Cảm ơn đã trả lời!

+0

có, tôi sử dụng bảng atm, nhưng tôi muốn biết nếu nó có thể làm điều đó với DIV. – blejzz

Trả lời

62

Xem:http://jsfiddle.net/kGpdM/

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

này hoạt động trong tất cả các trình duyệt hiện đại và IE7 +.

Cột bên trái sẽ chính xác rộng bằng nội dung bên trong. Cột bên phải sẽ chiếm không gian còn lại.

overflow: hidden "lừa" đằng sau câu trả lời này là explained here.

+6

Thực hiện tốt. 1 cho tôi một mẹo mới. –

+0

Tôi vẫn không hiểu tại sao nó hoạt động, nhưng nó hoạt động. Nhưng chúng ta có thể tin tưởng một cách tin cậy rằng điều này sẽ tiếp tục làm việc trong tương lai? – Vincent

+0

@Vincent: Có, nó được đảm bảo hoạt động trong tương lai, hành vi được xác định rõ ở đâu đó trong thông số CSS. Một cách khác để làm điều này là với 'display: table-cell', [đây là một ví dụ] (http://stackoverflow.com/questions/6938900/how-can-i-put-an-input-element-on-the -same-line-as-it-label/6938990 # 6938990). – thirtydot

Các vấn đề liên quan