IE6/Win id & class combo bug
Tiszteletem minden fórumozónak!
Belefutottam ma egy érdekes IE hibába, de már nem is vagyok benne biztos, hogy hiba... :)
Történt, hogy pontosan azt akartam megcsinálni, amit ezen az oldalon http://jan.moesen.nu/code/html-css/ie-id-class-combo-bug/ veséznek ki. Adott egy oldalon, egy (azaz 1!!!) div, aminek van egy id-je - maradjunk a peldanal - legyen #buggydiv. Amikor az oldal generalodik a szerveroldalon, lehet, hogy .highlighted class-t, de lehet, hogy .lowlighted class-t teszek rá. Akkor értelemszerűen a css-ben mindkettő deklarálnám, #idName.className { /* . . . */ } formában.
Kipróbáltam simán működik FireFox és Opera alatt is és nem is látok benne semmilyen kivetnivalót. Az id csak egyszer fordul elő az oldalon, a classt megadtam, mi kell még? Mondanom sem kell IE alatt nem megy, az tapasztalható, amit a már említett oldalon is olvasható, az IE csak az elsőként megadott deklarációt értelmezi.
Gyakran használom az IE7-et, hát gondoltam megnézem, hogy javítja-e a feltételezett bugot. Nem javítja... :(
Gondoltam lelkes újoncként felvetem a témát az IE7 SourceForge fórumán. :) https://sourceforge.net/forum/forum.php?thread_id=1133148&forum_id=379297
Azt a választ kaptam - Deantől is -, hogy ez így helytelen kódolás és nem érdemes javítani.
Tudom, hogy pikk-pakk ki lehet kerülni az ilyen deklarációkat, nem is ez a gondom, csak most már nagyon érdekel, hogy mi a túró van.
Szerintetek helyes egy ilyen kiválasztó deklaráció? Kinek van igaza? Az IE-nek, vagy a FireFox-nak?
Boccs, hogy hosszú lettem...
w
■ Belefutottam ma egy érdekes IE hibába, de már nem is vagyok benne biztos, hogy hiba... :)
Történt, hogy pontosan azt akartam megcsinálni, amit ezen az oldalon http://jan.moesen.nu/code/html-css/ie-id-class-combo-bug/ veséznek ki. Adott egy oldalon, egy (azaz 1!!!) div, aminek van egy id-je - maradjunk a peldanal - legyen #buggydiv. Amikor az oldal generalodik a szerveroldalon, lehet, hogy .highlighted class-t, de lehet, hogy .lowlighted class-t teszek rá. Akkor értelemszerűen a css-ben mindkettő deklarálnám, #idName.className { /* . . . */ } formában.
Kipróbáltam simán működik FireFox és Opera alatt is és nem is látok benne semmilyen kivetnivalót. Az id csak egyszer fordul elő az oldalon, a classt megadtam, mi kell még? Mondanom sem kell IE alatt nem megy, az tapasztalható, amit a már említett oldalon is olvasható, az IE csak az elsőként megadott deklarációt értelmezi.
Gyakran használom az IE7-et, hát gondoltam megnézem, hogy javítja-e a feltételezett bugot. Nem javítja... :(
Gondoltam lelkes újoncként felvetem a témát az IE7 SourceForge fórumán. :) https://sourceforge.net/forum/forum.php?thread_id=1133148&forum_id=379297
Azt a választ kaptam - Deantől is -, hogy ez így helytelen kódolás és nem érdemes javítani.
Tudom, hogy pikk-pakk ki lehet kerülni az ilyen deklarációkat, nem is ez a gondom, csak most már nagyon érdekel, hogy mi a túró van.
Szerintetek helyes egy ilyen kiválasztó deklaráció? Kinek van igaza? Az IE-nek, vagy a FireFox-nak?
Boccs, hogy hosszú lettem...
w
helytelen kódolás?
és úgy volt, hogy voltak id="message" meg class="info" attribútumok és a rájuk vonatkoztatott szabályok külön-külön működtek is (#message{} és .info{}) de együtt nem. :-|
fogtam az id-t és visszaminősítettem class-nak, mert nem volt túl nagy jelentőssége.
... ééés: gyorsan bepötyögve a
text-align: right;
}
text-align: right;
}
...ugyanakkor bepróbáltam egy ilyen kódot is, ie-vel hogy
<head>
<style type="text/css"><!--
.class#id{
background: red;
}
#id.class{
background: green;
}
--></style>
</head>
<body>
<div id="id" class="class">
div
</div>
</body>
</html>
sőt - legjobb tudomásom szerint - standardos módba kapcsolva is, egy
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu" lang="hu" dir="ltr">
úgyhogy, lehet a hiba az ön készülékében / HTML-CSS kódjában van.
nálam internet exploiterből 6.0.2600.0 magyar van feltelepítve, mindenféle és fajta patch, egyéb kiegészítő nélkül.
és (szvsz) a firefox-nak meg a dom inspectornak mindig igaza van. legalábbis biztos igazabbja mint a explorer-nek ...
bbalint
elvileg mindegy a sorrend
: simple_selector [ combinator simple_selector ]*
;
simple_selector
: element_name? [ HASH | class | attrib | pseudo ]* S*
;
eszerint HASH es class kozott nincs sorrendi kulonbseg!
De nagyon jo, hogy kiderult a classID sorrend mert Inertian is volt multkor ez a problema.
Mindig csak az elsőt értelmezi...
<head>
<style type="text/css"><!--
.blue#id{
background: blue;
}
.red#id{
background: red;
}
--></style>
</head>
<body>
<div id="id" class="red">
div
</div>
</body>
</html>
A helyzet változatlan. :( IE mindig csak az első deklarációt értelmezi, tehát az említett példa nem lesz piros. Nem csinál semmit (kék sem lesz!), nem rendel hozzá szabályt. FireFox és Opera mindkettőt tudja értelmezni, akár red-et akár blue-t irok a div-hez class-nak, értelmezi függetlenül attól, hogy a kék vagy piros stílust deklarálom először a forrásban.
Nem akarok rágódni ezen a csonton, mert tényleg nem egy nagy valami, de szerintem akkor is IE bug... :)
hát ja