Ist es besser, für jeden User-Agent eine andere CSS-Datei zu haben oder ist es besser, CSS-Hacks zu verwenden, die nur bestimmte Browser sehen können?Was ist der richtige Weg, um mit CSS-Browser-Kompatibilität umzugehen?
Antwort
Weder.
Am besten schreiben Sie Code, der in allen Browsern funktioniert, ohne dass browserspezifischer Code oder css-Hacks benötigt werden. Es ist natürlich nicht ganz so einfach zu erreichen, weshalb viele Leute die anderen Methoden verwenden.
Der Schlüssel ist, Dinge zu vermeiden, die einige Browser (sehr oft Internet Explorer) Probleme haben. Eine Sache ist es, Padding statt Margin zu verwenden, da der Randbereich nicht korrekt verarbeitet wird.
Einige Methoden, die sich in der Grenzlinie von Hacks befinden, verwenden Code, der nicht die Browser beeinträchtigt, die ordnungsgemäß funktionieren, behebt jedoch Probleme für einen bestimmten Browser. Das kann etwas wie die Angabe einer Höhe für ein Element sein, das normalerweise kein Element benötigt, oder die Angabe von für ein Floating-Element.
Die Seite Position is everything enthält Beispiele für einige Fehler und vorgeschlagene Korrekturen. (Oft ist der Fix eine Art Hack, also sollten Sie natürlich auch überlegen, ob Sie das Problem überhaupt vermeiden können.)
Weder wenn möglich. Jetzt, da das alte Netscape, IE < = 6 usw. nicht mehr wirklich so häufig verwendet wird, versuche ich Funktionen zu verwenden, die in all diesen Browsern funktionieren (z. B. FF> = 2, IE> = 7, Chrome, Opera).
IE6 ist immer noch weit verbreitet, es ist etwas zwischen 15 und 20% des Marktanteils je nach Quelle. – marcgg
Es ist besser, keine zu tun.
Ein guter CSS-Reset und CSS, das funktioniert der gleiche Browser ist eine viel bessere Lösung.
Wenn Ihr Design dies absolut ausschließt, dann (und nur dann) würde ich versuchen, Hacks oder IE bedingte Kommentare.
Ich habe noch nicht die Notwendigkeit für mehrere CSS-Dateien (über ein paar IE6 Korrekturen durch einen bedingten Kommentar angesprochen) gesehen.
Conditional comments für Probleme mit Internet Explorer scheinen die Norm zu sein. Kombiniert mit ein wenig JavaScript, wie Dean Edward's ie7.js, können Sie die meisten Cross-Browser-Probleme abmildern, ohne auf Hacks innerhalb Ihrer CSS-Dateien zurückgreifen zu müssen.
ist es besser, eine andere CSS-Dateien für Internet Explorer 6-7 (einschließlich sie über conditional comments) und Hacks für andere Browser zu verwenden.
Eine Art von Follow-up ist, wie Sie die einzelne Datei entwickeln, die funktioniert.
Der beste Ansatz, den ich gesehen habe, ist von nichts zu beginnen, langsam aufzubauen und Änderungen durch Änderung zu überprüfen, dass es immer noch kompatibel mit Ihren Kern-Browsern ist (besonders den problematischen).
Wenn Sie es vollständig mit einem Browser arbeiten und dann sagen "Zeit, um es zu konvertieren" ist, wenn der Schmerz wirklich beginnt und wo Sie anfangen müssen zu hacken.
My approach mit einer PHP-Klasse, um os, Browser und Browser-Version zu erkennen. Sie können jede Version von fast jedem Browser auf jedem Betriebssystem als Ziel auswählen.
- 1. Was ist der richtige Weg, um mit Mongodb-Verbindungen umzugehen?
- 2. Was ist der beste Weg, um mit JSON-Objekt umzugehen?
- 3. Was ist der beste Weg, um mit dem Änderungsmanagement umzugehen?
- 4. Was ist der richtige Weg um umzuleiten?
- 5. Was ist der richtige Weg, um mit dieser ASP.NET-Validierung umzugehen?
- 6. In einer Einzelseiten-App, was ist der richtige Weg, um mit falschen URLs umzugehen (404 Fehler)?
- 7. Was ist das richtige Design, um damit umzugehen?
- 8. Was ist der richtige Weg, um eine Bildunterschrift mit html5
- 9. Was ist der richtige Weg, um eine Datei mit CUploadedFile
- 10. Was ist der richtige Weg, mit tiefer Rekursion in der boost :: spirit :: qi Grammatik umzugehen?
- 11. Was ist der beste Weg, mit AWT Graphics Kontexten umzugehen?
- 12. Was ist der richtige Weg, um eine ListBox zu laden?
- 13. Lucene: Was ist der richtige Weg, um eine Suche abzubrechen?
- 14. Was ist der richtige Weg, um die Argumente eines Konstruktor
- 15. Was ist der richtige Weg, um FB.Event.subscribe zu behandeln?
- 16. Was ist der richtige Weg, um Berechtigungen zu adressieren?
- 17. Was ist der richtige Weg, um in Rails zu zählen?
- 18. Was ist der richtige Weg, um scala.io.Source zu verwenden?
- 19. Was ist der richtige Weg, um diese Informationen zu erhalten?
- 20. Was ist der richtige Weg, Testbereiche um Ausnahmen zu gruppieren
- 21. Was ist der richtige Weg, um Block in Initialisierungsmethoden einzurichten?
- 22. Was ist der richtige Weg, um den Fall zu vergleichen?
- 23. Was ist der richtige Weg, um die CSV-Datei einzuloggen?
- 24. Was ist der richtige Weg, um log4j in JSP-Seiten
- 25. Was ist der aktuelle richtige Weg, um Edelsteine zu veröffentlichen?
- 26. Was ist der richtige Weg, um Controller-Aktionen zu erstellen?
- 27. Was ist der richtige Weg, um Montageversion zu behandeln?
- 28. Was ist der richtige Weg, um eine QList zu initialisieren?
- 29. Was ist der richtige Weg, um EF-Warnungen zu unterdrücken?
- 30. Was ist der richtige Weg um Transienten zu markieren?
Die meisten Probleme, die Sie beschrieben haben, hängen von der Einstellung des Doctype ab. Wenn Sie das nicht tun, dann werden Sie radikale Unterschiede zwischen den Browsern haben.Doctype mit einem CSS-Reset löst fast alles bei normaler Nutzung. – NotMe
Nein, was ich beschrieben habe, gilt auch, wenn Sie einen richtigen Doctype und gültigen Code haben. Ohne es geht dir viel schlechter. – Guffa