Mutlak fakat ebeveyne göre konumlandırma


459

Başka bir div içinde iki div var ve bir div div üst div div üst sağa ve diğer child div css kullanarak üst div div altına konumlandırmak istiyorum. Yani, iki alt div ile mutlak konumlandırma kullanmak istiyorum, ancak onları sayfa yerine ana div ile göreceli olarak konumlandırmak istiyorum. Bunu nasıl yapabilirim?

Örnek html:

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

Son1'in babanın sağ üst köşesinde olmasını istiyorsun ama son2 sonda nerede olmalı? Sol alt, sağ veya orta?
j08691

1
Bu durumda, üst öğeye göre konum: ve alt öğelere mutlak konum ayarlamanız gerekir. İlk alt öğede, üst öğenin sağ üst köşesine yerleştirmek için üst: 0 ve sağ: 0 koymalısınız. İkinci çocukta, üst öğenin altına yerleştirmek için alt: 0 koymalısınız. Burada göreceli ve mutlak konumlandırmayı ayrıntılı olarak açıklayan kolosek.com/css-position-relative-vs-position-absolute harika bir makale var .
Nesha Zoric

Yanıtlar:


815
#father {
   position: relative;
}

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

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

Bu çalışmalar nedeniyle position: absolutebenzeri yollarla şey "kullanımı top, right, bottom, leftsahip en yakın atası olmak, kendini konumlandırmak position: absoluteya position: relative."

Böylece biz #father var position: relativeve çocuklar var position: absolute, sonra kullanmak topve bottomçocukları konumlandırmak için.


17
Neden #father { position: relative; }gerekli?
joshreesjones

5
içinde bulunanlar için "konum kuralını" değiştirmek zorundadır.
BlaShadow

36
@ mathguy54 Çünkü spec, kesinlikle konumlandırılmış öğelerin birinci konumlandırılmış üst öğeye göre konumlandırıldığını , yani konum değeri olmayan herhangi bir üst öğeyi ifade ettiğini belirtir static.
Alex W

Peki ya bu senaryo hakkında: BABA göreceli ve yüksekliği% 100, oğul ve oğul2'yi nasıl konumlandıracak, diyelim ki sırasıyla babasının boyunun% 20 ve% 70'i?
Mart'ta Rossitten


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

1
Ebeveynini çocukla yeniden boyutlandırmanız gerekirse ne olur?
FrenkyB

10

Birisi doğrudan bir ebeveyn altında bir çocuk div ilan etmek isterse

#father {
   position: relative;
}

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

Çalışma demosu Codepen


6

Ebeveyne herhangi bir pozisyon vermezseniz, varsayılan olarak alır static. Bu farkı anlamak istiyorsanız, bu örneğe bakın

Örnek 1::

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

   #mainall
{

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

Burada ana sınıfın konumu yoktur, bu nedenle eleman gövdeye göre yerleştirilir.

Örnek 2 ::

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

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

Bu örnekte ebeveynin göreceli konumu vardır, bu nedenle eleman bağıl ebeveyne mutlak yerleştirilir.


Ve #mainall {height: 150px} ... 'e sahip değilseniz ne olur? Demek istediğim, eğer anaallerin dinamik yüksekliği varsa?
Albert Català

kayan öğeniz sayfa (ve css) yüklendiğinde üst öğenin konumuna göre olur. Sayfa yüklendikten sonra bunu güncellemek istiyorsanız, javascript - clientX ve clientY komutlarını kullanmak iyi bir başlangıç
Abraham Brookes
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.