Nathan Smith hat mich auf dieses kleine Juwel aufmerksam gemacht. IE 8 (nur) denkt, dass alle Tabellenzellen ein colspan-Attribut haben, egal ob sie es haben oder nicht. Wenn Sie also Tabellenzellen, die dieses Attribut haben, einzigartig gestalten möchten, ist das etwas schwierig.
td[colspan],
th[colspan] {
/* WARNING: this will apply in IE 8 to table cells
even if they don't have a colspan */
background: red;
}
Was wir erwarten würden, wäre so etwas wie das hier

Stattdessen wird in IE 8 jede einzelne Tabellenzelle abgeglichen

Dies ist absolut einzigartig für IE 8. Weder 7 noch 9 tun dies, und 6 unterstützt keine Attributselektoren, also fällt das ohnehin weg. Er denkt auch, dass der Wert von colspan 1 ist, also fallen all diese weg
th[colspan],
th[colspan="1"],
th[colspan*="1"],
th[colspan^="1"],
th[colspan$="1"],
td[colspan],
td[colspan="1"],
td[colspan*="1"],
td[colspan^="1"],
td[colspan$="1"] {
/* All problematic in IE 8 */
}
Lösung
Wenn Sie diesen Selektor wirklich zum Laufen bringen müssen, können Sie stattdessen nach colspan-Werten auswählen, die etwas anderes als den Wert 1 haben. Ein bisschen umständlich, aber es funktioniert.
th[colspan*="0"],
th[colspan*="2"],
th[colspan*="3"],
th[colspan*="4"],
th[colspan*="5"],
th[colspan*="6"],
th[colspan*="7"],
th[colspan*="8"],
th[colspan*="9"],
th[colspan*="11"] {
/* Styles */
}
td[colspan*="0"],
td[colspan*="2"],
td[colspan*="3"],
td[colspan*="4"],
td[colspan*="5"],
td[colspan*="6"],
td[colspan*="7"],
td[colspan*="8"],
td[colspan*="9"],
td[colspan*="11"] {
/* Styles */
}
Charmant. Ich habe vor ein paar Wochen tatsächlich Code für ein internes Tool geschrieben, das
[colspan]verwendet hat. Ich hätte das selbst bemerkt, wenn ich die Ausgabe jemals in IE angesehen hätte (und IE8 habe ich auf diesem Rechner). Aber ich benutze Firefox, und glücklicherweise müssen die HTML-Dateien, die ich produziere, IE nicht ansprechen (yay!).Könnten Sie den Stil nicht auf alle td/th-Elemente anwenden und ihn dann für die einzelnen colspan-Elemente umkehren?
Z.B.
td, th { background-color: red; }
td[colspan=1], th[colspan=1] { background-color: white; }
Chris
Das ist genau das, was ich zuerst gedacht habe. Und es funktioniert.
Eigentlich dachte ich an etwas anderes. Dieses Beispiel würde bei anderen Browsern unangenehme Ergebnisse liefern.
Sie möchten die „Standardregel“ so definieren, dass sie nur die td/th-Selektoren enthält (für Nicht-IE8-Browser, bei denen Sie colspan nicht angegeben haben).
Z.B.
td[colspan],
th[colspan] {
background: red;
}
td,
td[colspan=”1″],
th,
th[colspan=”1″] {
background: #fff;
}
Außerdem könnten Sie die letzteren Regeln über einen bedingten Kommentar nur für IE8 bereitstellen.
Niemand sollte IE benutzen, egal welche Version.
Gähnen. Das ist so ein altes Argument. Leute haben dieses Argument über andere Browser gebracht, als IE6 zum ersten Mal herauskam.
Benutzen Sie jeden Browser – aber benutzen Sie die neueste Version.
Nun, selbst wenn ich Anfänger bin, war das Schwierigste, das ich beim Schreiben von CSS empfand, es in IE und allen anderen zum Laufen zu bringen. IE will einfach nicht kooperieren. IE sagt so etwas wie: „Ich bin völlig anders als die anderen. Ich mache es auf meine Weise…“.
Denken Sie daran, wenn es IE und all seine Kopfschmerzen nicht gäbe, würden CEOs und Hausfrauen das Web mit Front Page WYSIWYG-Mist überfluten (ähnlich wie vor 15 Jahren). Ich bin gut mit IE-Fehlern und das ist ein Grund, warum ich meinen Job habe. DANKE MS!
Was rauchen die bei MS?
Rauchen UND Trinken, könnte ich hinzufügen.
Sieht nach einem guten Ort aus, um Modernizr einzusetzen, oder?
Sie müssten immer noch all den zusätzlichen, auf IE8 ausgerichteten Unsinn schreiben, aber zumindest könnten Sie ihn vom schönen, normalen Zeug trennen.
Obwohl ich glaube, dass das Hinzufügen von `.ie8` vor all diesen Selektoren einen kleinen zusätzlichen Markup-Aufwand bedeuten würde….
Ich lerne gerade etwas Neues :)
Vielen Dank!
IE7 hat den gleichen Fehler
Bei meinen Tests tut er das nicht.
Stimmt! Ich habe es unter Windows 7 IE9 getestet, indem ich die Modi gewechselt habe :)
Vielleicht sollten Sie es in einer tatsächlichen Kopie von IE7 testen.
IE7 (Standardmodus): funktioniert (nur colspan th, td sind rot)
IE7 (Quirks-Modus): funktioniert nicht (_KEINE_ th, td sind rot)
Interessant! IE arbeitet hart daran, seinem Ruf gerecht zu werden :)
Ja, das ist absolut, weil
IE IST SCHEISSE UND SOLLTE ZERSTÖRT WERDEN!!!!
Warum, ich meine, WARUM benutzt irgendjemand diesen bei der Auslieferung obsoleten Browser??? WTF Leute WACHT AUF!
Weil es eine ganze Reihe von Vorteilen für Systemadministratoren gibt. Der Hauptgrund dafür ist, sicherzustellen, dass sie keine internen Webanwendungen ihres Unternehmens kaputt machen. Sie kümmern sich nicht um die neuesten HTML5-Funktionen, aber sie kümmern sich um Kopfschmerzen, wenn sie millionenschwere Anwendungen zerstören, wenn ein Browser wie Firefox automatisch aktualisiert und ihre Anwendung kaputt macht.
Der IE arbeitet hart daran, seinem Ruf gerecht zu werden..
Willst du einen guten EQ-Test? Administriere IE.
Großartige Ausnutzung. Ich überspringe IE8 jedoch einfach. <meta http-equiv=”X-UA-Compatible” content=”IE=7, IE=edge” /> Ich weiß, dass ich meinen Goldstern für die Validierung verliere, aber IE6 & IE7 können mit einem Legacy-Stylesheet (typischerweise) angesprochen werden. Weiter zu modernen Browsern…
colspan=”0″? Was würdest du mit einem colspan-Wert von null machen?
IE (7, noch nicht auf anderen getestet) zeigt die Zelle trotzdem an und wendet den Hintergrund _nicht_ an.
Fx und Chrome zeigen die Zelle ebenfalls an und wenden den Hintergrund an.
Nun ja, aber gibt es tatsächlich Gründe, warum ein Entwickler colspan=”0″ verwenden würde?
außer als Workaround für diesen spezifischen Bug?
Mir fällt keiner ein. : )
IE oder ein anderes Wort dafür ist Internet Exploder. Markieren Sie dies als einen weiteren IE-Fehler
Wenn IE8 :not unterstützen würde, wäre es einfach, das zu umgehen
td[colspan]:not([colspan=”1″])
aber nun ja, nur ein weiterer IE-Bug, wie viele andere…
Mensch, werden die Jungs bei MS jemals einen „modernen“ Browser herausbringen, der funktioniert. Seufz…
Das haben sie. Hast du IE 9 nicht gesehen?
IE9 ist ein recht schöner moderner Browser im Vergleich zu IE 8 und darunter.
So sehr mich die Browserkompatibilität mit IE Kopfschmerzen bereitet, gibt es eine einfache Lösung für diesen Beitrag… Hören Sie auf, Tabellen zu verwenden!!
Interessanter Beitrag. Schönes Tutorial und funktioniert einwandfrei mit allen Browsern.
Vielen Dank.