Als Erstes müssen Sie einen guten Browser auswählen. Meine Wahl fällt auf Chrome, da es über leistungsstarke Debugging-Tools verfügt. Wenn ich mit dem Debuggen in Chrome fertig bin, fahre ich mit dem Debuggen in Safari oder Firefox fort. Wenn Sie in diesen „guten“ Browsern nicht die erwarteten Ergebnisse erhalten, liegt es wahrscheinlich daran, dass der Code selbst gegen CSS-Regeln verstößt. Anstatt zu versuchen, die Probleme zu umgehen, die bei diesen „guten“ Browsern auftreten, sollten Sie versuchen, die Ursache des Problems zu ermitteln. Normalerweise überprüfe ich die folgenden möglichen Fehlerquellen:
Als nächstes kommt der Text Das Wichtigste, das Sie sich merken sollten, ist, dass der W3C-Standard kein Fehlerverhalten definiert. Wenn Sie sich also nicht an die Spezifikation halten, kann dies in verschiedenen Browsern zu unterschiedlichen Effekten führen. Wenn Sie „seltsame“ Eigenschaften (wie etwa Ränder und Inline-Elemente) kombinieren, kann dies ebenfalls zu Fehlern in verschiedenen Browsern führen. Anzeige Für mich ist das Schreiben von CSS die Wahl einer Reise. Sie müssen einige Entscheidungen treffen. Beispielsweise müssen Sie zunächst die Elemente auswählen, die Sie mit den verschiedenen Anzeigemodi verwenden möchten: Block, Inline, Inline-Block und Tabelle. Nachdem Sie Ihre Auswahl getroffen haben, können Sie mithilfe bestimmter Methoden die tatsächliche Anzeige ändern. Blockelemente sollten Ränder, Polsterungen, Höhen und Breiten verwenden. Die Zeilenhöhe gilt jedoch nicht. Inline-Elemente sollten Zeilenhöhe, vertikale Ausrichtung und Abstand verwenden. Ränder, Abstände, Höhen und Breiten gelten jedoch nicht. Erstens haben Tabellen eine vertikale und horizontale Ausrichtung. Zweitens: Wenn in der Tabelle ein Element fehlt, kann die gesamte Tabelle merkwürdig aussehen. Schließlich gilt der Rand nicht für Tabellenzeilen und -spalten und die Polsterung gilt nicht für Tabellen oder Tabellenzeilen. Positionierung Wenn Sie Elemente auf Blockebene verwenden möchten, müssen Sie als Nächstes eine Positionierungsmethode auswählen:
Ich werde hier nicht alle Anzeige- und Positionskombinationen auflisten. Zusammenfassend sind zwei Dinge zu beachten:
Ist es beispielsweise sinnvoll, Float-, Tabellenzellen- und Inline-Elemente zu kombinieren? Wie wird der Browser die Darstellung interpretieren? Gibt es eine Definition im W3C-Standard? Andernfalls besteht das Risiko von Cross-Browser-Fehlern. Natürlich ist eine solche Kombination nicht unmöglich, aber Sie müssen genau überlegen, warum Sie dies tun möchten, und genügend Cross-Browser-Tests durchführen. Internet Explorer Nachdem Sie die Probleme mit den „guten“ Browsern gelöst haben, ist es Zeit, auf die IE-Plattform umzusteigen. Ich empfehle, mit der ältesten IE-Version zu beginnen, die Sie unterstützen möchten, da viele Probleme älterer IE-Versionen auch auf neuere Versionen übertragbar sind. Auch beim Internet Explorer sollten Sie versuchen, das Problem zu isolieren, anstatt sich auf Hacks zu verlassen. Die blinde Verwendung des *- und _-Hacks ist so, als würde man einer Funktion, die einen falschen Wert zurückgibt, ein Fixup (siehe unten) hinzufügen, anstatt den algorithmischen Fehler zu identifizieren. Code kopieren Der Code lautet wie folgt:Gib Ergebnis + 4 zurück; Natürlich ist es manchmal notwendig, in IE6 und IE7 Hacks zu verwenden. Für IE8 werden Hacks normalerweise nur verwendet, wenn CSS3-Kompatibilität erforderlich ist. Normalerweise sind die Stellen, an denen Hacks in IE6/7 erforderlich sind, die folgenden:
Es gibt auch einige weniger häufige Situationen, in denen Hacks erforderlich sind, z. B. wenn sich zwischen zwei schwebenden Elementen ein Kommentarcode befindet, der den Fehler „Duplicate Content“ auslöst. Bei CSS-Problemen, die nur im Internet Explorer auftreten, rate ich Ihnen, genau zu beschreiben, was Sie sehen, und bei Google nach der entsprechenden Lösung zu suchen. Verwenden Sie Hacks nicht blind, um einen Fehler zu vertuschen, bevor Sie die Ursache dafür gefunden haben. Die integrierten Debugging-Tools des Internet Explorers sind furchtbar. Daher müssen Sie dem Element möglicherweise eine Hintergrundfarbe hinzufügen, damit Sie das tatsächliche Layout auf der Seite leichter erkennen können. Implementierung der Lösung Wenn Sie die Ursache des Fehlers gefunden haben und wissen, wie Sie ihn beheben können, sollten Sie auch wissen, wie Sie den Code ändern können, ohne vorhandenen Code zu zerstören, der ordnungsgemäß funktioniert. Hier sind meine Vorschläge: 1. Abhängige Stilkaskadierung 2. Browserspezifische Präfixe verwenden 3. Verwenden Sie * und _ für IE6/7 4. Verwenden Sie \9 nicht für IE8 5. Wissen, wann man IE-Hacks aufgeben sollte 6. Verwenden Sie keine Hacks für die neuesten Versionen von Firefox, Chrome, Safari 1. Abhängige Stilkaskadierung Versuchen Sie zunächst, sich wann immer möglich auf die Stilkaskade zu verlassen. Browser übernehmen immer den zuletzt deklarierten Stil, den sie verstehen können. Daher sollten Sie mit dem Schreiben von Stilen für ältere Browser beginnen, damit der Browser die letzten Stile lesen und verwenden kann, die er versteht. Zum Beispiel: Code kopieren Der Code lautet wie folgt:.foo{ Hintergrundfarbe: #ccc; /* ältere Browser verwenden dies */ Hintergrundfarbe: rgba(0,0,0,0,2); /* Browser, die RGBA verstehen, werden dies verwenden */ } 2. Browserspezifische Präfixe verwenden Verwenden Sie browserspezifische Präfixe, insbesondere für Eigenschaften, die noch nicht weit verbreitet sind. Zum Beispiel: Code kopieren Der Code lautet wie folgt:.foo{ Hintergrund: #1e5799; /* Alte Browser */ Hintergrund: -moz-linear-gradient(oben, #1e5799 0%, #2989d8 50%, #207cca 51%, #7db9e8 100%); /* FF3.6+ */ Hintergrund: -webkit-gradient(linear, links oben, links unten, Farbstopp(0%,#1e5799), Farbstopp(50%,#2989d8), Farbstopp(51%,#207cca), Farbstopp(100%,#7db9e8)); /* Chrome,Safari4+ */ Hintergrund: -webkit-linear-gradient(oben, #1e5799 0%, #2989d8 50%, #207cca 51%, #7db9e8 100%); /* Chrome 10+, Safari 5.1+ */ Hintergrund: -o-linear-gradient(oben, #1e5799 0%, #2989d8 50%, #207cca 51%, #7db9e8 100%); /* Opera 11.10+ */ Hintergrund: -ms-linear-gradient(oben, #1e5799 0%, #2989d8 50%, #207cca 51%, #7db9e8 100%); /* IE10+ */ Hintergrund: linearer Farbverlauf (oben, #1e5799 0 %, #2989d8 50 %, #207cca 51 %, #7db9e8 100 %); /* W3C */ } Beachten Sie, dass dieser Code zwei Syntaxen für unterschiedliche Versionen von WebKit enthält. Die Reihenfolge der Präfixcodes sollte auch ab den alten Browserversionen geschrieben werden (siehe erste). 3. Verwenden Sie * und _ für IE6/7 Beheben Sie Fehler, die speziell bei älteren IE-Versionen auftreten, mit den Tasten * und _. Zum Beispiel: Code kopieren Der Code lautet wie folgt:.klarfix { Überlauf: versteckt; /* neuer Formatierungskontext in besseren Browsern */ *overflow: sichtbar; /* IE7 und älter vor der Overflow-Eigenschaft schützen */ *zoom: 1; /* gib IE hasLayout, ein neues Äquivalent zum Formatierungskontext */ } Alle IE-Hacks zielen auf eine bestimmte Version und alle vorherigen Browser ab, beispielsweise: _ Für IE6 und früher * Für IE7 und früher \9 für IE8 und früher (beachten Sie, dass IE9 auch auf diesen Hack einiger CSS-Eigenschaften empfindlich reagiert) Daher sollte auch mit dem Schreiben des Hack-Codes für alte Browserversionen begonnen werden (siehe erster Punkt). 4. Verwenden Sie \9 nicht für IE8 Ich würde niemals \9 verwenden, um Styling-Fehler in IE8 zu umgehen. Ich würde \9 nur als „Fallback“ verwenden, um die Browserunterstützung auszugleichen. Ich habe beispielsweise Box-Shadow verwendet (was in fortgeschritteneren Browsern gut funktioniert), aber es sah in IE8 hässlich aus, daher habe ich \9 verwendet, um einen neuen Rahmen hinzuzufügen. Diese Situation kann nicht durch die Stilkaskade (siehe erstes Element) behandelt werden, da hierdurch ein neuer Stil hinzugefügt und kein vorhandener Stil geändert wird. 5. Wissen, wann man IE-Hacks aufgeben sollte Versuchen Sie nicht, im Internet Explorer genau denselben Effekt zu erzielen. Sind Sie bereit, zusätzliche HTTP-Anfragen und komplexe HTML-/JS-/CSS-Codefragmente zu verschwenden, nur um in IE6-8 denselben Effekt mit abgerundeten Ecken zu erzielen? Für mich persönlich lautet die Antwort „nein“. Sie sollten wissen, wann Sie einen Hack für eine Funktion aufgeben sollten. Verwenden Sie beispielsweise keine Filter, um Farbverlaufseffekte in CSS3 zu simulieren, da dies zu Leistungsproblemen und typografischen Fehlern führen kann. Der einfachste Ansatz besteht darin, nicht zu erwarten, dass sich Ihre Seiten in allen Browsern genau gleich verhalten. Für Benutzer von IE 6–8 besteht der beste Ansatz darin, ihnen eine vereinfachte Benutzererfahrung zu bieten (beachten Sie: vereinfacht, nicht unvollständig). Der folgende fehlerhafte Code verwendet Filter, um CSS3-Farbverläufe zu simulieren: Code kopieren Der Code lautet wie folgt:.foo { Filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 ); /* IE6-9 */ } 6. Verwenden Sie keine Hacks für die neuesten Versionen von Firefox, Chrome, Safari Bei Stilfehlern in Firefox, Chrome und Safari sollten Sie am besten sorgfältig prüfen. Es ist sehr wahrscheinlich, dass dies daran liegt, dass Ihr Code gegen die CSS-Regeln verstößt. |
<<: Prozess des Klassenlademechanismus von Tomcat und Quellcodeanalyse
>>: Miniprogramm zur Implementierung der Token-Generierung und -Verifizierung
Kurzeigenschaften werden verwendet, um mehreren E...
Das Folgende ist ein Bild-Zoom-Effekt, der in rei...
Vorwort Ich habe vor Kurzem :first-child in einem...
Inhaltsverzeichnis Vorwort 1. Array-Traversal-Met...
Vorne geschrieben Es gibt zwei Möglichkeiten, MyS...
1. Einführung in Navicat 1. Was ist Navicat? Navi...
Die folgende Abbildung zeigt die Browser-Anzeiger...
Als ich kürzlich an CSS-Schnittstellen arbeitete,...
Inhaltsverzeichnis Klassenkomponente Funktionale ...
Der spezifische Code zum Senden von Emoticons im ...
Es besteht kein Zweifel, dass Container zu einem ...
0x00 Einführung Vor einigen Monaten habe ich eine...
1. Vorbereitung 1.1 Laden Sie das Python-Installa...
Standortabgleichsreihenfolge 1. Übereinstimmung m...
brauchen: Normalerweise wollen Websites verhinder...