Freunde, die mit dem CSS-Box-Modell vertraut sind, glauben, dass der IE-Fehler mit doppeltem schwebendem Rand bekannt ist (wenn Sie nicht ganz klar sind, können Sie darauf klicken). Dieser Fehler wird nur im ersten schwebenden Element im generiert schwebende Zeile, wenn also die ersten schwebenden Elemente keinen doppelten Abstand haben, ohne den äußeren Rand zu verwenden. Allerdings habe ich kürzlich entdeckt, dass der IE eine Erweiterung dieses Fehlers hat.
Problem
Im folgenden Beispiel ist der äußere Patch-Rand des ersten schwebenden Elements der schwebenden Reihe aller Figuren 0
Der linke Rand von #left2 beträgt 50 Pixel und wird normal angezeigt
Wenn der linke Rand von #left2 100 Pixel beträgt, wird es normal angezeigt
Dann erhöhen wir den linken Rand von #left2 auf 150px. Es sieht etwas seltsam aus
Wir ändern die Breite von #left1 auf 110 Pixel, während der linke Rand von #left2 weiterhin 150 Pixel beträgt
Als wir das obige Phänomen sahen, stellten wir fest, dass IE wirklich eine Persönlichkeit hat. Tatsächlich ist es bei genauem Hinsehen nicht schwer festzustellen, dass die Anzeige normal ist, wenn der linke Rand von #left2 kleiner oder gleich der Breite von #left ist, aber sobald er größer als die Breite ist, treten Probleme auf wird auftreten. Der tatsächliche linke Randabstand von #left2 ist gleich #left1.width+(#left2.margin -left - #left1.width)*2
Lösung
Um diesen Fehler zu beheben ist eigentlich sehr einfach, genau wie die Lösung mit doppeltem Abstand, set #left2 {display:inline} OK.
Zusammenfassung
Der Schlüssel ist, warum ich gerade gesagt habe, dass es sich um eine Erweiterung des BUGs handelt, denn egal, ob es sich um einen doppelten BUG oder einen BUG dieses falschen Algorithmus handelt, er wird nur einmal auftreten . Vielleicht haben Sie es noch nicht verstanden, dann sagen Sie Folgendes:
1. Wenn der linke Rand von #left1 größer als 0 ist, verursacht der linke Rand von #left1 einen BUG mit doppeltem Abstand und der linke Rand von #left2 ist nicht größer als die Breite von #left1. Etwas wird schiefgehen;
2. Wenn der linke Rand von links1 gleich 0 ist und der linke Rand von #links2 größer als die Breite von #links1 ist, liegt links ein Fehler im falschen Algorithmus vor Rand von #left2, und dann wird es einen #left3 geben, auch wenn der Rand links von #left3 so groß ist wie die Breite von #left2 und es liegt kein Fehler vor;
3. Wenn der linke Rand von left1 und left2 beide gleich 0 sind, dann gibt es #left3 und der linke Rand von #left3 ist größer als (die Summe der Breiten von #left1 und #left2), dann #left3 Ein falscher Algorithmus-BUG erscheint am linken Rand. Sein tatsächlicher linker Rand ist (#left1.width+left2.width)+(#left3.margin-left-#left1.width-left2.width )*2, und dann das nach #left3 Alle schwebenden Elemente werden nicht schiefgehenDas Obige ist alles auf der linken Seite als Beispiel aufgeführt, die Situation auf der rechten Seite ist die gleiche