Dastardly
Legacy Member
tiens, dat iedereen zich afvraagt waar die position:relatives vandaan komen. standaard gaat uw browser die altijd als relative positioneren. de reden dat je dat expliciet vermeld is wegens 'bugs' in bepaalde browsers.
neem volgende divs:
wrapper is uw gecentreerde div die ge gebruikt om heel uw site te centreren. content is de wrapper voor uw daadwerkelijke inhoud. om een of andere reden ga je de div 'menu' absoluut willen positioneren. als je volgende stijl gebruikt:
ga je nu als resultaat hebben dat je menu ergens op 50px van de bovenkant en 50px van de linkerkant van je body staat. niet echt het verwachte resultaat aangezien je je content gecentreerd hebt met uw wrapper en eventueel lager hebt laten beginnen met uw 'content' div. door uw content div expliciet de volgende style te geven:
gaat er uiteraard niks veranderen aan de positionering van uw div 'content'. wat er wel gaat gebeuren is dat uw div 'menu' nu op 50px van de bovenkant en 50px van de linkerkant van uw div 'content' staat.
die explicitiet op relative zetten zorgt er voor dat de positionering van onderliggende elementen correct is. ben het nu even kwijt of het zo in alle browsers is of enkel in IE (en misschien enkel in de oudere).
hoop dat dit het een beetje verklaard. is hetzelfde als met z-indexen. in sommige browsers moet je het parent item een hogere z-index geven om er voor te zorgen dat de z-index van zijn kinderen in orde is. meer uitleg daarover hier.
het kan dus zeker geen kwaad om het overal te doen (is immers standaard), maar ik doe het enkel waar nodig om de css toch zo leesbaar mogelijk te houden.
neem volgende divs:
HTML:
<div id="wrapper">
<div id="content">
<div id="menu">
</div>
</div>
</div>
wrapper is uw gecentreerde div die ge gebruikt om heel uw site te centreren. content is de wrapper voor uw daadwerkelijke inhoud. om een of andere reden ga je de div 'menu' absoluut willen positioneren. als je volgende stijl gebruikt:
Code:
#menu { position:absolute; top:50px; left:50px; }
ga je nu als resultaat hebben dat je menu ergens op 50px van de bovenkant en 50px van de linkerkant van je body staat. niet echt het verwachte resultaat aangezien je je content gecentreerd hebt met uw wrapper en eventueel lager hebt laten beginnen met uw 'content' div. door uw content div expliciet de volgende style te geven:
Code:
#content{ position:relative; }
gaat er uiteraard niks veranderen aan de positionering van uw div 'content'. wat er wel gaat gebeuren is dat uw div 'menu' nu op 50px van de bovenkant en 50px van de linkerkant van uw div 'content' staat.
die explicitiet op relative zetten zorgt er voor dat de positionering van onderliggende elementen correct is. ben het nu even kwijt of het zo in alle browsers is of enkel in IE (en misschien enkel in de oudere).
hoop dat dit het een beetje verklaard. is hetzelfde als met z-indexen. in sommige browsers moet je het parent item een hogere z-index geven om er voor te zorgen dat de z-index van zijn kinderen in orde is. meer uitleg daarover hier.
het kan dus zeker geen kwaad om het overal te doen (is immers standaard), maar ik doe het enkel waar nodig om de css toch zo leesbaar mogelijk te houden.
Enkel je parent van je child dat je absoluut wilt positioneren moet je relative maken, en niet ook diens parent en diens parent etc.
Dat mist uiteraard heel het punt van 'relative' dan aangezien de left, right, top, bottom values standaard op auto staan en bij static geen effect hebben.