2012-05-07 31 views
291

Başka bir divun içinde iki div var, ve bir alt divı ana divun sağ üst köşesine yerleştirmek istiyorum ve diğer çocuk da css kullanarak ana divun altına geçsin. Yani, iki çocuk div ile mutlak konumlandırma kullanmak istiyorum, ancak onları sayfa yerine ana div ile göreli olarak konumlandırın. Bunu nasıl yapabilirim?Pozisyon mutlak ama ebeveynle göreli

Numune html: position: absolute "top, right, bottom, leftposition: absolute veya position: relative sahiptir yakın atası olmak, kendini konumlandırmak için kullandığınız gibi bir anlama gelir, çünkü

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

Sen son1 baba sağ üst köşede olmak istiyorum ama nereye altta olmak son2 gerektiğini altında? Alttan sola, sağa veya merkeze mi? – j08691

+0

Bu durumda, ana öğeye göre konumu ayarlayın: ve çocuk öğelerinin mutlak konumu. İlk çocuk elemanında, üst öğe: 0 ve sağa: 0, üst öğenin sağ üst köşesinde konumlandırmanız gerekir. İkinci çocukta, alt öğenin alt kısmına yerleştirmek için alt: 0 değerini koymalısınız. Burada göreceli ve mutlak konumlandırmayı ayrıntılı olarak açıklayan harika bir makale https://kolosek.com/css-position-relative-vs-position-absolute . –

cevap

541
#father { 
    position: relative; 
} 

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

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

Bu işleri ."

yüzden #father position: relative sahip olmalarını ve çocukların bundan çocukları konumlandırmak için top ve bottom kullanın position: absolute var.

+0

çok teşekkürler. Nasıl çalıştığını bana açıklayabilir misin? – BlaShadow

+4

Neden "#father {position: relative; } 'gerekli? İçinde olanlar için "konum kuralını" değiştirmek için – joshreesjones

+1

gereklidir. – BlaShadow

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

Ebeveynle çocuğunu yeniden boyutlandırmanız gerekirse ne olur? – FrenkyB

5

Ebeveyn için herhangi bir konum belirtmezseniz, varsayılan olarak static alır. eleman vücuda göre yerleştirilir böylece bu farkı anlamak istiyorsanız bu örnekte

Örnek 1 ::

İşte

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

#mainall 
{ 

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

üst sınıf bakın hiçbir konuma sahiptir. Bu örnekte, ana olarak 2 ::

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

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

Örnek dolayısıyla eleman göreli ana içindeki mutlak konumlandırılmış göreli konuma sahiptir.

+0

Ve, #mainall {height: 150px} ... 'a sahip değilseniz ... Yani, mainall dinamik yüksekliğe sahipse? –

+0

sonra yüzen öğeniz, ana öğenin sayfa (ve css) yüklendiğinde sahip olduğu konuma göre olacaktır. Bunu sayfanın yüklenmesinden sonra güncellemek istiyorsanız, javascript kullanın - clientX ve clientY başlamak için iyi bir yer –

2

Örtmek birisi Böl isteyen bir çocuk div doğrudan bir ebeveyn

#father { 
    position: relative; 
} 

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

Çalışma demo Codepen

İlgili konular