<txp:image id=„52“ />
Při přechodu z tabulkového na beztabulkový layout, který je řešený pomocí plovouciho sloupce, se webdesignér začne potýkat se značnými problémy, které souvisí s chybnou implementací kaskádových stylů v prohlížeči Microsoft Internet Explorer.Obecně se beztabulkový layout (pomocí plovoucího sloupce) řeší následovně:
<style>
#main {background-color:yellow;width:300px;}
#left {background-color:blue;width:100px;float:left;}
#content {background-color:red;margin-left:100px;}
</style>
<div id="main">
<div id="left">
navigation<br>
navigation<br>
</div>
<div id="content">
content content content content content content content
content content content content content content content
</div>
</div>
Můžete se podívat na ukázku.

Levý sloupec s navigací je plovoucí a má definovanou šířku (v tomto případě 200 pixelů), sloupec s obsahem je o tuto šířku odsazen (jeho pravý okraj má stejnou velikost). Kód funguje ve všech moderních prohlížečích.
ALE je zde problém, že v MSIE se objeví posunutí o velikosti 3px a to pouze tam, kde se nachází levý plovoucí sloupec.
Hledal jsem řešení všude možně a při tom jsem narazil na několik relevantních článků (viz odkazy na kocni článku) ale nejlepší řešení mi dal Martin Snížek ve svém komentáři na Intervalu
Takže řešením je přidat záporný spodní okraj u plovoucího prvku:
#left {background-color:blue;width:100px;float:left;margin-bottom:-500px;}
Podívejte se na opravenou ukázku.
<style>
#main {background-color:yellow;width:300px;}
#left {background-color:blue;width:100px;float:left;margin-bottom:-500px;}
#content {background-color:red;margin-left:100px;}
</style>
<div id="main">
<div id="left">
navigation<br>
navigation<br>
</div>
<div id="content">
content content content content content content content
content content content content content content content
</div>
</div>
Ukázka sice funguje skvěle, ale má jeden háček – díky velkému zápornemu spodnímu okraji se šířka levého plovoucího prvku počítá jako NULA, což se projeví v okamžiku, kdy budete chtít přidat patičku – pomocí atributu clear se patička umístí přímo pod konec divu content a to i v případě, že je content kratší než levý sloupec (protože ten má výšku NULA);
Podívejte se na ukázku s patičkou a s delším levým sloupcem.

Další řešení spočívá v ve vložení pomocného DIVu do contentu a nastavení jeho výšky na jedno procento:
<style>
#main {background-color:yellow;width:300px;}
#left {background-color:blue;width:100px;float:left;}
#content {background-color:red;margin-left:100px;}
#inner {height:1%;background-color:silver;}
#footer {background-color:green;clear:both;}
</style>
<div id="main">
<div id="left">
navigation<br>
navigation<br>
navigation<br>
navigation<br>
navigation<br>
</div>
<div id="content">
<div id="inner">
content content content content content content content
content content content content content content content
content content content content content content content
content content content content content content content
</div>
</div>
<div id="footer">footer</div>
</div>

