skočit na obsah skočit na komentáře skočit na vyhledávání

blog | filosof webdesign

7. 9. 2007 | webdesign:

Náhrada textu obrázkem - šetříme kód

Image replacement budiž věčné téma, ke kterému se vracím co půl roku. Tentokráte s tipem pro ušetření nadbytečného CSS kódu.

Při aplikaci náhrady textu obrázkem používám většinou Gilder/Levin Method, která ovšem obsahuje docela dost CSS kódu, který se z velké části opakuje. V jednom z posledních projektů jsem si na sebe svým vlastním grafickým návrhem ušil bič v podobě asi třiceti různých obrázkových nadpisů (příště jedině sIFR), a tak jsem byl nucen popřemýšlet nad ušetřením přebytečného kódu.

Řešení: zavedeme dodatečnou třídu, do které schováme opakující se kód a jednotlivé obrázky budeme rozlišovat pomocí IDčka. Vznikne nám tedy něco takového:

<h1 id=‚nadpis‘ class=‚imgr‘>Nad­pis<span></span></h1>

.imgr, .imgr span {
position: relative;
display: block;
padding: 0;
left: 0;
top: 0;
overflow: hidden;
}

.imgr span {
position: absolute;
}

Jednotlivým ID pak nadefinujeme unikátní výšku, šířku a obrázek:

#nadpis, #nadpis span {
width: 100px;
height: 100px;
}

#nadpis span {
background: url(../images/nad­pis.gif) 0 0 no-repeat;
}

del.icio.us | linkuj | jagg

a co na to zbytek světa?
07. 09. 07 | 11.24

A co nahrada textu flashem alias SIFR? ;-)


07. 09. 07 | 11.33
2. Jirka

Já nechápu jednu věc. Proč jste normálně nepoužil obrázky s Alty?

Pokud jde o designove prvky, tak je normální že se dávají do css. Tak aby jsme oddělily obsah od designu, a zároveň se to pořád netahalo.

U nadpisu, jelikož jde o obsah, tak si myslím by bylo vhodnější umístit to jako obrázek s altem?


07. 09. 07 | 12.21

SIFR rozhodně není samospasitelný a občas je s ním více starostí než je záhodno (zalamování, víceméně neuhlídatelná velikost, rozdíly ve vykreslování mezi browsery atd. atd.).

Jako ideální mi přijde právě náhrada textu obrázkem ideálně kombinovaná s automatickým generováním těchto obrázků z PHP (či jiného skriptojazyka).

Filovo šetření kódu je celkem použitelné :)


07. 09. 07 | 12.25

Nemám Flash.. ale už na něj šetřím.. jen těch 60k (Design Suite) jde prostě trošku pomalu..


07. 09. 07 | 13.42
5. Ukee

Heh – tak přesně tohle jsem řešil asi před 30 minutama… a výsledek:

#uvod, #web,… {position:relative; overflow:hidden; background:#f4f4f4; text-align:center; }

#uvod span, #web span,… {display:block; position:absolute; left:0; top:0; z-idenx:1; width: 100%; height: 100%;}
#uvod a:hover, #web a:hover… {cursor:pointer;}

#uvod{width:62px;he­ight:130px;}

#uvod span { background:ur­l(„../i/menu-uvod.gif“) 0 0 no-repeat;}

#uvod a:hover span,#uvod #active span{background-position: –61px 0;}

Škoda jen, že jsem si tenhle článek přečetl až tehdy, když jsem to „zoptimalizoval“ :)).

P.S.: tohle řešení je samozřejmě pro rollover.


07. 09. 07 | 14.15
6. habendorf

S prominutím přijde mi to jako objev Ameriky, navíc nevím proč spanu pokaždé dávat unikátní rozměry.

.imgr span {
position: absolute;
width: 100%;
height%;
}

a je vymalováno, ne?


07. 09. 07 | 14.16
7. habendorf

Nějak vypadl závěr, samozřejmě mělo být

height: 100%;


07. 09. 07 | 14.29
8. Langoš

Jirko, poneváč do altu nedáš háčko (například)


07. 09. 07 | 15.36
9. jan

FILOSOF: On ten sIFR jde vytvořit i bez Flashe.
Tady jsou nějaké připravené fonty
http://www.isarie.com/?p=17

a tady je generátor potřebných swf
http://ianpurton.com/sifr/

Možná jsou lepší někde tady ;)
http://www.google.com/search?q=sifr+generator&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:cs:official&client=firefox-a

Ale s těma problémama se zalamováním a velikostí má soundake pravdu. Ale zase tam moc sIFRování jsem ještě nedělal, tak nevím jistě.


07. 09. 07 | 17.03

Jako obvykle, sIFR mohu jen nedoporučit. Opakuji to už nejspíš roky a asi to budu opakovat stále – na některých naprosto standardních sestavách nefunguje, nikdy nefungoval a pochybuji, že někdy fungovat bude. Viz například http://interval.cz/clanky/dynamicke-nahrazovani-textu/diskuse/#story42578 ;-)


08. 09. 07 | 22.48
11. Martin Mráz

Taky mám se sIFRem pouze negativní zkušenosti, zatím se mi nikdy nepodařilo použít ho tak abych byl plně spokojený a nakonec jsem vždy skončil u filovy metody ;)


09. 09. 07 | 14.37

Langoš
> Jirko, poneváč do altu nedáš háčko (například)


09. 09. 07 | 14.40

Z posledného komentáru nejak vypadla Texy! code syntax (určite som ju zadal správne), skúsim znovu bez Texy.


09. 09. 07 | 14.41

Človek by ani nečakal, aké môže byť zložité zapísať HTML kód do komentáru. Takže posledný pokus do tretice.

<h1><img src=„images/cu­coriedky.gif“ alt=„cucoried­ky“></h1>


10. 09. 07 | 08.15
15. Catch

Osobne je mi ten sIFR proti srsti, mohl by jeste nekdo shrnout vsechny jeho nedostatky? :-) Nahradu obrazkem mam mnohem radsi :-)


11. 09. 07 | 12.23
16. Langoš

Josef Benko

A fakt je to pak plnohodnotná h1? Jestli jo, tak na tu původní otázku [2] by mě zajímala odpověď.


14. 09. 07 | 01.14

[16] Já si, podle svých znalostí myslím, že to ekvivalentní není. Stejně jako obrázek s odkazem, který má alt nastavený na nějaký KW není AFAIK stejný jako pokud je ten KW přímo text.

Ale obávám se, že nemám žádný exaktní důkaz.


14. 09. 07 | 07.52

Obrázek s altem má vždy nižší váhu než text.. logicky – můžeš si do altu nacpat cokoliv..


14. 09. 07 | 15.12
19. Langoš

Výborně, skoro jsem se už chtěl leknout…