ipsace i tiskace

roj.bloguje.czesky!

30.12.2005

Optimalisováno pro gecko?

Rubrika tiskace
Známka 0 (0)
Nelekněte se tiskacího písma, bude to soft-core. Na závěr pak uvidíte obrázek nejhustšího blogu na světě, což stojí za to, hlavně na Silvestra.

Před více než rokem jsem na jeden firemní web umístil do patičky větu: "Optimalisováno pro firefox". Ten web totiž vypadal ve firefoxu a mozille nejlépe, v jiných prohlížečích hůře, ale ne zas tak hrozně, jako tento blog v IE bez nastaveneho stylu pro IE.

Je zajímavé, jak inkriminovaná věta působí na některé webdesignery coby červený hadr na býka. Zmínil jsem se o tom webu nějakým lidem z czilly.cz a byl jsem zahlušen sprškou nadávek, co že si to vlastně dovoluju.

Argumenty zněly trochu ve smyslu "Když je stránka validní, zobrazí se správně všude, ve všech browserech, které umějí zobrazovat web, tedy automaticky i v mozille." Tento argument bude níže rozmetán v prach, pročež jsem tu větu oblíbil a slíbil si, že ji budu cpát všude, kde zanechám stopy svých nečistých kodérských pařátů.

Před pár dny jsem četl mnohem zásadnější argument. Arthur Dent tu větu přeložil do srozumitelnější podoby: "Jsme neschopní napsat web takový, aby vypadal všude dobře, tak vám napíšeme, v čem na něj máte koukat..."

Ano, tohle nelze popřít, a být renomovaným webstudiem, asi bych si moc rozmýšlel, jestli tu větu někdy někam napíšu. Ale já nejsem ani reno, ani movaný, proto si můžu dovolit psát pravdu. Zvlášť ve světle posledního zjištění, že ani dvě různá gecka nezobrazí web na jednom OS stejně.

Pokud se mezi Vámi najde nějaký webmistr, guru, který následující problém rozlouskne, nasypu si popel na hlavu. Ale zde nepomůže žádný podtržítkový ani hvězdičkový hack, s tím nehne ani pár volů. Přitom je to triviální věc. Iniciála. Podívejte se na následující obrázky.

iniciála 1.7 iniciála 1.8

Vlevo je začátek tohoto spotu v gecku 1.7, vpravo totéž na stejném poči v gecku 1.8. Všimněte si toho velkého "N" (iniciály). Zatímco vlevo jeho horní hrana skoro "zařezává" s horní hranou prvního řádku, vpravo je asi o 11 px posunuté směrem nahoru.

To posunutí je tak značné, že třetí řádek je vlevo ještě odsazen vpravo vedle iniciály, vpravo už začíná na levém okraji pod iniciálou. To už je poměrně výrazná změna lejoutu stránky, která může být v některých případech smrtící. Troufám si říci, že mnohým z Vás se hrůzou začala plést levá a pravá ruka.

V CSS to vypadá takto:

div.prispevek-perex:first-letter, div.prispevek-perex p:first-child:first-letter {float:left; font-size:350%; margin: -0.1em 0.2em 0 0; font-family: serif;}

Protože v gecku 1.7. bylo písmeno příliš dole, posunul jsem ho nahoru záporným marginem. Zdá se tedy, že staré gecko obsahovalo chybu, kterou nové opravilo. Ale co teď s tím. Ohackovat? Jak? Jediné řešení, které mě napadá, je laborovat s line-height, ale nějak nemám sílu, raději se svěřím Vám, p.t. webmistrům.

Ponaučení

Pokud chcete, aby vám iniciála zařezávala horním krajem, musíte se rozhodnout. Buď to bude optimálně vypadat v gecku 1.7, nebo v gecku 1.8. Nebo uděláte kompromis a nebude to optimálně vypadat nikde. Anebo oželíte všechny vymoženosti moderního webu, a pak budete mít web optimalisovaný pro všechny prohlížeče. Kromě JESPRu, který nic z toho zde popisovaného stejně neumí :-)

Odměna. Hustá.

Asi už jste viděli dost blogů. Asi byly některé DOST coooool. Z nich byly některý i hustý. Ale žádný určitě nebyl takle hustý, jako to, co vám ukážu.

