@@dave:
nuqneH
meiner Meinung nach die eleganteste Möglichkeit auf unterschiedliche IE-Versionen zu reagieren ist das öffnende html-Tag durch folgendes Konstrukt zu ersetzen:
<!--[if lt IE 7]><html lang="de" class="no-js lt-ie9 lt-ie8 lt-ie7"><![endif]-->
<!--[if IE 7]><html lang="de" class="no-js lt-ie9 lt-ie8"><![endif]-->
<!--[if IE 8]><html lang="de" class="no-js lt-ie9"><![endif]-->
<!--[if gt IE 8]><!--><html lang="de" class="no-js"><!--<![endif]-->
Von Eleganz keine Spur. Verstoß gegen DRY: html-Tag mit @lang-Atrribut und womöglich weiteren Attributen (@id) und Klasse "no-js" wird etliche Male wiederholt.
(IMHO ist die Klasse "no-js" auch völlig überflüssig.)
Elegant ist ein [JavaScript-Einzeiler](http://forum.de.selfhtml.org/archiv/2012/1/t208553/#m1418873):
`var ieversion = document.documentMode /*@cc_on || 7 @*/;`{:.language-javascript}
Machen wir einen Zweizeiler draus:
`if (ieversion) document.documentElement.className += " ie" + ieversion;`{:.language-javascript}
(Und ja, ich bin mir der Problematik der Verfügbarkeit von JavaScript bewusst.)
> Dann kannst du im CSS einfach über Klassen die gewünschten Versionen ansprechen, um alles kleiner IE8 zu bekommen
Das kann man auch ganz einfach ohne Klassen mit '`*+hmlt`{:.language-css}' für IE 7 (und wenn’s denn noch sein muss mit '`* html`{:.language-css}' für IE < 7.
Qapla'
--
Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
(Mark Twain)