2016-08-04 50 views
1

Derzeit wird ein Rahmen mit denen ich arbeite nutzt die klassischen clearfix:Ist es sicher, update :: before und :: after clearfix zu einem einfachen :: nach einem?

@mixin clearfix { 
    zoom: 1; 

    &::before, 
    &::after { 
     content: ''; 
     display: table; 
    } 

    &::after { 
     clear: both; 
    } 
} 

Ich mag würde wissen, ob es sicher ist, jetzt die Verwendung des ::before fallen zu lassen, dass IE7 wird nicht mehr unterstützt, so dass ich clearfix kann ein Element, das möglicherweise auch ein Pseudoelement für dekorative Zwecke benötigt. Mein Vorschlag ist es in den folgenden drehen:

@mixin clearfix { 
    &::after { 
     clear: both; 
     content: ''; 
     display: table; 
    } 
} 

Soweit mir bekannt ist dies nur funktionieren wird, wie es mit dem ::before tut, aber ich wollte absolut sicher machen, bevor sie die Änderung als diese beeinflussen würde buchstäblich Hunderttausende von Benutzern, wenn ich falsch liege, und ich will nicht dieser Typ sein.

Vielen Dank im Voraus!

+0

würden wir wissen, keine Möglichkeit haben. Dies ist spezifisch für Ihre Situation und daher ist diese Frage meinungsbasiert oder erfordert eine Diskussion und ist daher für Stack Overflow off-topic. Ich bin unklar, warum Sie diese Änderung für notwendig halten ... –

+0

Ist es wirklich spezifisch für meine Situation? Ich würde behaupten, dass diese Frage in einer Welt mit vielen verschiedenen Clearfix-Lösungen eine große Rolle spielt. Wie bereits erwähnt, ist es mein Ziel, die Notwendigkeit, beide Pseudoelemente zu verwenden, zu reduzieren, wenn ein Clearfix mit nur einem erreicht werden kann. Ich fragte mich nur, ob irgendjemand irgendeinen Grund kannte, beide Pseudoelemente weiter zu verwenden. Ich denke, dass die Änderung notwendig sein kann, um eines der beiden Pseudoelemente freizugeben, so dass es als dekoratives Element verwendet werden kann, das auch die Eigenschaften "Inhalt" oder "Anzeige" erfordert. – langauld

+0

Aber Ihre Aussage * "Dies würde buchstäblich Hunderttausende von Benutzern beeinflussen" * IST spezifisch für Sie. Für den allgemeinen Gebrauch ist es ** wahrscheinlich ** in Ordnung, aber wenn es missionskritisch ist, dann ist das anders. Wir haben keine Möglichkeit zu wissen, ob es in Ihrem speziellen Fall ist oder nicht. Nur Sie können diese Entscheidung treffen ... basierend auf Ihren Metriken. –

Antwort

0

Ich habe mich entschieden, das Mixin so zu modifizieren, dass ich die einfache Version auf Cue verwenden kann, ansonsten kann es auf die aktuelle Version voreingestellt werden.

Ich habe auch bemerkt, dass IE8 wurde entweder nicht unterstützt, da es doppelt Doppelpunkte für die pseudos verwendet werden, so dass ich feste auch, dass, während ich dort war ...

@mixin clear-fix($simple: false) { 
    @if $simple != true { 
     zoom: 1; 

     &:before, 
     &:after { 
      content: ''; 
      display: table; 
     } 

     &:after { 
      clear: both; 
     } 
    } 
    @else { 
     &::after { 
      clear: both; 
      content: ''; 
      display: table; 
     } 
    } 
} 

Verbrauch:

@include clear-fix; // prints out old-skool :before/:after with IE7/8 support

@include clear-fix(true); // prints out simple ::after method