Wie erkenne ich den browser des Benutzers, und anwenden eines bestimmten CSS-Datei?
Muss ich erkennen, den browser und gelten die angepassten CSS-Datei.
Erstellt habe ich 3 css-Dateien: __ie.css ff.css opera.css. Jetzt muss ich erkennen, den browser, um die gute.
Ich weiß, das
<!--[if IE]>
<link href="css/ie.css" type="text/css"/>
<![endif]-->
Aber wie mache ich das gleiche mit Firefox und Opera/Chrome?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie haben, um zu erkennen, Browsern, nur um CSS anzuwenden, dann möchten Sie vielleicht überdenken Sie Ihre CSS-bevor Sie zu browser-spezifischen stylesheets. Alles was es braucht ist einen browser zu imitieren, einen anderen user-agent-string, oder eine neue version freigegeben werden, und alles bricht. Verwenden Sie den aktuellen Stand und überprüfen Sie Ihren code (http://validator.w3.org/), und Sie haben zu sorgen über weit weniger cross-browser-Probleme. Auch nur mit
<!--[if IE]><![endif]-->
ohne eine Versionsnummer zu brechen könnte das layout in späteren Versionen.That being said, wenn Sie wollen Stil die Seite anders, basierend auf welche CSS-Funktionen verfügbar sind, werfen Sie einen Blick auf Modernizr. Auf diese Weise können Sie nur prüfen Funktionen, die nicht gebrochen werden, wenn eine neue version des Browsers veröffentlicht.
Wenn alle Stricke reißen und Sie wirklich brauchen, um zu erkennen den browser des Besuchers, versuchen
jquery.browser
. Es ist aufgebaut in jQuery, und ist einfach zu bedienen. http://api.jquery.com/jQuery.browser/.Die nächstgelegene Sie kommen können mit reinem CSS ist mit Funktion Abfragen. Anstatt die Erkennung der browser-Typ/- version, es ermöglicht Ihnen zu überprüfen, ob eine bestimmte Eigenschaft/Wert-Kombinationen, die vom browser unterstützt werden.
Der folgenden ist ein Beispiel für die Verwendung der transform-Eigenschaft für die vertikale Zentrierung. Wenn der browser keine Unterstützung zu verwandeln, dann wollen wir uns nicht anpassen, Ihre Positionierung:
Browser-Unterstützung für Feature-Anfragen
Wenn Sie benötigen, um browser-Erkennung für Firefox, Opera und Chrome, dann machen Sie etwas falsch. Die gleichen CSS-sollten die arbeiten in allen von Ihnen.
Ausnahmen gibt es dabei natürlich-alle Browser haben fehlende features und bugs, die nicht in den anderen Browsern. Ein Beispiel wäre
text-overflow:ellipsis
, das nicht von Firefox unterstützt.Allerdings, wenn Sie kleben, um Häufig verwendete Funktionen, diese Fälle sind wenige und weit zwischen, und im Allgemeinen, sollten Sie wirklich nicht tun müssen browser-Erkennung in diesen Tagen, außer für verschiedene IE-Versionen.
Wenn Sie nicht sicher sind, ob die Funktionen, die Sie verwenden möchten, werden von den meisten Browsern unterstützt, können Sie herausfinden, an CanIUse.com oder Quirksmode.
Wenn Sie ernsthaft cutting-edge-features, dann ja, Sie haben Probleme mit cross-browser-Unterstützung. Aber in diesem Fall ist es in der Regel besser zu tun, feature-Erkennung, mit einem Produkt wie Modernizr, sondern als browser-Erkennung, da dies ein zuverlässiger Weg, um Sie decken alle Browser und alle Versionen, auch zukünftige Versionen (das ist eine inhärente weakeness von browser detection).
<select>
Elemente unterscheidet sich dramatisch von Firefox Quantum zu Chrome. Versteh mich nicht falsch, das ist, was ich hasse am meisten über die web-Entwicklung. Aber es ist eine Tatsache, dass noch am Leben ist ~6 Jahre nach Ihrem Kommentar und diese Antwort.-webkit-padding-start
. Die in der Tat fühlt sich viel besser als attempty zur Identifizierung des Browsers. Es passt sich einfach ein wenig und Widersprüchlichkeit, die meine app anders Aussehen auf verschiedenen Browsern.Gibt es keine conditional comments für andere Browser als IE.
Aber man kann es mit javascript: http://www.quirksmode.org/js/detect.html
Manchmal können Sie Präfix-Eigenschaften, die jeder browser Ihre eigenen Eigenschaften, basierend auf deren Präfixe und die anderen ignorieren. Folgende code füllt ein hintergrund von CSS3 gradient:
In diesem code:
Aber im Allgemeinen, browser-sniffing ist nicht der beste Weg, denn es kann leicht scheitern in neueren Browsern. Auf diese Weise haben Sie, um Benutzer-Agent-string des Browsers aus und analysieren es. Dann gelten bestimmte css-Regeln für die einzelnen browser-basiert auf die unterstützten Funktionen. Wenn die Benutzer-Agent-Zeichenfolge des Browsers ändern, in neueren Versionen, müssen Sie ändern Sie Ihre browser-sniffing-code. Angenommen, Sie möchten Unterstützung für mehrere Browser und jeder von Ihnen kann die Freigabe einige neue Versionen in einem Jahr!
Sie können die Abfrage der browser, dass, wenn es unterstützt eine bestimmte Funktion. z.B. HTML5-video:
Es ist ein feature-Erkennung Bibliothek namens Modernizr geschrieben wird, basiert auf JavaScript. Sie können es herunterladen und es mit in Ihre html-Seite. Auch müssen Sie hinzufügen 'no-js' - Klasse zu Ihrem element. Modernizer führt alle seine feature-detection tests und einige Klassen-element; so etwas wie dieses:
So, können Sie die CSS-Regeln selektiv. Zum Beispiel, Sie wollen, um eine animierte 3D-verwandeln in unterstützende Browser oder display etwas bei anderen. Betrachten Sie den folgenden code:
für Standard-Fall und unten für alternative:
Dies ist eine gute Artikel Beschreibung des Konzepts.
Vielleicht bin ich zu spät, aber doch. Die bessere Lösung ist die Verwendung CSS/JS-Browser Voraussetzung (4kb minified). Haftungsausschluss: Dies ist eine kommerzielles Produkt, die ich verkaufen.
Separate CSS-und JS-Dateien, Vergangenheit diesen code in Ihre
<html>
tag:Diese Datei wird nur geladen, für alte Browser (standardmäßig diejenigen, die keine Unterstützung CSS3 transition). Wenn Sie möchten, um separate Dateien für jede bestimmte browser können Sie das gleiche tun, aber ändern
browser.is_old
zubrowser.chrome
oderbrowser.webkit
etc...Dann schreiben Sie einige CSS für bestimmte browser in alt-browser.css (oder einer anderen CSS-Datei):