Tento blog je v současné době uzavřen.
Pokračování blogu na bloguje.cz jsem zrušil. Pokud budu někdy pokračovat, bude to spíš tady.
Internet Explorer štve webdesignery řadou věcí, mimo jiné tím, že nepodporuje dost užitečnou CSS vlastnost min-width. Existuje několik postupů, jak tuto vlastnost v IE simulovat, ale všechny mně známé se hodí jen na určitou situaci (ačkoliv je to, pravda, nejčastější praktické použití min-width).
Obecně funkční náhradu min-width neznám, a tak jsem o tom přemýšlel. Přišel jsem na řešení, které sice postrádá eleganci, zato nepostrádá funkčnost – použití tabulky. Ano, já vím, že je to nesémantické řešení a tabulkový layout je z rozumných důvodů zavrženíhodný. Ale zdá se, že to funguje.
Nejdřív ovšem k dosavadním známým řešením. Nejčastěji se používá náhrada pomocí expression. Silnou stránkou je, že sémanticky neničí kód stránky a lze zároveň simulovat min-width i max-width. Slabiny, když odhlédneme od použití Javascriptu, jsou dvě:
První slabina se dá odstranit použitím Javascriptu, který neustále hlídá rozměry stránky a dynamicky přepočítává potřebnou šířku. Našel jsem ho na doxdesk.com.
Alternativní řešení absence min-width, které se dá ovšem použít jen v jednodušších situacích, uvádí David Shea na Mezzoblue. IE si v případě potřeby zvětší velikost bloku – tak totiž interpretuje vlastnost overflow, která je defaultně nastavena u všech bloků na visible. Podobný princip používá Martin Dvořák: do stránky umisťuje neviditelný blok o dané šířce; pokud se velikost okna příliš zmenší, blok přinutí stránku, aby se nezmenšovala.
Vodorovná zarážka vložená do bloku je zajímavý nápad. Nedalo by se to použít obecně? Kdyby například měl blok nastavenou width:50% a v sobě měl zarážku o šířce 250px, mohla by zarážka zajistit, že se při zmenšení okna pod 500px v IE už blok nebude zmenšovat.
Jenže chyba lávky. Blok sice opticky zůstane široký 250px, ale textový obsah v něm bude mít pořád šířku 50%. Uvádím to v příkladu, na který odkazuji níže.
Zkoušel jsem s tím různě manipulovat, ale nic. Až jsem ze zvědavosti zkusil tabulku – a fungovalo to. Toto je tedy náhrada min-width:
Prohlédněte si příklad, kdy má blok mít šířku rovnou polovině stránky, nejméně však 250px.
Vložit vlastní komentář – Návrat k článku – RSS komentářů tohoto článku
[1] 18. 1. 2005, 09:42 – waclaw
díky za čas při hledání řešení, přesně toto řešení jsem potřeboval!
[2] 18. 1. 2005, 11:22 – tommy
Pri zmenseni okna pod 250 px (firefox 1.0) sa nezobrazi horizontalny posuvnik...
[3] 18. 1. 2005, 11:45 – Honza Hučín (Odkaz)
Ad [2] To je divné, mně se ve Firebirdu 0.7 posuvník zobrazuje.
[4] 18. 1. 2005, 11:53 – Honza Hučín (Odkaz)
Ad [2] A teď jsem se díval i Firefoxem 1.0 PR, posuvník tam je. Tak nevím?!?
A víš, jak se simuluje max-width?
Vezmeš tabulku, nenastavíš jí šířku, vložíš do ní buňku a té šířku nastavíš. Je to staré asi pět let a používá to ... držte si klobouky ... používá to Google ve výsledcích vyhledávání.
[6] 18. 1. 2005, 14:01 – Honza Hučín (Odkaz)
Ad [5] No, ten zdroják na Googlu, to je teda něco... Ale zrovna tuhle fintu jsem tam nějak nenašel (zadal jsem hledání "Yuhů").
[7] 19. 1. 2005, 15:45 – Yuhů (Odkaz)
musíš hledat něco, na co jsou inzeráty AdWords. Pak je to ve výsledcích. Nevím, jestli to tam ještě je, ale v loňském "novém" designu Googlu to tak bylo.
[8] 19. 1. 2005, 15:56 – Honza Hučín (Odkaz)
Ad [7] Je to tak, dal jsem si vyhledat "ubytování", ten max-width je nastavený do buněk, které mají class=j.
[9] 23. 5. 2006, 18:04 – martin
Já jsem jednou zkusil nahradit tuto chybu obrázkem, prostě jste tam hodil obrázek s výškou 1px a šířkou třeba 100px a bylo (nevím sice, jestli to není nějaká prasárna, ale fungovalo mi to). Ten obr. měl sice šířku a výšku podle uvážení, ale odkaz byl na obrákek 1*1px (ten se nestahuje zas tak dlouho).
[10] 26. 5. 2006, 10:57 – Petr Vaclavek (Odkaz)
A nestacilo by misto obrazku tam hodit div s takto definovanou vyskou a sirkou? Ten by se pak nestahoval vubec :)
[11] 26. 5. 2006, 11:17 – Honza Hučín (Odkaz)
Ad [9]: To jsem právě zkoušel. Jestliže ti to funguje, to by mě velmi zajímalo.
Ad [10]: Nestačilo, protože v IE bude ten div vesele vytékat ven, jakmile se šířka obsahujícího elementu zmenší pod požadovanou hranici. Aspoň myslím.
[12] 26. 5. 2006, 11:19 – Honza Hučín (Odkaz)
Oprava k předchozímu ([11]) a k reakci na [10]. Vytékat nebude, to jsem napsal blbě. Stane se opačná chyba: blok sice opticky zůstane zachovaný na požadované minimální šířce, ale jeho textový obsah se bude zužovat dál. V textu je odkaz na příklad, vyzkoušej a uvidíš.
K tomuto článku není možné vkládat komentáře.
© Honza Hučín 2004–6
Šuplík běží na PIPNI.CZ. Díky!
8. 8. 16:48 | Pepa
7. 8. 21:26 | Honza Hučín
7. 8. 21:02 | Honza
6. 8. 14:29 | Pepa
3. 8. 18:29 | Honza
*1967, absolvent MFF UK v Praze (1991)
statistik, analytik, programátor, učitel, hudebník