2012-05-25 43 views
5

Tôi đọc về một số giải pháp khác nhau để mô phỏng các cột hoặc các phần tử có chiều cao bằng nhau, nhưng không ai trong số chúng thực sự thu hút sự chú ý của tôi bởi vì chúng đang sử dụng hack, bố cục HTML cực kỳ phức tạp hoặc không được hỗ trợ rộng rãi.Các phần tử chiều cao bằng CSS

Đây là ví dụ Fiddle.

Mục tiêu của tôi là đảm bảo tất cả các phần tử có cùng độ cao hoặc, ít nhất, chiều cao tối đa của các anh chị em trong hàng.

Hàng được cấu thành bởi 3 phần tử (trong trường hợp này, không có trình bao bọc hàng tồn tại nhưng tôi có thể xem xét thêm phần tử vùng chứa đó).

Có một giải pháp mà:

  1. không yêu cầu JS
  2. doesn't use display: table
  3. không sử dụng đệm rộng/lợi nhuận với giá trị âm
  4. doesn't require exponential uses of divs and float

Trả lời

5

Với những hạn chế bạn đã thực hiện: Không, không có.

chỉnh sửa: Bởi vì bạn không đề cập đến điều này: Bạn có thể sử dụng bảng cho việc này. (chào mừng trở lại những năm 90)

+0

Không thể nói nó tốt hơn –

+1

Tôi đã suy nghĩ giống nhau. Tuy nhiên, tôi hy vọng rằng có thể ai đó thông minh hơn tôi sẽ có thể đi kèm với một giải pháp. Đó là lý do tại sao tôi upvoted câu hỏi và yêu thích nó. – Ana

+0

@Ana Tôi có cùng cảm giác, đây là lý do cho câu hỏi của tôi. –

5

Bạn có thể sử dụng thuộc tính CSS3 flex cho việc này. Viết như thế này:

CSS 

.parent{ 
    display:-moz-box; 
    display:-webkit-box; 
    display:box; 
    -moz-box-orient: horizontal; 
    -webkit-box-orient: horizontal; 
    box-orient: horizontal; 
    width:100%; 
    min-height:200px; 
} 

.parent div{ 
    background:red; 
    -moz-box-flex: 1; 
    -webkit-box-flex: 1; 
    box-flex: 1; 
    border:2px solid green; 
} 

HTML

<div class="parent"> 
    <div class="child">1</div> 
    <div class="child">2</div> 
    <div class="child">3</div> 
</div> 

Kiểm tra này http://jsfiddle.net/VkPmg/2/

+0

Khá tuyệt. Nó có hoạt động với IE không? (ít nhất là các bản phát hành mới nhất). –

+0

@ SimoneCarletti Không, đó không phải là lý do tại sao tôi không nói với bạn giải pháp này: http://caniuse.com/#search=flex – Christoph

+0

Yup không hỗ trợ IE nhưng bạn có thể sử dụng http: // flexiejs.com/cho IE hỗ trợ – sandeep

1

Nếu bạn có một bố trí chiều rộng cố định, bạn có thể giả mạo nó bằng background-image. Hãy tưởng tượng một nền hình ảnh gạch mô phỏng biên giới, bạn sẽ chỉ phải lặp lại y trong vùng chứa chính.

Ví dụ: nếu bạn có vùng chứa 400px có hộp nổi 3 100px (như hình tròn của bạn), bạn sẽ phải lặp lại hình ảnh 1x400 trong vùng chứa chính. Chỉ cần thêm vào hình ảnh này ở vị trí x tốt 1 pixel giống như màu đường viền mà bạn đã sử dụng. Và lặp lại nó!

Với kỹ thuật này, hộp của bạn sẽ không có cùng chiều cao (trên thực tế) nhưng màn hình sẽ giống như hộp có nó vì hộp cao hơn sẽ đẩy vùng chứa và nền sẽ xuất hiện.

+0

Tôi không thể sử dụng hack này vì việc sử dụng các góc tròn CSS không áp dụng rất tốt để giải pháp này. –

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