100% magasság befogadó elemhez képest
Meg lehet valahogy oldani CSS-el, hogy egy div magassága mindig akkora legyen, mint az őt befogadó div magassága, akkor is, ha nem ismerjük a befogadó elem magasságát?
Mert height:100% csak akkor működik, ha a befogadó elemnek megvan határozva egy height érték.
■ Mert height:100% csak akkor működik, ha a befogadó elemnek megvan határozva egy height érték.
Nem.
IE-ben: *height: expression(parentNode.offsetHeight + 'px');
(CSS-sel)
Mit szeretnél elérni?
Példa
A text azonosítóju dobozban ismeretlen magasságú tartalom van. Azt szeretném, hogy a box tartalmú doboz mindig olyan magas legyen, mint a másik (másképp fogalmazva, mindig töltse ki teljesen (függőlegesen) a container azonosítójú befogadó dobozt).
HTML:
weblabor hiba
Nahát, a kódszinező mire föl írta oda a float: right sorba kétszer, hogy right? Megnéztem, a szerkesztőmben egyszer szerepel.
Az előző hozzászólásomba is a program tette a helyesírási hibákat? :-)
[on]
CSS nincs
Tudtommal css megoldás nincs itt. Van persze kerülő, amivel lehet trükközni (min-height), vagy ugye a vizuális összeolvasztás, de ha mindenáron az egyik értékből akarod a másikat számolni, akkor marad a javascript.
Pl.:
<script type="text/javascript">
t = document.getElementById('text').offsetHeight;
document.getElementById('box').style.height=t+'px';
</script>
De van.
Olvastam
Tekintsd úgy, hogy a megcsillagozott sor nincs ott.
Re
Edit:
Ehhh! Mire gépeltem Janonak egy oldalt, azután vettem észre, hogy a válaszodban nem csak az IE hack szerepel, hanem egy turpisság is, miszerint a container relatív, a box pedig abszolút, és lám ez tényleg elég Firefoxnak is. Azért ezt külön is megemlíthetted volna :-) Köszi.
Viszon abban az esetben nem jó, mikor a box tartalma lesz magasabb, mint a szöveg tartalom, ekkor az abszolút miatt kifolyik a container-ből.
height:auto
éppen ezért nem 100%-kell, hanem auto és a top,bottom kinullázása, azaz
a másik hogy a
üdv Csaba
ui: ie6 meg monnyon le :)
„éppen ezért nem 100%-kell, hanem auto és a top,bottom...
Egyrészt kösz, nem is gondoltam volna, hogy ilyen méretezős logikát csempésztek az abszolútokba (idevágó rész, ha valakit érdekel).
Másrészt ez a problémán nem sokat változtat, a box továbbra sem tolja a konténert. Ez a dolog arról szól, hogy az abszolút elemek szélességét és magasságát kétféleképp lehet állítani: a width/height értékekkel, amelyekre rárakódnak a külső rétegek (top/left/right/bottom, border, margin, padding), valamint a top/bottom és a left/right értékek együttes állításával, amivel a konténerhez képesti offsetszélességet/magasságot lehet kicsalni. Kicsit hasonló trükközés ez, mint (a nem abszolút elemeknél) az auto-marginnal való vízszintes középre állítás.
A clear divekre vonatkozó megjegyzés is hasznos, de nekem kicsit erősnek tűnik, hogy teljesen negligálhatók.
fontos az utóirat: ie6-ban nem megy
ie6
Csaba
-.
ui: nálunk (liligo.fr) előző hónapban ie7 végre leelőzte elődjét, ha jól emlékszem 5%-al
Nálunk még nem nagyon, sajnos.
A clear divet tényleg kiváltja a konténer overflow:auto (hidden is), de nem értem, miért. Ha valaki erre a referenciában hivatkozást tudna adni, megköszönném. De egyébként a clear div ie6 workaround is, és inkább egy clear div, mint egy css hack.
ref
http://annevankesteren.nl/2005/03/clearing-floats
http://www.456bereastreet.com/archive/200502/simple_clearing_of_floats/
üdv Csaba
Úgy értem, a w3c referenciában...
A 456-blogon tárgyalják a kérdést, valaki rábukkant:
http://www.456bereastreet.com/archive/200502/simple_clearing_of_floats/#comment5
Bár én nem egészen értem, hogy most itt a 10.6.6 vagy a 10.6.7 utolsó paragrafusa a releváns... na mindegy :o)
Meg ha a specifikáció ezt a lehetőséget kínálja, akkor miért írja a sitepoint szerzője, hogy
„The Markup Method: The first and W3C-recommended approach is a little ugly - extra markup.”
Még pontosabban?
Ha dizájn eleme akkor adjad meg háttérnek a containernek és a text-et told balmargóval annyival beljebb.
Re
De beszélhetünk az éppen aktuális, konkrét problémáról is:
Az előbbi példakód az alap (a háttérszínek csak a láthatóság kedvéért szerepeltek a kódban, amúgy most lényegtelenek).
A befogadó konténerünk (container) adja meg az egész hátterét és keretét.
A bal dobozban (box) egy menü van, a jobb dobozban (text) meg az aktuális szöveg. Mind a menü, mind a szöveg változó, nincs fix magasságuk, csak szélességük.
Ez idáig működött, a gond az, hogy a designer egy új elemmel bővítette a dolgot: a befogadó konténer bal alsó sarkához igazítva meg kell jeleníteni egy képet. Ha ezt a képet a container háttérképeként állítanám be, akkor ha a menü magasabb a szövegtartalomnál, akkor a háttérkép a menü alá csúszna.
Az egyik elgondolásom az volt, hogy a képet berakom a container-be, a legvégére. Ezzel az a baj, hogy így a container és a text doboz szélei közt a kép magasságával egyező hézag lesz.
A másik elgondolás az volt, hogy a képet a box-ba teszem a menü után, bottom:0 tulajdonsággal és a box magassága mindig követné a text magasságát (ez lett volna a height:100%). Itt a Jano féle megoldás csak addig jó, amíg a text magasabb, mint a box.
Menünek alsó margó vagy padding
Ha nem dizján elem lenne, hanem tartalmi akkor pozicionálással lehetne megoldani (ennek abszolút, containernek meg relative) és ugyanógy menünek alsó padding vagy alsó margó.
Alapvetően mindenféle pozicionálás megoldható...
Amit említettél, hogyha a box tolja a konténert... Ez esetben egy kétoszlopos layoutról van szó, ahol mindkét oszlop tol, egyúttal mindkettő lenyúlik (ha a másik tol). Ezt a viselkedést nem lehet CSS-sel megoldani. Ilyenkor jönnek be olyan technikák, hogy az egyik oszlop hátterét kirakod a konténernek képként stb., de ugye ezeknek megvan a maguk limitációi, amiket meg jellemzően wrapperekkel lehet áthidalni.
Nem értem, a bal alsó sarkos képpel mi a probléma. Teljesen szemantikusan és egyértelműen oldható meg; nem a konténer háttérképeként. A konténerbe kell raknod akárhova, abszolút elemként, bottom-mal és left-tel.
Re
Ha kinézeti elem
(Ha ez a kép pl. linkelhető akkor jogos az új HTML elem. Illetve ha már nincs több elemed amit felhasználhatsz akkor persze kénytelen vagy új HTML elemet berakni a CSS korlátai miatt.)
Így van, csak annyi megjegyzéseim volnának, hogy az eleve...
Gyakori dolog, hogy a dizájnnak eltérő, gazdagabb a struktúrája, mint a tartalomnak, ilyenkor jönnek az üres divek amikkel nekem – sokakkal ellentétben – semmi bajom sincs.
re
Meg egy-két kép, annak ellenére hogy design elem, azért, mert fontos eleme az oldalnak és a fájl neve, alt, title szövege is fontos, pl. SEO szempontból is. De lényegében igyekszek mindent css-be tenni.
kész
De megérte, mert arról fogalmam nem volt, hogy a height 100%-hoz abszolút pozicció is kell.
100%