Šuplík Honzy Hučína

Skok na navigaci (menu)

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.

Komentovaný článek

Internet a vše kolem
18. 1. 2005

Spolehlivý min-width tabulkou

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ě:

  1. Po výpočtu velikosti prvku pomocí expression si tuto velikost prvek již ponechá. Vysvětluje to Martin Snížek na Intervalu. Layout se tedy nebude přizpůsobovat aktuální velikosti okna při případné změně.
  2. Expression lze použít tam, kde jsme schopni pomocí Javascriptu zjistit rozměry, typicky šířku viewportu. To je sice nejčastější případ (obvykle se min-width dává celému body), ale ne jediný. U vnořených prvků stránky je výpočet aktuálních rozměrů obtížný, ne-li nemožný.

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:

  1. Místo bloku, kterému chci nastavit min-width, použít tabulku o jedné buňce.
  2. Na začátek buňky umístit průhledný (prázdný) blok o šířce odpovídající min-width a výšce 1px.
  3. Do buňky vložit požadovaný obsah.
  4. Tabulce nastavit stejné vlastnosti, jako má mít blok.

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ánkuRSS komentářů tohoto článku

Komentáře

[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?!?

[5] 18. 1. 2005, 13:29 – Yuhů

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íš.

[13] 5. 6. 2008, 16:27 – Vaše jméno

tabulkou ? jinak zdravi ? co ti rika zakladni definice tabulky ?!

K tomuto článku není možné vkládat komentáře.

© Honza Hučín 2004–6

Šuplík běží na PIPNI.CZ. Díky!

sber.cermat.cz

RSS Šuplíku

RSS komentářů – souhrnně

U každého článku je samostatný RSS kanál pro komentáře.

Výběr článků

Posledních 10 článků

nebo podle data:

nebo hledání fulltextem:

Archiv všech článků

Poslední komentáře

Zabili mě, parchanti [2]

8. 8. 16:48 | Pepa

Cestou kolem blogu [2]

7. 8. 21:26 | Honza Hučín

Cestou kolem blogu [1]

7. 8. 21:02 | Honza

Vrtulník nad hlavou [3]

6. 8. 14:29 | Pepa

Taková hra na volby [1]

3. 8. 18:29 | Honza

Nejčtenější

Žádné údaje nejsou k dispozici.

O mně

*1967, absolvent MFF UK v Praze (1991)

statistik, analytik, programátor, učitel, hudebník

nyní Ústav pro informace ve vzdělávání

Životopis (RTF)

Napište mi