Jedna báječná super bloggerka mi poslala skrýnšot, jak vypadá ipsace v IE pro Mac. Teď jsem se na to podival, a opět mě to skolilo. :-)) Musím to sem dát v plné velikosti, protože to prostě stojí za to. Fakt hustý.

screenshot
ockrolujte si to vodorovně

Tak co, kdo má hustší blog?! Ať vám koně uhánějí tryskem k lepším zítřkům!

roj, 30.12.2005, 0:45:00, trvalý odkaz,

Komentáře (15)

Varování:
Budu zde nechávat jen komentáře, které se mi líbí. Demokracie je sen. Nechte si o ní zdát :-)
1 řetězka 30.12.2005, 08:25:01
a ještě ke všemu mám teď ten screenshot širokej jen asi 80px - to je účel? :))

já když tu byla poprvé, říkala jsem si proč sakra má přes celou stránku formulář na komentáře a v pravo minipísmem ty články, který jsem málem přehlídla?
2 Alka 30.12.2005, 09:02:14
Máš pravdu, Roji, je to ještě strašnější, než jsem si vůbec uměl představit !! :-)
3 Buchtič Mail WWW 30.12.2005, 09:31:53
nemělo by bejt text "scrolujte si to vodorovně" podtím obrázkem? část máš za obrázkem až za obrázkem a část pod obrázkem. Zkus tam vložit za obrázek tag a bude OK :-), ale ten screen je fakt cool!! ... jinak šnekos už mě nepřekvapí v ničem :-)
4 matejcik 30.12.2005, 10:13:26
chmno, a nepomohl by třeba vertical-align u té iniciály? jsem byl rozhodnut to zkoušet, ale editcss se mnou nějak ne a ne spolupracovat, a na náročnější metody jsem líný
5 nechci sejčkovat myf 30.12.2005, 12:25:09
ale zatím mi to přijde že se korektně chová to starší(!) gecko o_O
tuye naprosto stupidní probe : http://eldar.cz/myf/pub/try_gecko_first-letter.html
(ještě tam frknu shoty, ať je to yasné). Asi by to chtělo prosít bugzillu : /
6 Nazdar! 30.12.2005, 14:42:33
Retezko, jestli pres to vsechno dokazes obcas sem zajit a jeste k tomu neco napsat, jsou vsechny teorie o pristupnosti a pouzitelnosti webu vyvraceny a vsichni Spinarove, Prokopove a Pixyove by meli zacit pracovat poctive a rukama :-)

Buchtici, tobe to nezalomilo? Dal jsem tam brejk, ale ten je zakazanej :-) A nekdo mi za nej uz dokonce vynadal :-))

matejciku, vertical-align z me nepochopitelneho duvodu funguje pouze u tabulkovych prvku. Hlava mi to nebere, ale ruce musi :-)

Myfe, pekna prace :-) Ale podle toho mi to pripada, ze jsou to vzajemne se kompensujici chyby. Konqueror je asi jedinej dobrej prohlizec, zacnu to optimalisovat pro nej :-)
7 Roj Roj 30.12.2005, 14:56:30
ja nejsem Nazdar, ja su prepracovany :-)
8 řetězka Mail WWW 30.12.2005, 19:33:58
jojo, občas zajdu, ale čte se to fakt těžko :)) ale když člověk chce, oči udělají pro pána mnohé :)
9 matejcik Mail 02.01.2006, 00:57:05
ej, vykašlu se na to! neodbornou manipulací jsem si tu vysvětlení hezky smazal, takže teď jen ve stručnosti. podrobnosti si buď domyslete, nebo se mě na ně vyptejte ;e)

myfe, ty si přečti 5.12.2 ze specifikace CSS2.1 a uvidíš, že to chování v gecku 1.8 je správně.

roji, ty smaž ty marginy a namísto nich si tam napiš line-height: 0.6em (uhodnuto empiricky jako rozumná hodnota)

