2012-05-07 35 views
291

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

mẫu html:

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

Bạn muốn son1 là ở góc trên cùng bên phải của cha nhưng mà ở phía dưới nên son2 được? Dưới cùng bên trái, bên phải hoặc giữa? – j08691

+0

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 đối với các phần tử con. Trên phần tử con đầu tiên, bạn nên đặt trên cùng: 0 và bên phải: 0 để định vị nó ở trên cùng bên phải của phần tử cha. Trên con thứ hai, bạn nên đặt dưới cùng: 0 để định vị nó ở dưới cùng của phần tử cha. Có một bài viết tuyệt vời ở đây https://kolosek.com/css-position-relative-vs-position-absolute giải thích chi tiết về vị trí tương đối và tuyệt đối. –

Trả lời

541
#father { 
    position: relative; 
} 

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

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

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

Vì vậy, chúng tôi thực hiện #fatherposition: relative và trẻ em có position: absolute, sau đó sử dụng topbottom để định vị trẻ em.

+0

cảm ơn rất nhiều. bạn có thể giải thích cho tôi cách nó hoạt động như vậy tại sao? – BlaShadow

+4

Tại sao '#father {position: relative; } 'bắt buộc? Yêu cầu – joshreesjones

+1

để thay đổi "quy tắc vị trí" cho những người ở bên trong anh ta. – BlaShadow

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

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

5

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

Ví dụ 1 ::

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

#mainall 
{ 

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

Đây tầng lớp phụ huynh không có vị trí rất yếu 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ụ phụ huynh này có vị trí tương đối do đó yếu tố được định vị tuyệt đối bên mẹ tương đối.

+0

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

+0

thì phần tử thả nổi của bạn sẽ liên quan đến vị trí mà phần tử gốc đã có khi trang (và css) được tải. Nếu bạn muốn cập nhật sau khi tải trang, hãy sử dụng javascript - clientX và clientY là một nơi tốt để bắt đầu –

2

Trong trường hợp ai đó muốn postion một đứa trẻ div trực thuộc cha mẹ

#father { 
    position: relative; 
} 

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

Làm việc bản demo Codepen

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