Mutlak konum içinde mutlak konumlandırma


92

3 divelementim var.

1. divdaha büyük (sarma) veposition:relative;

2. divmutlak olarak 1. divgöreceli konumlandırmaya konumlandırılmıştır (ve 1. sıradadır div)

3. div, 2. içinde bulunur divve ayrıca mutlak konumlandırmaya sahiptir.

<div id="1st">
   <div id="2nd">
     <div id="3rd"></div>
   </div>
</div>

Neden 3. divpozisyon 2. için mutlaktır div(ki bu da 1. pozisyon için mutlaktır div) ve divgöreceli pozisyonu olan 1. pozisyon için değil ?

Çünkü 3. divmutlak konumlandırılmış 2. mutlak konumlandırmadır div.


Bu gerçekten aradığım bir şey ve sorularınıza verilen bu cevaplar gözlerimi açtı: \.
Benjamin

mutlak: Öğe, ilk konumlandırılmış (statik değil) üst öğesine göre konumlandırıldı
Oswaldo Zapata

Yanıtlar:


95

Çünkü position: absolutetıpkı çocuklar için göreceli konumu sıfırlar position: relative.

Bunun etrafından dolaşmanın bir yolu yok - eğer üçüncünün divkesinlikle birincisine göre konumlandırılmasını istiyorsanız, onu ilkinin çocuğu yapmanız gerekecek.


Yani temelde mutlak konum, mutlak konumlandırılmış çocuğu için göreceli konum haline gelir?
pufos

@pufos tür. 0px / 0pxÇocuklar için pozisyon ile sıfırlamayı alırposition: absolute
Pekka

25
@pufos Sanırım biraz kafa karıştırıyorsun. position:relativeöğenin mevcut konumundan göreceli olarak (üst, sağ, alt sol kullanılarak) konumlandırılacağı anlamına gelir. position: absolutevasıtaların tarayıcılar pencere veya ilk ebeveyn göre yerleştirilmiş olacaktır position: absoluteya da position: relative.
seler

Buna çevrimiçi olarak bir referans paylaşabilir misiniz? Çünkü bulamadım ... Ve ... Çok teşekkürler
pufos

2
@pufos çok temel referans burada: w3.org/TR/CSS2/visuren.html#choose-position
Pekka

27

Her ikisi de position:relativeve position:absolutekapsayıcı öğeleri konumlandırma ataları olarak oluşturun.

Div 3'ün div 1'e göre konumlandırılmasına ihtiyacınız varsa, onu div 1'in doğrudan alt öğesi yapın.

Unutmayın ki position: relativeöğenin doğal konumuna göre konumlandırıldığı ve position: absoluteöğenin birinci position:relativeveya position:absoluteatasına göre konumlandırıldığı anlamına gelir .


3. div'in mutlak konumlandırılmış
div'e

Bu bölümdeki mutlak konumlandırma: w3.org/TR/CSS21/visuren.html#comp-abspos
Mike Tunnicliffe

@MikeTunnicliffe mutlak, öğenin ilk konumuna göre konumlandırıldığı anlamına gelir: ayrıca sabit
Trần Kim Dự

15

Statik konum : statik konum, herhangi bir konum belirtilmemişse HTML dosyanızın normal akışında bir öğenin görüneceği varsayılan yoldur.

Önemli: top, right, bottomve leftözellikleri YOK ETKİSİ ÜZERİNE BİR statik ELEMENT KONUMLANDIRILMIŞTIR VAR.

Göreli konum : bir öğeyi göreli değerle konumlandırmak, öğeyi (ve kapladığı alanı) HTML dosyanızın normal akışında tutar.

Daha sonra özelliklerini kullanarak bazı miktarda eleman taşıyabilirsiniz left, right, topve bottom. Ancak bu, öğenin sayfadaki diğer öğelerle üst üste gelmesine neden olabilir — bu, istediğiniz etki olabilir veya olmayabilir.

Göreceli olarak konumlandırılmış bir eleman bulunduğu yerden hareket edebilir, ancak kapladığı alan kalır.

Mutlak konum : mutlak konum değerini bir öğeye uygulamak, onu normal akıştan çıkarır. Mutlak konumlandırılmış öğeyi taşıdığınızda, referans noktası, statik dışında bir konumu bildirilmiş en yakın içeren öğesinin üstü / soludur - buna en yakın konumlandırma bağlamı da denir. Dolayısıyla, statik dışında bir konuma sahip içeren bir öğe yoksa, gövde öğesinin sol üst köşesine konumlandırılacaktır.

Sizin durumunuzda 3. en yakın konteynır 2.'dir.


4

Yine başka bir açıklayıcı cevap.

Mevcut senaryonuz şudur:

#my-parent {position: absolute}
#my-parent .my_child {position: absolute}

Ve onunla biraz mücadele ediyorsun.

HTML'yi değiştirebiliyorsanız, şunu yapmanız yeterlidir:

#my-parent {position: absolute}
#my-parent .my-wrapper {position: relative}        /* Since you've added the wrapper in HTML */
#my-parent .my-wrapper .my-child {position: absolute}  /* Now you can play with it */

2
my-wrapper muhtemelen .my-wrapper olmalıdır
jdavid.net

Bu yaklaşım harika, sorunumu neden çözdüğünü hâlâ bilmiyorum. Benim sorunum, başka bir nedenden ötürü üçüncü unsurumun birinci unsurun çocuğu olmasına izin veremememdir.
windmaomao

2

3 nedeni divelemanı kesinlikle 2 konumlandırılmış divCSS Spec açıkladığı gibi çünkü eleman olduğunu burada "üst" eleman (daha iyi şunları söyledi: içerikli blok), çünkü bir bir kesinlikle konumlandırılmış elemanı değildir , ille onun hemen üst öğe ancak daha ziyade hemen konumlandırılmış öğesi, yani konumu herhangi bir şeye ayarlanmış herhangi bir öğe, staticörneğinposition: relative/absolute/fixed/sticky;

Bu nedenle, kodunuzda mümkün olduğunda, 3. divöğenin kesinlikle 1. öğeye göre konumlandırılmasını divistiyorsanız, 2. divöğenizi position: static;varsayılan değeri olarak yapmalısınız (veya yalnızca position: ...2. öğenizin kural kümesindeki herhangi bir bildirimi kaldırmalısınız div) .

Yukarıdaki 1 yapacak içeren blok mutlak konumlandırılmış 3rd 2'nci görmezden gelerek bu konumlandırma amaçlı.divdivdiv

Umarım yardımcı olur.


0

Birinin hala buna cevap araması durumunda.

Bu sonucu clear: both;, çocuğu sıfırlayan ve kendi absolutekonumlandırmasını kullanmasına izin veren ilk kesinlikle konumlandırılmış div'e bir stil ekleyerek elde etmeyi başardım .

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.