2010-08-19 17 views
5

Tôi là một lập trình viên đang cố gắng thực hiện một số bản vá trong thiết kế web và thường tìm thấy css rất hợp lý. Cho đến nay, chỉ có 'mô hình đấm bốc' vẫn còn là một vùng đất huyền diệu đầy những minotaur và harpies cho tôi. Tôi sẽ minh họa cho nó với các ví dụ:tìm hiểu cách thức hoạt động của vùng chứa trong css

  • http://jsfiddle.net/qyMxv/
    Yếu tố bên trong của div với lớp đệm quy định đi ra ngoài không gian div. Không phải là div phải kèm theo mọi thứ bên trong nó sao? Điểm khác là làm gì?

  • http://jsfiddle.net/wk9Kg/
    div mẹ hoàn toàn biến mất, trong khi trẻ em được hiển thị bình thường. Kỳ lạ hơn nữa là hành vi này được kích hoạt bởi float:left;.

Có sách hướng dẫn/tham khảo nào có thể giúp tôi xem logic trong những điều kỳ quặc này không? Tôi tin tưởng w3schools một thời gian nhưng họ đang rất khủng khiếp về chủ đề này. Tìm nội dung hay trên web cũng trở nên khó khăn. Ngay bây giờ tôi chỉ cần fiddle với display, positionfloat thuộc tính cho đến khi nó hoạt động.

Cảm ơn!

+2

Tin tưởng w3schools không phải là một ý tưởng tốt. Hướng dẫn người mới bắt đầu tốt, điều chỉnh kém. –

Trả lời

3

Phần tử nổi được lấy ra khỏi luồng thông thường và do đó không được tính là chiếm bất kỳ chiều cao nào.
Để khắc phục điều đó, bạn có thể thêm phần tử trống sau phao với clear:both. Các yếu tố thanh toán bù trừ là một yếu tố thường xuyên đó là trong dòng chảy, và các tài sản clear lực lượng nó bên dưới các yếu tố nổi.
Do đó, hộp chứa sẽ mở rộng để chứa phần tử thanh toán bù trừ, và ngẫu nhiên cũng chứa phao.

Để biết thêm thông tin, vui lòng xem spec:

Từ một phao không nằm trong dòng chảy, hộp khối không ở vị trí tạo trước và sau khi hộp phao chảy theo chiều dọc như thể float không tồn tại.

6
  1. chung div có nghĩa vụ phải gửi kèm theo/chứa bất kỳ không nổi phần tử tương đối hoặc staticly vị trí, bên trong nhưng bạn có thể nhận được ngay với padding trên các yếu tố nội tuyến như bạn có nó, hoặc với lợi nhuận tiêu cực/giá trị âm với vị trí tương đối. Điều này cho phép bố trí linh hoạt hơn tôi cho là.

  2. Nổi không được cho là được chứa khi chúng không còn lưu lượng, trừ khi bạn có phần bù trừ sau đó, hoặc tràn đặt cho bất kỳ mục nào khác ngoài hiển thị. Trong IE7/IE6, bạn chỉ cần kích hoạt hasLayout có thể được thực hiện thông qua vô số các thuộc tính/giá trị combo (điều này đi ngược lại với spec). Xem http://work.arounds.org/clearing-floats/ để biết cách làm nổi bật (các) phao bên trong.

Dưới đây là một danh sách các trang web cho các lỗi qua trình duyệt mà tôi biên soạn từ một câu hỏi khác:

+0

Cảm ơn bạn đã phản hồi! Bạn có thể làm rõ một chút về số 1 không? _but bạn có thể nhận được đi với đệm trên các yếu tố nội tuyến như bạn có it_ Như tôi có nó, nó không có vẻ làm việc. _hoặc với giá trị âm/giá trị âm với vị trí tương đối_ Tôi đã có ý tưởng chung về cách tỷ suất lợi nhuận hoạt động, nhưng không chắc chắn tôi hiểu mẹo này. Biên độ âm trên phụ huynh? BTW, cách giải quyết hiện tại của tôi ở đây là khai báo cho trẻ có "display: inline-block" (mặc dù tôi chưa thử nghiệm nó trong IE). –

2
  • Eric Số điện thoại CSS: The Definitive Guide của Meyer là một tham chiếu tốt. Đó là cũ, nhưng mô hình hộp đã không thay đổi.
  • quirksmode có giải thích tốt về hành vi dành riêng cho trình duyệt.
  • ví dụ # 2, bạn có thể thêm <div style="clear: both;"></div> sau khi khối thứ hai màu đen hoặc và chiều cao và chiều rộng để chứa <div>
+0

+1 cho chế độ qurks. positioniseverything.net cũng là một nguồn lực tốt cho tôi trở lại trong ngày ... không biết nếu nó vẫn được cập nhật mặc dù. – prodigitalson

1

Tôi thấy các bài viết của Chris Coyier được viết tốt và dễ hiểu.Ông có một phần về khái niệm cốt lõi, bao gồm các chủ đề như FloatsBox Model

Hope this helps, JD

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