ipsace i tiskace

roj.bloguje.czesky!

2.11.2005

Skrz sklo vidíš, ale neklikneš

Rubrika tiskace
Známka 2 (1)
Tento spot navazuje na předchozí. Jednak už vím, jak je to s tou pravděpodobností, jednak vás seznámím s geniálním stylařským trikem, který jsem pracovně nazval jezevčík. Pozor, hardcore CSS. Velmi hard a velmi core.

Na úvahu o možném desetiprocentním předpokladu se mi ozval Honza Hučín s velmi podrobným vysvětlujícím mejlem. Vyplývá z něj, že můj miniprůzkum nic nepotvrdil ani nevyvrátil, že podíl "zahradníků" může ležet mezi 0 až 22%, Přičemž pravděpodobost se vzrůstajícím podílem klesá.

Protože se Honza chystá o statistice psát na svém blogu seriálek, nebudu zde uvádět podrobný postup, jak se k těm číslům dospělo. Přečteme si snad brzo u něj. Statistika vůbec nemusí být nudná!

A teď o webdesignu

Věčný kverulant Misha mi vmetl do tváře, že na hlavní stránce zahrady (klik!)tohoto stylu je velmi nepohodlné najít odkaz na komentáře. Protože pokud je příspěvek (na indexu!) zobrazen celý, je nutné se vrátit nahoru doprava, kde je ten odkaz nenápadně ukryt.

Na rozdíl od jiných připomínek mě tato velice trápila, protože jsem se za ni moc styděl. Odporuje totiž jedné ze zásad přístupnosti nebo použitelnosti, nevím přesně které, ale to je fuk. Prostě jsem věděl, že s tím musím něco dělat.

Odbočka k nadpisu spotu

Jiný občasný kverulant, Bin. Ládin, měl zase problémy vstoupit do textarey základníhotohoto stylu. Prostě na ni klikl, a cursor se tam nepřesunul.

Přičinou byla ikona "XHTML W3C" vedle vlevo od textarey. Je totiž obalena divem, což je blokový prvek. Tento prvek byl relativně naposicován o 90px výše, aby byl vedle pole pro vkládání textu komentáře, což je hezčí.

Přitom jsem zapomněl, že blokové prvky mají defaultní šířku 100% svého omezujícího bloku. Ačkoliv v bloku nebylo nic, kromě té ikony, ve skutečnosti se táhl nad celou textareou až k pravému okraji stránky. Vidět skrz něj bylo, ale prokliknout se dolů nešlo ani při vynaložení maximální síly, co myš snesla.

Když jsem po mnoha minutách vztekání se a dupání přišel na příčinu, hned se mi vybavil obrázek z Pixyho knížky, kde jsou nakresleny vrstvy dokumentu jako průhledné fólie. Jo, fólie... pěkně pevná skla to jsou! Fólii proklikneš, sklo ani náhodou.
Octranění chyby bylo triviální. Divu obalujícímu ikonu se nastavila šířka ikony: width: 90px;

Tato odbočka může být poučná sama o sobě, je však klíčová pro další zápletku. Neméně důležitou poučkou je to, že absolutně posicované prvky leží vždy ve vyšší vrstvě, než je normální tok dokumentu, a žádný z-index s tím nic nenadělá.

Znásilnění struktury dokumentu

V původní versi zahrady byla celá patička spotu přesunuta do boxu vpravo nahoře. Využil se k tomu plovoucí div s názvem rubriky, který se udělal dostatečně velký, aby se do něj celá patička vešla. Ta se tam potom absolutně napozicovala, takže údaje "autor", "čas" vložení spotu, "tvralý odkaz" i odkaz na "komentáře" byly pohromaďě s názvem rubriky a byly obtékány normálním textem spotu, chovaly se jako plovoucí blok.

Jezevčík (zool.)
Kříženec hada a psa. Rozmnožuje se prý pomocí kopulace zády k sobě.
Jezevčík (CSS)
Převratná metoda posicování neposicovatelných prvků.

Jak však z této už dost znásilněné patičky vyjmout odkaz na komentáře a umístit ho na konec spotu, který má zcela nepředvídatelnou délku i šířku?

Užuž jsem myslel, že kapituluju a zasáhnu do šablony, abych vytvořil ještě jeden odkaz, který nebude v patičce, ale mimo ni, a který prostě sám přirozeně zakončí celý spot. Ale to by byla prohra, to už bych mohl klidně skončit s blogem :-)

Takže jsem se vydal na tenký led, přesněji řečeno na tlusté sklo.

Jezevčík!!!

Co kdybych patičku přetáhl přes celý rodičovský blok a v ní jednotlivé údaje nějak naposicoval? Vždyť stačí zadat:

.prispevek-pata {width: 100%; height: 100%; position:absolute; top:0; left:0;}

Tím vznikne nad celým spotem skleněná plocha, souřadný systém, na který můžeme všechny prvky uvnitř celé patičky libovolně umisťovat. Myšlenka krásná, než zjistíme, že pod sklem bude spotu pěkně dusno, nepůjde kliknout nejen na eventuální prvky formuláře, ale ani na odkazy. A bez odkazů není blogu.

Dobře, tak nechám výšku, ale šířku zúžím na šířku toho boxíku vpravo nahoře a naposicuji doprava.

