2011-02-02 33 views
5

Tôi có 4 phần tử bên trong phần tử vùng chứa. Phần tử vùng chứa sẽ có chiều cao được đặt là 100% của cửa sổ trình duyệt. 4 yếu tố bên trong sẽ xuất hiện theo chiều dọc xếp chồng lên nhau (như bình thường). Hai phần tử đầu tiên và phần tử cuối cùng phải có chiều cao "tự nhiên" (nghĩa là: đủ để phù hợp với nội dung của chúng). Phần tử thứ 3 sẽ mở rộng để lấp đầy không gian có sẵn trong vùng chứa, sau khi 3 phần còn lại ăn tất cả những gì họ cần."Mọi thứ còn lại" trong bố cục CSS

Vì vậy, nó sẽ giống như thế này:

CSS Stacked Elements

tôi không thể thiết lập chiều cao rõ ràng cho Element-1, Element-2, hoặc Element-4, tôi cũng không biết chiều cao của container . Tôi cũng không biết chiều cao tự nhiên của Element-3; Tôi dự định sử dụng overflow-scroll nếu dung lượng lớn hơn thì có sẵn. Tôi đã thêm khoảng cách giữa các phần tử để minh hoạ, nhưng sẽ có khoảng trắng (lề/đệm) giữa các phần tử thực.

Làm thế nào để bạn đạt được điều này bằng HTML/CSS? Nếu thỏa hiệp phải được thực hiện để có được một bố trí phong nha, tôi sẽ xem xét chúng. Điểm thưởng nếu kỹ thuật này cũng áp dụng theo chiều ngang (mà tôi đã cần trong dịp).

+2

Hình ảnh đẹp. Nó giúp vô cùng. –

+0

Yếu tố 4 là gì? nó là nội dung hay chỉ là phong cách? – zzzzBov

+0

Tất cả các yếu tố, bao gồm cả phần tử-4, sẽ có nội dung trong đó. –

Trả lời

5

Trước hết, hình ảnh tuyệt vời.

Thứ hai .. một giải pháp javascript có nằm ngoài câu hỏi không?

Cập nhật

này được chỉ định trở thành một mẫu, nhưng tôi đã cập nhật mã để xoa dịu một số người kén chọn hơn ngoài kia.

http://jsfiddle.net/tsZAV/9/

+0

@ Dutchie432 Trông đẹp, điều duy nhất được tính toán lại khi thay đổi kích thước. Và trên mọi cuộc gọi AJAX có thể hoặc bất kỳ nội dung động nào ở đó. – Marnix

+0

@Dutchie 1. Giá trị ký quỹ không chính xác. Dọc lề thu hẹp. 2. Bạn quên để bao gồm các biên giới vào tính toán. Sử dụng outerHeight() thay vì chiều cao(). 3. OP muốn bố trí kéo dài 100% theo chiều dọc. –

+0

@Dutchie Ngoài ra, phần tử CENTER? Có thật không? –

2

Có một số điều khiến cho điều này không thể thực hiện được trong css thuần túy.

  1. Cửa sổ trình duyệt có thể ngắn hơn chiều cao động của 3 yếu tố đầu tiên.
  2. Không có cách nào để buộc yếu tố chiếm phần còn lại của chiều cao của vùng chứa.
  3. CSS là ngôn ngữ tạo kiểu tài liệu chứ không phải ngôn ngữ lập trình. Hãy nghĩ viết CSS như một tập hợp các nguyên tắc mà trang nên cố gắng làm theo, chứ không phải là cách thiết lập kích thước rõ ràng (mặc dù bạn có thể đặt kích thước rõ ràng).

Điều này tương đối đơn giản với JavaScript thay đổi kích thước phần tử thứ tư. Bạn sẽ phải lắng nghe sự kiện resize để yếu tố thứ tư được định kích thước phù hợp. Ngoài ra, bạn sẽ muốn đặt giá trị min-height cho phần tử-4, trong trường hợp không có đủ không gian cho phần tử thứ tư.

+0

Tôi nghi ngờ nó không thể làm trong CSS tinh khiết, chỉ là nó không thể làm trong CSS tinh khiết mà nhiều trình duyệt vẫn còn có liên quan nhưng vô cùng lỗi thời hỗ trợ. – reisio

+1

@reisio, tôi đã đọc toàn bộ thông số kỹ thuật cho CSS2 & 3, không có cách nào được chuẩn hóa để thực hiện 'height: fill' hoặc tương tự. Có thể có một cách cụ thể của trình duyệt để làm một cái gì đó như thế, nhưng tại thời điểm đó bạn tốt hơn tắt thiết lập một min-chiều cao, và để cho javascript xử lý nó. – zzzzBov

+0

Tôi đã suy nghĩ về các giá trị bảng (- *) để hiển thị, ngoại tuyến. – reisio

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