Je vůbec potřeba uzavírat tag FONT?

30. června 2000

Tag FONT slouží v jazyku HTML pro definování druhu písma, velikosti či barvy písma. Definice HTML stanovuje, že tag FONT je tagem párovým a jako takový musí být ukončován. Nicméně – občas je docela výhodné se na uzavírání tagu FONT úplně vykašlat.

Každý, kdo už vytvořil nějakou tu stránku ví, že pomocí tagu <FONT> a parametrů SIZE, FACE a COLOR je možné nadefinovat velikost písma v relativních hodnotách, určit druh písma a jeho barvu. Stejně tak všichni vědí, že tag <FONT> je párový a musí být ukončován pomocí </FONT>. Co ale někdo vědět nemusí, je to, že platnost tagu <FONT> se v některých případech ukončí sama.

Nejčastěji používaný způsob, kde je vhodné neuzavírat tag <FONT> , jsou buňky v tabulce. Představte si, že máte tabulku, která obsahuje třeba 50 řádků a do každého řádku musíte vložit definici druhu písma, jinak bude použito písmo standardní (obvykle je to písmo Times). Tento způsob pochopitelně snižuje přehlednost kódu a co je důležitější, také velmi výrazně prodlužuje výsledný kód stránky. Zde není jiné rady než používat v takovém případě kaskádové styly, ale pokud je používat nechcete, či neumíte, musíte hledat způsoby, jak velikost stránky krátit – třeba zrušit několikanásobnou definici řezu písma či neukončit </FONT>.

Neukočení tagu <FONT> v tabulce:

<TABLE CELLSPACING=“0″ CELLPADDING=“2″ BORDER=“0″>
<TR><TD><font face=“arial“ SIZE=“2″>Text v tabulce</TD></TR>
<TR><TD><font face=“arial“ SIZE=“2″>Text v tabulce2</TD></TR>
<TR><TD><font face=“arial“ SIZE=“2″>Text v tabulce3</TD></TR>
<TR><TD><font face=“arial“ SIZE=“2″>Text v tabulce4v/TD></TR>
</TABLE>

Několikanásobná (doporučená) definice písma:

<FONT FACE=“HELVETICA CE, ARIAL CE, ARIAL, HELVETICA“ SIZE=“2″>

Zkrácená definice písma:

<FONT FACE=“ARIAL CE“ SIZE=“2″>

Tag <FONT> v buňce tabulky pochopitelně nemusíte ukončovat ani v případě, že zde chcete mít více druhů písma, například o různé velikosti, jak to ukazuje barevný text v tabulce a její zdrojový kód. Funguje to v Internet Exploreru stejně dobře jako v Netscape Navigatoru:

Neukončování tagu FONT v tabulce

<TABLE CELLSPACING=“0″ CELLPADDING=“2″ BORDER=“0″>
<TR>
   <TD><font size=“3″>Neukončování <font size=“-2″ COLOR=“red“ FACE=“arial“> tagu FONT<font face=“verdana“ COLOR=“blue“ SIZE=“2″> v tabulce</TD>
</TR>
</TABLE>

Stejný postup ovšem neplatí v případě, že zde chcete mít např. třeba ještě text tučně a kurzívou. Tyto tagy musíte korektně ukončovat, protože zatímco v případě používání </FONT> nemusíte, protože jsme původní definici písma „přepsali“ definicí novou, což v případě použití tagů <B> a <I> pochopitelně nejde, protože tyto tagy nemají žádné volitelné parametry.

Zde ovšem dejte pozor na jednu zajímavost, či spíše další chybu v Netscape Navigatoru. Ten totiž při zdědění vlastnosti písma příliš nezjišťuje, zdali je konkrétní tag ukončen korektně pouze jednou či nekorektně vícekrát. V případě vícenásobného ukončení Netscape ukončí správně předchozí „startovací“ tag, ale současně ukončí i platnost tagů předcházejících, které nebyly ukončeny a jejichž počet je stejný jako počet nadbytečně ukončovacích tagů. Více osvětlí tento příklad:

Neukočení fontu v tabulce

<font COLOR=“BLUE“>Neukočení<font COLOR=“MAROON“> <b>fontu</b></b> v tabulce