.prispevek-pata {width: 9em; height: 100%; position:absolute; top:0; right:0;}

To už použitelné je, stále ale máme poměrně široký pás u pravého okraje, který je pod sklem. Musel by se tam pod tím udělat padding, tím ale úplně přijdeme o efekt obtékání toho horního boxíku.

A co kdybychom to zúžili na nějakou hodnotu, která už nebude vadit? Třeba 30px? Do třiceti pixelů se mi sice nic nevejde umístit, ale proč by mělo? Tak to nechám přečuhovat doleva! Když jsem zjistil, jak je to snadné, musím se o to podělit. Obrázek růžičky, který byl původně pozadím celé patičky, se přemístí do jednoho z těch přesahujících prvků, který se absolutně naposicuje.

Samotné přesahování se u neposicovaných prvků vytvoří záporným levým marginem, u posicovaných přímo souřadnicí right. Pak už stačilo si s tím hodinku hrát, než jsem nalezl správné hodnoty, zkusit všechny velikosti oken mozilly, zmenšit písmo o dva stupně, zvětšit písmo o čtyři stupně a nastavit kompromisy. Drtivá většina rozměrů je odvozena od velikosti písma.

Kdo se nechce hrabat ve stylu, tady má jezevčíka ve vitrínce:

.prispevek-pata {position:absolute; top:0; right:2px; width: 30px; height: 100%; padding: 1.7em 10px 0 0;} .prispevek-pata span.jmeno {display:block; font-size:110%; width: 9.9em; background: url("ruze1.png") no-repeat top right; height: 65px; position:absolute; top:5.9em; right:0; padding-top: 0.7em;} .prispevek-pata span.cas {display:block; margin:7.4em 0 2px -7.2em; width:4em;} .prispevek-pata span.permalink {display:block; margin: 3px 0 4px -7.2em;} .prispevek-pata span.komentare {position: absolute; bottom:2em; right:9.8em; font-size:130%; width: 190px; font-weight:bold; background:#463 url(zahr_kom.png) repeat-y; text-align:right; padding: 1px 1.5em;}

Určitě by se jezevčík dal zúžit třeba na jediný pixel, ale takhle to bohatě stačí a nová optimalisace hodnot by mě asi zabila. Zábavnější je vymýšlet pozadíčka a kytičky.

Zahrádka nyní už funguje docela použitelně. Pokud máte browser, který to přežije, zkuste si to, dost se to zlepšilo.

Závěr

Nejspíš to není "objevení ameriky", možná je tento postup běžný. Nevím, jsem jen lama, ale aspoň jsem tomu dal roztomilý název :-)

Ale spíš si myslím, že každý normální webmistr by prostě přizpůsobil kód požadovanému stylu, proto nebyl nikdy nucen přemýšlet o takovýchto blbinách. Před pár lety by tento postup možná mohl sloužit jako příklad toho, že CSS zvládne všechno. Dneska to nikoho nevzruší. Za pár let to možná zvládnou i všechny browsery. :-)

roj, 2.11.2005, 23:33:00, trvalý odkaz,

Komentáře (12)

Varování:
Budu zde nechávat jen komentáře, které se mi líbí. Demokracie je sen. Nechte si o ní zdát :-)
1 Misha 02.11.2005, 23:48:10
to si jen myslíš, že nemám blog :) Jenom prostě není mnou podepsán :)
2 jj von banhoff WWW 03.11.2005, 08:18:50
ted to vypada uz lip, predtim se mi to zdalo malilinko chaoticke
3 Blog? Roj 03.11.2005, 09:36:08
Misho, tak aspon naznac ;-)
VFB, ja zas preferuju lebensraum :-)
4 Misha 03.11.2005, 10:52:48
bohužel, nerath bych se dostal do stretu zajmu, takze sem si to zakazal :)
5 dgx 03.11.2005, 17:29:37
Ty bys mohl psát učebnice CSS, dobrodružné jako detektivky, ty by se četly jedním dechem. A kupovaly jedním kupem. Až do konce by člověk netušil, jak to nakonec dopadne!
6 dgx Roj 03.11.2005, 18:27:59
nekdy mam mrazivej pocit, ze bychom mohli psat a podepisovat si to psani inversne, tedy Roj vs. dgx. A nikdo by nic nepoznal! A raci na to ani nemyslim :-)
7 Misha 03.11.2005, 19:19:51
Hulan by to poznal :)
8 > misha von banhoff WWW 03.11.2005, 19:28:56
neber jméno "toho jehož jméno nevyslovujeme" nadarano!
9 Misha 03.11.2005, 20:26:00
nadarano? nad ráno? nadráno? n-áda-ráno? na dar, ano? :-)
10 toto je nadpis mého komentáře dgx 03.11.2005, 23:14:15
A je možné používat přes myčku Ulhán? Nebo Vladimír Iljič Ulhanov?

11 dgx, Roj 03.11.2005, 23:30:02
heeej, mas tam 404! Co z toho zas vyleze za kulisarnu? :-)
12 jejda jejda von banhoff WWW 04.11.2005, 07:57:44
mělo to být nadarmo a jestli to "ten jehož jméno se nevyslovuje" najde, tak tohle nám zadarmo neprojde!

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

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