Autor Zpráva
Kentaur
Profil
*Nadpis má znít !important v IE (překlep), bohužel nejde z myslím pochopitelných důvodů změnit.

Při prohlížení témat jsem si uvědomil svojí neznalost v určitých zákoutích css.

Poslední prohlédnuté téma mne zaujalo potížemi se smícháním kodů pro IE a pro všechny ostatní prohlížeče (pořadí a důležitost prvků z kodu).

Zajímalo by mne, jak v podobných případech(kod níže) atribut !important funguje.


HTML
<link rel="StyleSheet" type="text/css" href="design.css" />
<!--[if IE]>
<link rel="StyleSheet" type="text/css" href="ie.css" />
<![endif] -->

design.css:
a {color:#F00 !important;}
ie.css:
a {color:#00F;}


Předpokládejme, že si prohlížím stránku v prohlížeči IE7 a na stránce jsou použity styly výše.
Zájímá mě, kterou barvou se zobrazí položka <a>link</a> - tuším, že ta barva bude červená(#F00), ale kdyby se mě člověk zeptal proč, tak bych nebyl schopen to zdůvodnit.

- Konkrétně mě zajímá, jakým způsobem prohlížeče !important 'vnímají'. Byl bych vděčný za nějaký užitečný odkaz, který by tuto problematiku podrobně popisoval..
Miloš
Profil
Nejvyšší prioritu má jakékoliv pravidlo, ke kterému je připojeno !important (toto anglické slovo se překládá jako významný důležitý; v CSS zápise nesmíme zapomenout na vykřičník). Zapíšeme-li jeden z předchozích příkladů takto:
strong {color: black !important;}
strong {color: red;}
strong {color: yellow;}


pravidlo !important má nejvyšší prioritu a veškerý <strong>zvýrazněný text</strong> bude černý, i kdyby měl kdovíjak přesný identifikátor (např. body.index div#hlavicka p#prvni strong#jmeno).

Pokud ale napíšu dejmetomu
strong {color: black !important;}
strong {color: red; !important;}

bude <strong>zvýrazněný text</strong> červený, protože mají-li obě !important pravidla stejnou váhu, platí později uvedené (stejně jako u pravidel bez !important)

Chyba M$IE
M$Exploder ignoruje !important tehdy, je-li zapsán v jedné definici (nechápu sice význam takového zápisu, ale za upozornění to stojí): Zatímco předchozí příklad je interpretován správně, zapíšeme-li em {color: black !important; color: red; color: yellow;}, bude kursiva žlutá!

!important uživatele
Každý uživatel si může (asi ve všech současných prohlížečích) nadefinovat styly, kterými se má prohlížeč řídit, jestliže pro daný prvek autor stránek nenadefinoval žádné pravidlo. Nachází-li se však v těchto stylech !important, platí tento a nikoliv !important autora stránek.
Kentaur
Profil
Miloš
Mockrát děkuji za to, co jsi zde již vysvětlil.
1. část jsem již znal avšak chyba M$IE je pro mne opravdu hodně přínosnou a důležitou informací - již mi napovídá několik faktů o chování prohlížeče v případech níže.


Nicméně mě zajímá konkrétnější definice chování prohlížeče v případě, že na !important naráží, jde mi především o čas, během kterého prohlížeč přečte kod až na konec.

Je myslím jasné, že po tom, co narazí prohlížeč na atribut !important, tak vlastnosti, jenž jsou totožné s vlastností, ke které je !important přiřazen a stojí dále v kodu nepřeskakuje - čte je.

Zajímalo by mne, zda tedy prohlížeč po přejetí atributu !important
a) pokračuje v absolutně normálním čtení stránky, informaci o tom že je určitá vlastnost definována jako !important si někam uloží a počítá s tím při přejetí jiné vlastnosti u stejného prvku.*
b) Zastaví se a napřed zkontroluje(s tím, že bude vše ostatní ignorovat a vyřeší to až při následné, druhé kontrole šablon) a vynuluje jiné vlastnosti u stejných prvků bez atributu !important.
Nebo c) udělá něco jiného, co mě zrovna ted nenapadá

* Pokud bude postupovat podle varianty a), tak je zde dlaší rozcestí: zpomaluje toto uložení následné čtení ostatních .css šablon už jen tím, že zde vlastnost s atributem !important byla nebo ne?
Bubák
Profil
Chyba M$IE
IE 7 se touhle chybou "řídí" ve qirku, ve standardním režimu se zachová správně. Jiné verze IE jsem nezkoušel.
Miloš
Profil
Bubák
Jakně, tohle jsem neověřoval; psal jsem to ještě v době, když IE7 neexistoval. Ď.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0