co se stalo? .7 se k :first-letteru chová stejně jako ke každému jinému inlinelevel elementu, takže má normálně velký boxík s mezerami nahoře a dole. čili když vyfloatovaně "visí", ještě je tam ta mezera nahoře, takže samotné písmeno je níž než začátek řádky, a musí se nadzvednout záporným marginem.
oproti tomu .8 využívá nabídky css2.1 a udělá si boxík jenom těsně kolem toho písmenka. nejsou tam mezery, a písmeno je samo od sebe tam, kde má být.
proč to line-height řeší? protože .8 si z line-height nic nedělá (boxík je prostě pořád stejně velký jako to písmenko), zatímco .7 to donutí boxík zmenšít (protože už "nepotřebuje" ty mezery nahoře a dole). a zdá se, že 0.6em je tak akorát, aby hranice boxíku byly tvaru písmenka co nejpodobnější.
howgh, a dobrou noc děti
10 WOW! Roj 02.01.2006, 01:04:16
Super! :-)
11 jasani bylo predcasne Roj 02.01.2006, 11:43:00
Teorie dobra, ale nic neresi. Line-height NEMA na umisteni zadny vliv v ani jednom gecku.
Zkusil jsem "position: relative", ale ani to s inicialou nehne v zadnem pripade. Jedine, co na to ma vliv, je margin, a ten je v kazdem gecku jiny.
Ale treba prave konqueror zobrazuje spis jako novejsi gecko, takze jsem to OPTIMALISOVAL pro nej a gecko 1.8.
12 matejcik 02.01.2006, 12:19:40
no to mě to mě ... dyk sem to zkoušel a fungovalo mi to...
...aha, jsem to možná zkoušel v jiným gecku, to by bylo poněkud trapné :e)
13 sem vlastne nenapsal nic co by tu uz nebylo ted myf WWW 02.01.2006, 13:20:17
omg, tahle diskuse je prokletá, taky jsem zrovna přišel o docela rozkecaný příspěvek (nikdy nemačkejte backspace když nejste v textareyi(?) [btw proč se mi tu v ní nedaří myší vlizt na poslední řádek?] )
http://www.w3.org/TR/CSS21/selector.html#first-letter
na to sem mrkal už posledně ale moc chytrej jsem z toho nebyl. není tam, jakej to může mít / má ve skutečnosti display. je tam jenom jaký vlastnoti to může mít, přičemž jak již bylo zmíněno, line-height by mezi ně patřit měla, ale žádné z mých geck to nedává (prostě jí pro FL nepředefinuju). je tam zajímavá věta o tom, že UA mohou "svévolně" měnít line-height tak aby .. no jak to vidíme v novym gecku.
hm, zbytek submissionu je nenávratně pryč. jo a proformálně jsem aktualizoval ten pokusnej stránek ...
14 omylem jsem smazal Roj 02.01.2006, 13:34:17
ten tmavomodry kulatoucky styl. Sice jsem ho sem zase nahral, ale cele styLoviste se tim rozesralo, takze ted tu spousta veci nefunguje. Nevim co s tim, ale problem s inicialou na statickem souboru na mem HD pretrvava. :-)
15 matejcik 02.01.2006, 14:11:30
je to nějaké prokleté.
myfe, jde o konkrétně tohle: To allow UAs to render a typographically correct drop cap or initial cap, the UA may choose a line-height, width and height based on the shape of the letter, unlike for normal elements.
porovnejme s css2: In order to achieve traditional drop caps formatting, user agents may approximate font sizes, for example to align baselines. Also, the glyph outline may be taken into account when formatting.
...vpodstatě nový gecko kopíruje boxíkem tvar písmene, zatímco starý gecko ne.

k updatované testovací stránce - line-height se projeví jen když je ten first-letter nebo span vyfloatovaný. pak se v .8 renderuje span i first-letter přibližně stejně (zatímco v .7 se naopak od sebe odliší)

moje úžasné řešení ovšem nefunguje, staré gecko (ačkoliv by nemělo) tu line-height ignoruje stejně intenzivně jako to nové :e/
poměrně zajímavých výsledků jsem dosáhl s position: absolute, ale v důsledku to asi k ničemu nepovede ... uvidíme

zmiňovaný vertical-align by tomu opravdu pomohl ;e) bohužel ne dost - aby to fungovalo, nesmělo by to floatovat, takže by to nebylo obtékané, a tak dále

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

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