Menu
RSS
Kategorie
Nejnovější články
Nejnovější komentáře
| Last.fm - The Zero | |
|---|---|
| Pos | Interpret (skladby) |
| 1 | E-Type (2933) |
| 2 | Groove Coverage (2400) |
| 3 | Sylver (1564) |
| 4 | Ace of Base (1449) |
| 5 | Maya (1295) |
| 6 | Cascada (1108) |
| 7 | Solid Base (1064) |
| 8 | Lewron Orchestra (922) |
| 9 | Milk Inc. (887) |
| Last.fm - Borek | |
|---|---|
| Pos | Interpret (skladby) |
| 1 | Coldplay (1348) |
| 2 | Pink Floyd (901) |
| 3 | Brian Tyler (671) |
| 4 | Jaromír Nohavica (622) |
| 5 | Louis Armstrong (412) |
| 6 | Karel Kryl (393) |
| 7 | Daft Punk (326) |
| 8 | Vladimír Mišík (274) |
| 9 | Bobby McFerrin (240) |

Validní max-width v IE
Internet Explorer nepodporuje spoustu skvělých věcí, jak všichni moc dobře víme. Jedna z nich, max-width, je opravdu nepostradatelná pro plovoucí layouty. Osobně u každého plovoucího layoutu dávám max-width: 1000px; a myslím, že to bohatě stačí.
Jak ale dosáhnout stejného efektu v IE? Řešení pomocí expressions už dávno popsal Jirka Chomát, ale má to jednu nevýhodu, jestli se nepletu, zápis width: expression(něco); CSS validátor nepřekousne.
Protože aktuálně připravuji redesign blogu (já se změním!), řekl jsem si, že jednou výjimečně vyjdu vstříc i uživatelům modrého zla a něco vymyslím. První řešení, které mě napadlo, je jednoduché, ale není zrovna nejšťastnější a jak to tak teď píšu, vlastně za nic nestojí, ale když už jsem si dal tu práci, uvedu ho.
Celý obsah stránky je obalen v blokovém elementu, dejme tomu <div id="body">. Na konec stránky vložíme podmíněný komentář:
<!--[if IE]>
<script src="inc/js/ie.js" type="text/javascript"></script>
<![endif]-->
Samotný JS soubor je pak jednoduchý:
var body=document.getElementById("body");
if(body && body.offsetWidth>1000)
body.style.width="1000px";
A je to. Hlavní nevýhoda této metody spočívá v tom, že stránka při vykreslování problikne, pokud se má obsah zužovat. Nevadí, můžeme zkombinovat to nejlepší z obou triků: Expressions a podmíněné komentáře. Do hlavičky stránky tak přidáme kód
<!--[if IE]>
<style type="text/css">
/* <![CDATA[ */
#body {
width: expression(document.body.clientWidth>1000 ? "1000px":"auto");
}
/* ]]> */
</style>
<![endif]-->
Máme validní XHTML (dokonce i CDATA to má
) a IE použije maximálně 1000px.
Tři poznámky: Za prvé, nejde nastylovat tělo samotné, musí to být nějaký potomek, za druhé, funguje to asi jen v IE se zapnutým JavaScriptem (99% minimálně, troufám si tvrdit) a za třetí, ta podmínka by měla být spíš <!--[if IE lt 7]>, protože IE 7 už myslím max-width zvládá, ale momentálně to nemám jak otestovat.
Komentáře
1. Vladimír
Dobrý nápad. S tím ie 7 máš pravdu ie 7 (od beta 3) podporuje max-width i min-width. Testoval jsem to.