Příklad je celkem jednoduchý, <FONT> není ve stylu tohoto článku ukončován:o), ale je zde tag <B>, který je omylem ukončen dvakrát. První slovo by tedy mělo být modře a netučně, druhé slovo tučně a hnědou barvu a poslední slova pouze hnědou barvou netučně.

V Internet Exploreru je vše v pořádku (pokud se tomu dá tak říkat, když jsme už porušili standard), ale v Netscape je to jinak. Tam totiž nejsou poslední slova zobrazena hnědou barvou, ale barvou modrou a to jenom proto, že v kódu máme dvakrát </b>. Druhým tagem </b> jsme totiž pro Netscape ukončili platnost druhé definice fontu. Pokud byste dali za sebou tři tagy </b>, ukončíte i platnost první definice fontu. Je to pravda, ačkoli to zní jakkoli absurdně. Zajímavé ale je, pokud třeba uvedete kombinaci </b></i></i>, vše se zobrazí naprosto v pořádku a poslední slova jsou správně zobrazena hnědou barvou.

Je poměrně škoda, že konsorcium W3C použití tagů <FONT> při návrhu tabulek trochu nedomyslelo. Možná by bylo ideální, dát před tabulku definici písma <FONT> a na konci tabulky ji jednoduše ukončit, přičemž obsah tabulky by byl v uvedeném řezu. Takto musíte cpát <FONT> a </FONT> do každé buňky tabulky nebo použít kaskádové styly, které velmi doporučuji.

V této souvislosti se musím zmínit o další zajímavosti. Koukněte se na následující zdrojový kód:

<font FACE=“ARIAL“ SIZE=“4″ COLOR=“red“>
<TABLE CELLSPACING=“0″ CELLPADDING=“2″ BORDER=“0″>
<TR>
   <TD>Neukončování textu v tabulce</TD>
</TR>
</TABLE>
</font>

Každý by čekal, že podle definice bude text v buňce tabulky naformátován standardním písmem – Times, velikost 3 a barva černá i přes fakt, že před tabulku je vložena definice druhu, barvy a velikosti písma. Nicméně to tak není, protože text v tabulce bude zobrazen definovaným písmem, což je zajímavé. Ostatní hodnoty bohužel nezmění. Funguje to ovšem pouze v Internet Exploreru 4.0 a výše, ale nechápu důvod, proč to programátoři – když už to tvořili – nedotáhli dokonce a nedali možnost dědit i ostatní vlastnosti písma. Samozřejmě – stejně je to nestandard a pravděpodobně by se ani neuplatnil, když společnost Netscape tuto vlastnost neimplementovala do svého prohlížeče (a proč by taky měla?).

Závěrem

  • (+) – zkrátí se velikost výsledného kódu stránky
  • (+) – funguje to i v případě vícenásobné definice tagu <FONT>
  • (+) – neukončovat tagy dá méně práce
  • (-) – je to proti standardu HTML a každý vám to potvrdí
  • (-) – mohou nastat problémy v Netscape Navigátoru
  • (-) – při neukončování tagů se můžete hůře orientovat v kódu

Neukončování tagu <FONT> ve většině případů nezpůsobí žádné škody, zejména pokud neukončujete text v tabulce, který má být zobrazen pouze jedním řezem písma. Stejně tak nemusíte ukončovat definici písma v případě, pokud vložíte další definici písma a tím „přepíšete“ hodnoty původní – tento text tak bude naformátován podle posledních hodnot daných parametrů (size, face, color). Pokud nějaký parametr neuvedete (třeba velikost), zdědí se hodnota z předcházející definice.

Pokud používáte více tagů za sebou, např. <font><i><b><center> velmi vám doporučuji tyto tagy uzavírat a nekřížit – musíte je uzavírat v opačném pořadí, než následující, pokud tedy končíte tagem <center>, ukončovat začněte tagem </center>. Je to základní pravidlo a vyhnete se tak snadno problémům v Netscape Navigátoru.

Sám za sebe bych vám ovšem doporučil držet se standardu a ukončovat tagy – ušetříte si tak případné problémy. Pokud používáte opravdu rozsáhlé tabulky s textem, doporučil bych se tagu <FONT> vzdát a používat kaskádové styly. Tag <FONT> je stejně už několik let uváděn jako zavržený (deprecated).

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *