những điểm tốt đã được thực hiện ở đây, nhưng trong khi có rất nhiều thông tin về cách trình duyệt hoàn thành việc hiển thị lề, lý do tại sao vẫn chưa được giải đáp:
"Tại sao margin-top: -8px không giống với margin-bottom: 8px?"
những gì chúng tôi cũng có thể hỏi là:
Tại sao lề dưới dương không 'tăng' các phần tử trước, trong khi lề trên dương 'tăng' các phần sau?
vì vậy những gì chúng ta thấy là có sự khác biệt trong việc hiển thị các lề tùy thuộc vào mặt mà chúng được áp dụng - lề trên (và trái) khác với lề dưới (và phải).
mọi thứ trở nên rõ ràng hơn khi có cái nhìn (đơn giản hóa) về cách trình duyệt áp dụng các kiểu: các phần tử được hiển thị từ trên xuống trong khung nhìn, bắt đầu ở góc trên cùng bên trái (bây giờ hãy gắn bó với kết xuất dọc, hãy nhớ rằng chiều ngang được đối xử như nhau).
hãy xem xét html sau:
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
tương tự như vị trí của chúng trong mã, ba hộp này xuất hiện xếp chồng lên nhau 'từ trên xuống' trong trình duyệt ( giữ mọi thứ đơn giản, chúng tôi sẽ không xem xét ở đây thuộc order
tính của mô-đun css3 'flex-box' ). vì vậy, bất cứ khi nào các kiểu được áp dụng cho hộp 3, vị trí của phần tử trước đó (cho hộp 1 và 2) đã được xác định và không nên thay đổi thêm vì lợi ích của tốc độ kết xuất.
bây giờ, hãy tưởng tượng lề trên cùng là -10px cho hộp 3. thay vì chuyển lên tất cả các phần tử trước đó để thu thập một số không gian, trình duyệt sẽ chỉ đẩy hộp 3 lên, vì vậy nó được hiển thị ở trên cùng (hoặc bên dưới, tùy thuộc vào chỉ số z ) bất kỳ phần tử nào đứng trước. ngay cả khi hiệu suất không phải là vấn đề, việc di chuyển tất cả các phần tử lên có thể đồng nghĩa với việc chuyển chúng ra khỏi khung nhìn, do đó vị trí cuộn hiện tại sẽ phải được thay đổi để mọi thứ hiển thị trở lại.
điều tương tự cũng áp dụng cho lề dưới cùng cho hộp 3, cả tiêu cực và tích cực: thay vì ảnh hưởng đến các yếu tố đã được đánh giá, chỉ xác định 'điểm bắt đầu' mới cho các yếu tố sắp tới. do đó việc thiết lập một biên đáy dương sẽ đẩy các yếu tố sau xuống; một tiêu cực sẽ đẩy chúng lên.
onset
vàoffset
. Đúng là nhiều người luôn sử dụng từoffset
( tiêu cực ) khi chúng có nghĩa làonset
( tích cực ). Thông báo này sẽ tự hủy nếu bạn cập nhật câu trả lời của mình. Chúc mừng!