Định vị tuyệt đối có nghĩa là phần tử được đưa hoàn toàn ra khỏi luồng thông thường của bố cục trang. Liên quan đến phần còn lại của các phần tử trên trang, phần tử được định vị tuyệt đối đơn giản là không tồn tại. Bản thân phần tử sau đó được vẽ riêng biệt, loại "trên cùng" của mọi thứ khác, tại vị trí bạn chỉ định bằng cách sử dụng các left, right, top and bottom
thuộc tính.
Sử dụng vị trí bạn chỉ định với các thuộc tính này, phần tử sau đó được đặt tại vị trí đó trong phần tử tổ tiên cuối cùng của nó có thuộc tính vị trí của bất kỳ thứ gì khác ngoài static
(phần tử trang mặc định là tĩnh khi không có thuộc tính vị trí nào được chỉ định) hoặc nội dung tài liệu (trình duyệt khung nhìn) nếu không có tổ tiên nào như vậy tồn tại.
Ví dụ: nếu tôi có mã này:
<body>
<div style="position:absolute; left: 20px; top: 20px;"></div>
</body>
... <div>
sẽ được đặt 20px từ trên cùng của khung nhìn trình duyệt và 20px từ cạnh trái của cùng.
Tuy nhiên, nếu tôi đã làm điều gì đó như thế này:
<div id="outer" style="position:relative">
<div id="inner" style="position:absolute; left: 20px; top: 20px;"></div>
</div>
... thì inner
div sẽ được định vị 20px từ trên cùng của outer
div và 20px từ cạnh trái của cùng, bởi vì outer
div không được định vị position:static
bởi vì chúng tôi đã đặt nó một cách rõ ràng để sử dụng position:relative
.
Mặt khác, định vị tương đối giống như việc nói rằng không có định vị nào cả, nhưng các left, right, top and bottom
thuộc tính sẽ "đẩy" phần tử ra khỏi bố cục bình thường của chúng. Phần còn lại của các phần tử trên trang vẫn được sắp xếp như thể phần tử đó ở vị trí bình thường.
Ví dụ: nếu tôi có mã này:
<span>Span1</span>
<span>Span2</span>
<span>Span3</span>
... thì cả ba <span>
yếu tố này sẽ nằm cạnh nhau mà không trùng lặp.
Nếu tôi đặt giây <span>
để sử dụng định vị tương đối, như sau:
<span>Span1</span>
<span style="position: relative; left: -5px;">Span2</span>
<span>Span3</span>
... thì Span2 sẽ chồng lên bên phải của Span1 thêm 5px. Span1 và Span3 sẽ ngồi ở cùng một vị trí như chúng đã làm trong ví dụ đầu tiên, để lại khoảng cách 5px giữa bên phải của Span2 và bên trái của Span3.
Hy vọng rằng làm rõ mọi thứ một chút.