Neptejte se mě proč tomu tak je (je to fígl, na který přišli na webu www.positioniseverything.net. Doporučuji přečíst si jejich článek.
Bohužel stále je tam 3px mezera (akorát nekončí zároveň s levým sloupcem, ale pokračuje až dolů) – prosvítá tam červená barva DIVu content (šedá barva je DIV inner).
Díky Plaváčkovi víme další řešení – popisuje jej v komentáři pod článkem, pro úplnost jsem jej přidal i do článku – včetně obrázku a ukázky:
<style>
#main {background-color:yellow;width:300px;}
#left {background-color:blue;width:100px;float:left;}
#content {background-color:red;margin-left:100px;}
.fix {width:100%;background-color:silver}
#footer {clear:both;background-color:brown}
</style>
<div id="main">
<div id="left">
navigation<br>
navigation<br>
</div>
<div id="content">
<div class="fix">
content content content content content content content
content content content content content content content
</div>
</div>
<div id="footer">Footer</div>
</div>

Jeho řešení mi rozhodně přijde čistější – spočívá v použití dalšího pomocného DIVu fix, který má nastavenou stoprocentní šířku – tím se sice zbaví škaredého zubu v místě kde končí levý plovoucí sloupec, ale obsahuje stejný problém, jako předchozí příklad – šířka je zůžena o ony 3 pixely.
Asi nejlepší řešení je nechat všechno plavat – tedy ne tento problém, ale oba bloky – levý i obsahový. Vizte ukázku:
<style>
#main {background-color:yellow;width:300px;}
#left {background-color:blue;width:100px;float:left;}
#content {background-color:red;float:right;width:200px;}
#footer {background-color:brown;clear:both;width:100%;}
</style>
<div id="main">
<div id="content">
content content content content content content content
content content content content content content content
</div>
<div id="left">
navigation<br>
navigation<br>
</div>
<div id="footer">Footer</div>
</div>

Jak vidíte, konečně vše funguje tak jak má, 3px bug prohlížeče MSIE se nekoná a všechny bloky na sebe perfektně – na pixel přesně – navazují. Dokonce to má tu výhodu, že můžete ve zdrojovém kódu uvádět nejdříve blok s obsahem a teprve poté blok s navigací (tedy další plus za přístupnost). Ještě se uvidí, jak se toto řešení osvědčí v praxi.
Pokud víte o jiném, nebo lepším řešením, neváhejte a podělte se, ke zkoušení můžete využít první ukázku.
Zabírají dvě věci. Za prvé zkusit nastavit bloku, který jeví tendenci obsahovat 3px bug nějakou line-height. Druhé, vždy stoprocentní řešení, je vložení dalšího divu a jemu nastavit šířku width=100%. Sám používám druhé řešení, protože je funkční, bezpečné a většinou se mi i další vnořený blok hodí, protože ho lze využít k definici pozadí a podobně.
Myslím, že opravdu přechod na STRICT by prospěl, protože používáte i vyšší styly CSS. Jinak se mrknětě na moji stránku, jak jsem to řešil.
Plaváčku díky, tvé řešení funguje, i když jednu mušku má :) – viz aktualizace článku.
Kvetos: Zkoušel jsem, ale vše se chovalo stejně :( Navíc si nejsem jist, zda starší MSIE – verze 5 – podporuje přepínání režimů pomocí DOCTYPE.
Starší verze: Právě ten prolog by ti to přepnul do quirk modu, tedy zpět do modu, který podporuje i MSI 5. Proč ale zrovna na to baziruješ. Tento prohlížeč už dnes používá možná 1% uživatelů?
Kvetos: a já měl pořád nejaké tušení, že jsem na něco zapoměl. Díky za upozornění, už by tam měly být.
A na pětkové verzi bazíruju jednak ze zvyku a jednak ho používá ještě asi 5%, což není až tak málo – viz statistiky:
Plaváčku díky, přesně tohle jsem už nějakou dobu hledal, s třípixelovou mezerou budu počítat, hlavně, že tam neni ten zub! :) Jo a přikládám jeden odkaz na problémy box modelu v IE, ale to už stejně všechno znáte, jen tak pro úplnost. :) http://www.digital-web.com/…ompliant_ie/
← CSS fígle od Plaváčka Thomas A. Powell: Web Design kompletní průvodce →
Už jste zkusili prodávat fotky a ilustrace přes fotobanky?
Všechny články o fotobankách
Knihy o webdesignu, grafice, digitální fotografii.
Kompletní seznam nabízených knih
Domény zdarma
Český hosting dává domény zdarma k webhostingu -
www.cesky-hosting.cz
Kozoroh (Pořadí odkazů na stránce pomocí atributu TABINDEX)
Kozoroh (Pořadí odkazů na stránce pomocí atributu TABINDEX)
Jirka (Jak exportovat grafiku z Illustratoru pro fotobanky)
Petr Václavek (Jste grafik / grafička a hledáte práci? Zkuste kreslit pro fotobanky!)
Petr Václavek (10 tipů pro fotografy, jak se dostat na fotobanku Shutterstock)
75 % Ian McEwan: Betonová zahrada
No popravdě, čekal jsem podle komentářů ještě brutálnější příběh ale i tak mě z toho běhal mráz po zádech.
90 % Miroslav Žamboch: Bez slitování
Další klasika od Žambocha, moc se mi na tom líbílo, že se odehrává ve stejném světě jako "Koniášovky" (no vlastně Bakly a Koniáš se jednou i potkali).
ColorSuckr
Webové udělátko, které z vámi zadaného obrázku vygeneruje paletu 12ti barev.
[Barvy]
Pdfcrowd
Služba, která nabízí skripty a své API pro snadnou konverzi HTML do PDF. Zajímavá je možnost přidat na web jednoduchý odkaz, který po vložení do libovolné stránky umožňuje stažení její PDF verze.
[Tvorba stránek - návody, nástroje]
Honzova Hypotéka
Pokud hodláte kupovat nemovitost (dům či byt), tak se vám bude hodit tato hypotečně poradní služba - po zadání základních údajů o nemovitosti, své bonitě a výši hypotéky vám budou banky a hypoteční poradci nabízet své produkty. První odpovědi dostanete již během hodiny, další v průběhu týdne. Já sám jsem jich získal téměř dvacet a dozvěděl jsem se, jaké jsou na trhu možnosti - to vše zdarma - k ničemu se nezavazujete. Samozřejmě, když vás nějaká nabídka zaujme, tak se můžete zdarma spojit s nabízející bankou/poradcem a nabídku dotáhnout do finále - uzavření smlouvy.
[Různé]
Hypoteční kalkulačka
Končeně pořádný hypoteční kalkulátor, který nejen vypočítá měsíční splátku hypotéky, ale zobrazí také splátkový kalendář po jednotlivých splátkových obdobích rozdělených na úroky a umoření splátky.
[Různé]
CSS chyby a nekonzistence ve Firefoxu 3.x
Přehled chybného interpretování CSS u Firefoxu (bohužel bez nástinu řešení)
jPlayer
jQuery audio player plugin pro vaše stránky - lze snadno nastylovat, obsahuje i čistě textovou verzi a vypadá dobře.
Better drop shadows
Jednoduchá technika jak udělat ve Photoshopu realističtější stíny.
13 Simple CMS Options
Tipy na jednoduché redakční systémy, které mnohdy nepotřebují ani databázi.
Nejlepší jQuery lightboxy
Článek s přehledem lightboxů založených na knihovně jQuery.
jQuery News Ticker
Docela pěkný a jednoduchý news ticker pro jQuery. Právě jsem ho použil na jednom webu.