Vị trí tuyệt đối nhưng liên quan đến cha mẹ


457

Tôi có hai div bên trong một div khác và tôi muốn đặt một div con ở phía trên bên phải của div cha và div div khác ở dưới cùng của div cha bằng cách sử dụng css. Tức là tôi muốn sử dụng định vị tuyệt đối với hai div con, nhưng định vị chúng tương đối với div cha hơn là trang. Tôi có thể làm cái này như thế nào?

Mẫu html:

<div id="father">
   <div id="son1"></div>
   <div id="son2"></div>
</div>

Bạn muốn con trai1 ở góc trên cùng bên phải của bố nhưng con trai nên ở đâu? Dưới cùng bên trái, phải, hoặc trung tâm?
j08691

1
Trong trường hợp này, bạn sẽ cần đặt vị trí: liên quan đến phần tử cha và vị trí: tuyệt đối với phần tử con. Trên phần tử con đầu tiên, bạn nên đặt top: 0 và right: 0 để đặt nó ở phía trên bên phải của phần tử cha. Ở con thứ hai, bạn nên đặt dưới cùng: 0 để đặt nó ở dưới cùng của phần tử cha. Có một bài viết tuyệt vời ở đây kolosek.com/css-poseition-relative-vs-poseition-absolute giải thích chi tiết về vị trí tương đối và tuyệt đối.
Nesha Zoric

Câu trả lời:


812
#father {
   position: relative;
}

#son1 {
   position: absolute;
   top: 0;
}

#son2 {
   position: absolute;
   bottom: 0;
}

Này hoạt động vì position: absolutenghĩa cái gì đó như "sử dụng top, right, bottom, leftđể vị trí của mình trong mối quan hệ với tổ tiên gần người có position: absolutehay position: relative."

Vì vậy, chúng tôi làm cho #fatherposition: relative, và trẻ em có position: absolute, sau đó sử dụng topbottomđịnh vị trẻ em.


17
Tại sao #father { position: relative; }cần thiết?
joshreesjones

4
được yêu cầu thay đổi "quy tắc vị trí" cho những người ở trong anh ta.
BlaShadow

36
@ mathguy54 Bởi vì thông số kỹ thuật cho biết các phần tử được định vị tuyệt đối được định vị so với cha mẹ được định vị đầu tiên , có nghĩa là bất kỳ cha mẹ nào không có giá trị vị trí là static.
Alex W

Điều gì về kịch bản như vậy: FATHER là tương đối và chiều cao của nó là 100% làm thế nào để định vị con trai và con trai2, giả sử lần lượt là 20% và 70% chiều cao của cha?
Rossitten


27
div#father {
    position: relative;
}
div#son1 {
    position: absolute;
    /* put your coords here */
}
div#son2 {
    position: absolute;
    /* put your coords here */
}

1
Điều gì nếu bạn cần thay đổi kích thước cha mẹ với con?
FrenkyB

10

Trong trường hợp ai đó muốn gửi một div con trực tiếp dưới cha mẹ

#father {
   position: relative;
}

#son1 {
   position: absolute;
   top: 100%;
}

Bản làm việc Codepen


6

Nếu bạn không cung cấp bất kỳ vị trí nào cho cha mẹ thì theo mặc định nó sẽ mất static. Nếu bạn muốn hiểu sự khác biệt đó, hãy tham khảo ví dụ này

Ví dụ 1::

http://jsfiddle.net/Cr9KB/1/

   #mainall
{

    background-color:red;
    height:150px;
    overflow:scroll
}

Ở đây lớp cha không có vị trí nên phần tử được đặt theo cơ thể.

Ví dụ 2 ::

http://jsfiddle.net/Cr9KB/2/

#mainall
{
    position:relative;
    background-color:red;
    height:150px;
    overflow:scroll
}

Trong ví dụ này, cha mẹ có vị trí tương đối do đó phần tử được định vị tuyệt đối bên trong cha mẹ tương đối.


Và, nếu bạn không có #mainall {height: 150px} ... thì sao? Ý tôi là, nếu mainall có chiều cao động?
Albert Català

thì phần tử nổi của bạn sẽ liên quan đến vị trí mà phần tử cha có khi trang (và css) được tải. Nếu bạn muốn cập nhật rằng sau khi tải trang, hãy sử dụng javascript - clientX và clientY là một nơi tốt để bắt đầu
Abraham Brookes
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.