Ich habe ein geerbtes Projekt und es gibt Orte, an denen es ein völliges Durcheinander ist. Dies ist einer von ihnen. Ich muss nur auf IE (jede Version) abzielen.
#nav li {
float: left;
height: 54px;
background: #4f5151;
display: table;
border-left: 1px solid grey;
}
Um es klar auszudrücken : Innerhalb des eingebetteten Stylesheets und ohne IDs oder Klassen zu den Tags im HTML hinzuzufügen, muss ich den Rahmenstil nur anwenden, wenn der Benutzer IE verwendet. Wie kann ich das machen?
Bearbeiten: hat eine Lösung für Firefox gefunden und die Frage bearbeitet, um dies widerzuspiegeln.
Antworten:
Internet Explorer 9 und niedriger: Sie können bedingte Kommentare verwenden, um ein IE-spezifisches Stylesheet für jede Version (oder Kombination von Versionen) zu laden, auf die Sie speziell abzielen möchten.
Ab Version 10 werden bedingte Kommentare im IE jedoch nicht mehr unterstützt.
Internet Explorer 10 und 11: Erstellen Sie eine Medienabfrage mit -ms-hohem Kontrast, in der Sie Ihre IE 10- und 11-spezifischen CSS-Stile platzieren. Da -ms-hoher Kontrast Microsoft-spezifisch ist (und nur in IE 10+ verfügbar ist), wird es nur in Internet Explorer 10 und höher analysiert.
Microsoft Edge 12: Kann die @ support-Regel verwenden. Hier ist ein Link mit allen Informationen zu dieser Regel
Inline-Regel IE8-Erkennung
Ich habe 1 weitere Option, aber es wird nur IE8 und eine niedrigere Version erkannt.
Wie Sie für das eingebettete Stylesheet angegeben haben. Ich denke, Sie müssen Medienabfrage und Bedingungskommentar für die folgende Version verwenden.
quelle
-ms-high-contrast:active
wirkt sich auf Edge aus, wenn das System den kontrastreichen Modus verwendet.@supports
Lösung ist wirklich großartig: Die Erkennung von Funktionen ist der richtige Weg. Ich war bereit, Edge als Ziel zu wählen, da es nicht unterstützt wirdwidth: max-content
: Funktioniert@supports not (width: max-content)
ordentlich und wird ignoriert, wenn Edge es am Ende unterstützt. (Es sollte im Herbst 2019 geschehen, da es dann zum Rendern auf Chromium umgestellt werden sollte.)Hier ist eine Sammlung von Medienabfragen, mit denen Sie dies für jede Version von Internet Explorer (von IE6 bis IE11 +), Firefox, Chrome und Safari (BEARBEITEN: auch Opera hinzugefügt) ausführen können.
IE 6
oder
IE 7
oder
IE 6 und 7
oder
oder
IE 6, 7 und 8
IE 8
oder
IE 8-Standardmodus
IE 8,9 und 10
Nur IE 9
IE 9 und höher
IE 9 und 10
Nur IE 10
IE 10 und höher
oder
IE 11 (und höher ..)
Firefox (jede Version)
Firefox (nur Quantum / Stylo)
Firefox Legacy (Pre-Stylo)
Webkit (Chrome & Safari, jede Version)
Google Chrome (29+)
Safari (7.1+)
Safari (von 6.1 bis 10.0)
Safari (10.1+)
Oper (12+)
Oper (11 und niedriger)
Weitere Informationen oder zusätzliche Medienanfragen finden Sie auf der Website browserhacks.com und / oder in diesem Blogbeitrag , den ich zu diesem Thema verfasst habe.
quelle
Bei der Verwendung verwende
SASS
ich die folgenden 2,@media queries
um auf IE 6-10 & EDGE abzuzielen.http://keithclark.co.uk/articles/moving-ie-specific-css-into-media-blocks/
Bearbeiten
Ich ziele auch auf spätere Versionen von EDGE mit
@support queries
(fügen Sie so viele hinzu, wie Sie benötigen)https://jeffclayton.wordpress.com/2015/04/07/css-hacks-for-windows-10-and-spartan-browser-preview/
quelle
Für die Ausrichtung auf IE nur in meinen Stylesheets verwende ich dieses Sass-Mixin:
quelle
Eine weitere funktionierende Lösung für das IE-spezifische Styling ist
Und dann dein Selektor
quelle
Nachdem ich im High Contrast-Modus Probleme mit Websites hatte, die auf Edge kaputt gingen, stieß ich auf die folgende Arbeit von Jeff Clayton:
https://browserstrangeness.github.io/css_hacks.html
Es ist eine verrückte, seltsame Medienabfrage, aber diese sind in Sass einfacher zu verwenden:
Dies zielt auf IE-Versionen ab, die für IE8 erwartet werden.
Oder Sie können verwenden:
Welches Ziel IE8-11, aber auch FireFox 1.x auslöst (was für meinen Anwendungsfall keine Rolle spielt).
Im Moment teste ich mit Druckunterstützung, und das scheint in Ordnung zu sein:
quelle