ipsace i tiskace

roj.bloguje.czesky!

24.01.2006

Posicování v kombinovanych jednotkách

Rubrika tiskace
Známka 0 (0)
Možná jste na to taky už někdy narazili. Potřebujete naposicovat nějaký prvek na stránce částečně v absolutních, částečně relativních jednotkách. Ono to jde!

Typickým příkladem je, chcete-li objekt umístit pod pevný obrázek, pod nímž je ještě menu. Nejlépe to uvidíte zde na blogu, na kulaťoučkém stylu. Vlevo je sloupec, který je absolutně posicovaný. Absolutní posicování je použito proto, aby mohl obsah tohoto sloupce být až na fysickém konci souboru, a načetl se tak až naposled, hlavní obsah se načte nejdříve.

Tento sloupec má id="navigace", bloky v něm jsou řazeny pod sebou normálním tokem sloupce. Posledním blokem ve sloupci je blok Archivy. Možná se mě zeptáte, proč jsem nepoužil plovoucí bloky? Protože kdybych udělal menu plovoucí, muselo by se načítat jako prvni, kdybych použil plovoucí hlavní obsah, otřásl bych se hnusem nad tou prasárnou, je víc důvodů, proč. Jeden z nich je ten, že stránka by končila vysoko nad jeho koncem. Prostě ne.

Takže jediné řešení je absolutně posicovaný sloupec. Ten ale končí archívy. A jak mám pod tento sloupec ještě něco umístit (navig2), aby mezera nad tím byla "tak akorát"? Problém totiž nastává, pokud si uživatelka změní velikost písma. Výška levého sloupce "navigace" se tím mění. Takže nelze použít absolutní jednotky.

Zkusíme tedy jednotky relativní, závisející na velikosti písma, čili em. (Zobrazte si zdrojový kód toho "em"!) Po několikerém zvětšení a zmenšení písma zjistíte, že sladká štěrbinka se rozšiřuje do extrémních hodnot, pokud písmo zvětšíte. Při zmenšení písma se sevře jako kleště.

Důvodem je to, že dolní konec bloku nad štěrbinou se nepohybuje přímo úměrně velikosti písma, ale je posunut o určitou konstantu. Ta je způsobena neměnným obrázkem nahoře a všemi paddingy a marginy uvnitř sloupce, které jsou zadány v absolutních jednotkách.

Potřebovali bychom něco jako toto: navig2 {position: absolute; top: 60em + 400px:} Jenže takový zápis je nepřípustný.

Řešení je překvapive jednoduché a možná jsem zase "objevil ameriku", protože to všichni dávno používáte. Ale opakování je matka moudrosti:
Použijeme navíc jeden obalový div, do kterého náš objekt umístíme. Obalový div (zde "nav2ex") má absolutní posicování, které je rovno součtu všech pixelových marginů a paddingů plus výška horního obrázku.
Dovnitř tohoto divu absolutně naposicujeme původní objekt v relativních souřadnicích em, odpovídajících textu.

Tedy součet hodnot jednoho prvku jsme nahradili dvěma prvky, každý s jedním sčítancem. Jak prosté, milý Watsone!

Zajímavé je, že zde nevznikly žádné problémy se sklem. Ale jelikož se jedná o všechny objekty absolutně posicované, stačilo by si pohrát se z-indexem

Vážení webmistři, kteří tyhle finty znáte už od školky, přestaňte se blahosklonně usmívat. Naopak, enjoy!

roj, 24.01.2006, 2:55:00, trvalý odkaz,

Komentáře (18)

Varování:
Budu zde nechávat jen komentáře, které se mi líbí. Demokracie je sen. Nechte si o ní zdát :-)
1 odkazy von banhoff WWW 24.01.2006, 06:39:28
už jsem si toho všimnul dřív, ale teď po přidání Enimena je to vidět ještě líp, proč jsou v Odkazech některé boldem a některé (dgx a enimen) ne? je to feature, chyba nebo chyba vydávaná za feature (tzv. MS newspeak)?
2 Roj 24.01.2006, 09:46:58
To je tajne sledovani uzivatelek. O tobe treba ted uz bezpecne vim, ze chodis na la trínu a k enimenovi. :-) Staci letmy pohled na monitor kterekoliv uzivatelky a su bleskurychle doma.

