Nếu bạn xem thông số mô hình hộp CSS , bạn sẽ tuân thủ các điều sau:
Tỷ lệ phần trăm [lề] được tính theo chiều rộng của khối chứa hộp được tạo. Lưu ý rằng điều này cũng đúng với 'lề trên' và 'lề dưới'. Nếu chiều rộng của khối chứa phụ thuộc vào thành phần này, thì bố cục kết quả không được xác định trong CSS 2.1. (nhấn mạnh của tôi)
Điều này thực sự đúng. Nhưng tại sao ? Điều gì trên trái đất sẽ buộc bất cứ ai thiết kế nó theo cách này? Thật dễ dàng để nghĩ ra các kịch bản mà bạn muốn, ví dụ một điều nhất định luôn giảm 25% so với đầu trang, nhưng thật khó để đưa ra bất kỳ lý do nào khiến bạn muốn đệm dọc có liên quan đến kích thước ngang của cha mẹ
Đây là một ví dụ về hiện tượng tôi đang đề cập đến:
<div style="border: 1px solid red; margin: 0; padding: 0; width: 200px; height: 800px;">
This div is 200x800.
<div style="border: 1px solid blue; margin: 10% 0 0 10%;">
This div has top-margin of 10% and left-margin of 10% with respect to its parent.
</div>
</div>
height: 10%; width: 10%
bạn cũng sẽ không nhận được một phần tử vuông.
Note that in a horizontal flow, percentages on ‘margin-top’ and ‘margin-bottom’ are relative to the width of the containing block, not the height (and in vertical flow, ‘margin-left’ and ‘margin-right’ are relative to the height, not the width).
cả hai cách
margin: 25%
nghĩa thực sự của nó. Nó sẽ không phải là một lề chẵn, mặc dù mã cho thấy nó là. Tôi không có bằng chứng để sao lưu điều này, nhưng nó có vẻ hợp lý.