Nepříjemná chyba MSIE s border
Při vytváření libovolného nového designu mě vždy zarazí nějaká nová chyba MSIE, a to i ve striktním režimu MSIE 6.0. Myslel jsem si, že je už všechny dávno znám, ale tato parodie na prohlížeč mě vždy dokáže něčím novým (co dělá špatně) překvapit.
Například při této definici byl následující řádek za blockquote
ujetý
o 5px doprava a schovaný (a písmo bylo tudíž zcela nečitelné):
blockquote { border-left: 5px solid #F3E6B6; background: #F9F2DA; padding: 5px; margin: 10px 5px 10px 20px; }
Řešením tedy bylo namalovat si 5px * 1px obrázek a nastavit jej jako pozadí pro MSIE, protože margin ani padding za to nemohl, chyba MSIE je v border:
* html blockquote { border:0 none; background: #F9F2DA url(blockquote.png) top left repeat-y; }
S touto úpravou MSIE zobrazuje vše jak má, jen udělá o jeden HTTP request navíc oproti Opeře, Safari či Firefoxu.
Podobné problémy jsou i s pre
, zde MSIE zjevně nerespektuje overflow:auto
,
a je potřeba mu natvrdo nastavit overflow:scroll
, a nejlépe ještě
šířku boxu, potom se třeba
zde nerozpadne v MSIE layout stránky:
* html pre { overflow: scroll; width:460px; }
Osobně se mi pro MSIE líbí jako řešení jeho chyb právě postup s * html
,
což je selektor který není nikdy splněn, ale MSIE jej přesto, díky další z
jeho chyb, pokládá za existující. Je tak možné nadefinovat si funkční CSS styly
dle norem W3C, a pro MSIE dodat jen doplňky, opravy jeho chyb.
Mimochodem, dva čtenáři mi říkali, že horní logo pod MSIE bíle bliká, nejsem schopen to nasimulovat, ale pokud Vy ano, napište mi prosím do komentářů jak máte MSIE 6.0 nastaven (nižší verze ignoruji). Nejprve si ale obnovte CSS, třeba pomocí Ctrl+R.
IE6, win xp SP1 - nic nebliká, ale nedivil bych se, kdyby se rozhodlo cokoliv samo od sebe blikat. jednou jsem měl pár absoluně pozicovaných obrázků v několika relativně pozicovaných blocích... Co s tím IE dělal, to nechápu dodnes: po hoveru na obrázek zmizel, po odsunutí myši se objevil a zmizely ostatní, a pak to různě kombinoval... asi je lepší vyvíjet vše pro IE a pak to poupravit pro ostatní, protože některé magické efekty z Redmondu nechávají rozum stát.
Další hack pro MSIE styly je na začátku definice vlastnosti dát _ (např. _color: red;). Potom jsou ještě kouzelné způsoby, jak zařídit, aby si dané vlastnosti všímaly pouze určité verze IE, ty jsem ale naštěstí nikdy nepotřeboval.
[2] No jo, jenomže potržítkový hack _vlastnost je podle normy W3C, nevalidní, ale zato zcela funkční :)
Horní logo ti bude pravděpodobně blikat, pokud si nastavíš v IE Options -> General -> Temporary Internet Files -> Settings -> Check for newer version of stored pages -> Every visit to the page
[2] způsob
* html
je skutečně nejlepší, je to plně validní, dle normy, a přehlednéLogo opravdu bliká, když na něj najedu v IE myší, tak na okamžik bíle blikne, to samé, pokud danou oblast opouštím.
Sice jsem na této stránce nikdy předtim s IE nebyl, ale to ctrl+r opravdu pomohlo.
[2] [3] Stránka s valisným CSS sa dá zachovať aj s použitím nevalidných CSS vlastností, napríklad JavaScriptom. Pred časom som o tom napísal článok: http://inet.sk/clanok/2516/ako-na-validne-css-aj-s-nevalidnymi-vlastnostami...
Polemizovať o tom, ktorá možnosť je najlepšia sa dá veľa, pre validné vlastnosti je najlepšia asi tá, ktorú tu popisuje Rado.
[3] Dle CSS 2.1 je již plně validní, ale já používám dvě metody: Buď již zmíněné * html nebo separatní soubor přes podmíněné komentáře.
[3] Valdiní nebo nevalidní není v CSS měřítko - to, že to připitomělý validátor označuje tak, jak to označuje, je jen díky absenci verzování. Gramaticky je to správně.
[5] V IE7 se ho zbaví, takže doufej, že spolu s tím opraví i tuhle chybu, jinak to přestane být efektivní. Proč nejrozšířenější spotřební produkty nemůžou být udělaný dobře?
[3] [5] To je myslím podle vkusu, někdo chce mít pohromadě všechny hacky, jiný všechny vlastnosti pro daný prvek/třídu. Podtržítkový hack JE podle CSS2.1 100% validní. A funguje díky tomu, že MS nejspíš bere celé CSS jako "vendor-specific extension", pro které jsou názvy, začínající podtržítky nebo pomlčkou určeny (bohužel tedy bez prefixu mso-) :-))
Každopádně díky za obohacení znalostí, o
* html
hacku jsem nevěděl.Vždy sem si myslel, že
* html
je nevalidní hack, viz Mraveniště.orgIMHO, aby byl hack validní, měl by spoléhat na nedostatečnou implementaci CSS v zastaralých prohlížečích a ne na jejich chyby...
Rozhodnutí validatoru nemusí být vždy 100% správné. Můžete uvést nějaký důvěryhodný zdroj, podle kterého usuzujete, že je tento hack validní?
Logo blikne 1x pri prejeti mysi, u IE 6 je vsechno nenormalni normalni..
To blikani v IE je znama chyba s pozadim na odkazu. Pokazde kdyz se najede mysi na takovy odkaz s pozadim, tak IE obrazek na pozadi pokazde stahuje znova (nebo alespon saha do cache) coz zpusobuje bliknuti. Chyba vznika nahodne a je tusim zavisla na aktualni velikosti cache u klienta.
Zpravidla staci mit nastavenou malou cache v prohlizeci nebo cache promazat a problem se prestane projevovat.
Ale samozrejme je mozne tuto chybu resit i jinou konstrukci HTML a pozadi nedavat na odkaz, ale treba na dalsi vnoreny prvek.
[13] děkuji za tip, hodil jsem
background image
za
naspan
, snad to pomohlo (nemohu to otestovat, mě to v MSIE nebliká)Stoprocentně pomůže tenhle článek http://www.fivesevensix.com/studies/ie6flicker/... nebo tohle nastavení httpd.conf http://dean.edwards.name/my/flicker.html... (odkaz z toho vyčerpávajícího článku)
Taková drobnost - víte, že se (nejen) na úvodní stránce zobrazují špatně zelené odrážky LI? Po stažení stránky se zobrazí jen některé, po označení bloku myší nebo posuvu stránky se nějaké další objeví, jiné zůstávají schované, někdy se neobjeví vůbec, jindy jsou zase rozsypané (neodpovídají blokům LI, ale jsou seskupené pod sebou "zcela náhodně"),.. Zkrátka chová se to nějako nepředvídatelně. wXP Pro CZ+SP2, IE6, internet 4MBps (pomalým spojením by to být nemělo).
[16] to je problém Vašeho stařičkého browseru, má mraky chyb. Pořiďte si lepší /Opera, Firefox/. Nicméně já zmiňované problémy v MSIE 6.0 SP2 neregistruji, vše funguje zcela korektně.