Kategorisoval bych to jako vlastnost vydavanou za chybu :-)
3 matejcik WWW 24.01.2006, 11:14:11
jen bych možná upozornil na skutečnost, že v kulaťoučkém stylu se logo validity stydlivě schovává za vibrátory.
ačkoliv ty jsou poloprůhledné, takže je to možná taky fíčura.
4 matejcik WWW 24.01.2006, 11:15:05
se omlouvám ... logo validity se stydlivě schovává za cokoliv co se mu zrovna připlete do cesty. zdá se, že je zarovnáno s formou na přidání komentáře nebo tak něco
5 logo validity Roj 24.01.2006, 11:48:30
je moji nejvetsi chloubou a musi byt presentovano v urovni oci komentatorky :-)
6 SuE 24.01.2006, 11:59:17
kdepak, logo validity je marketingová fičura na malověrné, kteří si na něho chcou kliknout - a lup, hned je tam reklama :-)
7 Roj 24.01.2006, 12:05:00
Sue, a nevymejslis si? :-))) Je to skoro filosoficky problem. Nikdy neodhadnes, kde to bude, az to postnes :-)
8 dgx 24.01.2006, 12:54:50
Docela chytré řešení, i když nerozumím, proč prostě Archívy nejsou jen další chlívek v řadě, jako třeba Aktivní styl. Pozicování by odpadlo.

Proč se ti nelíbí metoda plovoucích bloků k tomu, abys přehodil v kódu části, co budou na začátku a co na konci?
9 roj 24.01.2006, 14:16:12
[8] Ty hlavne neprosvihni pokracovani "vypravy do vesmiru".
Odpovim za chvili spotem :-)
10 dgx 24.01.2006, 14:29:35
[9] netřeba tak kvaltovat, odpověz klidně i bez potu
11 Roj 24.01.2006, 15:02:27
Nejvic se spocuju, kdyz se snazim prijit na bezchybne sklonovani slova dgx. Ale nejak jsem se s tim popral :-)
12 dgx 24.01.2006, 15:38:09
netřeba v tom hledat nějakou složitost, dle ÚJČ se DGX skloňuje podle vzoru BMW.

Třeba: Posilněn LSD řítil jsem se s DGX v BMW s SPZ 3B6 5229 rychlostí 280 km/h. Jasné, stručné, výstižné. Připomíná to assembler. A to mají programátoři rádi.
13 Arthur Dent 24.01.2006, 15:41:36
[12] Zcela zjevně zapomínáš na směrnici EU 215/225a-IV, kde je napsáno, jak se smí vyrábět paštika z husích jater, kolik hodin může být osmdesátikilogramový Portugalec na slunci během jedné směny a jak se skloňuje DGX.
14 dgx 24.01.2006, 16:01:33
[13] myslíš direktivu EU 215/225a-IV, která říká, že bude-li důstojník přistižen, jak očichává sedlo rotopedu v dámské tělocvičně, bude propuštěn bez soudu? To skutečně nevím, jak souvisí se mnou :~;

Je mi vždycky líto, tak Rojovi ty odborné diskuze zvrtneme...
15 Roj 24.01.2006, 16:32:05
[12] Vem si THC a pojede ti to rychlejc, kolego ministre :-)

Nepodcenujte to! Kazdou chvili vyjde dalsi dil vesmirne cesty a ja to bez DGX nenajdu!

Ja a mate tam ten spot, cekal jsem, az dohraje Ljubicic :-)
16 rony 24.01.2006, 18:04:01
[13] arthur zavadzas zavadzajucimi spravami o smerniciach EU. Na vymenovane zalezitosti vyslo sedem smernic! Prosim o opravu!
17 SuE 24.01.2006, 19:53:37
Roju, tož to je podfuck! odpoledňa to tam bylo, ty tvoje podezřelé lejúty (místní valašský výraz pro layout, značně rozšířený hlavně mezi pasekáři) sú čím dál podezřelejší
18 ergo 25.01.2006, 21:35:41
ghe. to hrabání sněhu mě bavilo víc:D

Přidání komentáře...

zde vpište
bloguje.cz
Získejte Seamonkey!
Valid XHTML 1.0 Strict