Kostra stránky v XHTML

Tohle vezmu velice stručně.

V přednáškách máme (skoro) tuhle, tak proč ji nepoužít:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
	<meta http-equiv="content-language" content="cs" />
	<meta http-equiv="content-type" content="text/html;
	charset=windows-1250" />
	<meta name="author" content="jmeno" />
	<title>Název stránky</title>
</head>
<body>
	
</body>
</html> 

Chcete-li trochu vysvětlit, co která část znamená, podívejte se na stránku struktura kódu (1). Každopádně do atributů "content" u tagů meta v hlavičce rozhodně vložte nějaké inteligentní hodnoty, pokud byste tam nechali content="jmeno", tak vám to asi neprojde, stejně jako title s hodnotou "Název stránky".

XML deklarace

Ve výše uvedeném vzoru není uveden oproti našim přednáškám první řádek, tzv. deklarace XML, tj. <?xml version="1.0" encoding="windows-1250"?>, což je záměr. Jestli Vás zajímá pojednání na téma, proč tam není, čtěte dál; jestli vás to nezajímá, můžete zvesela pokračovat na další kapitolku.

Přípustné by měly být obě varianty, tj. včetně XML deklarace nebo bez ní; správněji by tam asi být měla. Rozhodně by nikomu neublížilo mít v začátku kódu o řádek více, problém je však jinde - zkusím ho naznačit.

Existují různé režimy neboli módy prohlížečů. Při normálním surfování o tom ani nevíte. O tom, v jakém režimu bude prohlížeč pracovat, se rozhodne on sám na základě doctype dané stránky (případně jeho absence); a podle toho, v jakém je režimu, pak interpretuje (X)HTML a CSS.

Vezmu to konkrétně: tzv. box model, neboli počítání šířky prvků. IE ve standardním režimu to dělá tak, že vezme šířku prvku, zadanou v CSS, např. width: 100px; připočítá případné vnitřní okraje padding: 20px; a obrysové čáry border: 3px solid #00000;, a tak mu vyjde celková šířka prvku. V tomto případě tedy od hrany k hraně bude celková šířka: 3px obrys + 20px okraj + 100px vlastní šířka + 20px okraj + 3px obrys = 146px. A takhle je to správně podle specifikace.

Bohužel, IE6 v režimu quirk počítá šířku špatně. Jako výslednou šířku použije zadanou hodnotu width: 100px;; zadané paddingy a bordery jsou uvažovány jako součást tohoto prvku. Takže v quirk módu se stejný prvek vykreslí se šířkou 100px, přičemž tato hodnota obsahuje 2*20px vnitřní okraj a 2*3px obrys. Na vlastní šířku tedy zbývá v tomto případě 54px. Celková i vlastní využitá šířka je tedy úplně jiná, než ve standardním režimu se správným vykreslením.

Z toho vyplývá, že je vhodné napsat takové doctype, které uvede IE6 do režimu standardního. A smutnou pravdou zůstává, že ač by v kódu měla být deklarace XML, právě její přítomnost způsobí, že IE6 bude v režimu quirk. A to je důvod, proč bude možná lepší ji tam neuvádět.

Pokud se Vám takhle popsaná záležitost nezdá zcela jasná, podívejte se (pokud možno v IE6, ve FF se nic nestane) sem: rozdílné režimy IE


Mozilla Firefox: Objevte znovu web
píše -dis- bb(zavináč)choltice.eu