2016-08-04 69 views
1

目前,框架与我共事采用了经典的clearfix:将update :: before和:: after后更新为简单::之后安全吗?

@mixin clearfix { 
    zoom: 1; 

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

    &::after { 
     clear: both; 
    } 
} 

我想知道,如果它的安全都放弃现在::before的是IE7不再支持,让我可以clearfix为了装饰目的,可能还需要伪元素的元素。我的建议是把它变成如下:

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

据我所知,因为它与::before做这只是工作,但我想绝对确保作出变化,这将影响之前如果我弄错了,几乎成千上万的用户,我不想成为那个人。

在此先感谢!

+0

我们就没有办法知道。这是特定于你的情况,所以这个问题是基于观点的,或者需要讨论,所以对于堆栈溢出来说是无关紧要的。我不清楚你为什么觉得这个变化是不可能的... –

+0

这是真的特定于我的情况吗?我认为在一个有许多不同的clearfix解决方案的世界里,这个问题有其优点。如前所述,我的目标是减少使用两个伪元素的需求,而只有一个可以实现clearfix。我只是想知道是否有人知道继续使用这两个伪元素的任何理由。我觉得为了释放两个伪元素中的一个可能需要进行更改,因此它可以用作可能还需要“内容”或“显示”属性的装饰元素。 – langauld

+0

但是你的陈述*“这会影响成百上千的用户”*是特定于你的。对于一般用途来说,它可能**很好,但如果它是关键任务,那就不同了。我们无法知道它是否在您的具体情况。只有你可以根据你的指标做出决定。 –

回答

0

我决定修改mixin,以便我可以在cue上使用简单的版本,否则允许它默认为当前版本。

我还注意到,IE8不支持任,因为有用于假点双冒号,所以我固定的太大,而我在那里...

@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; 
     } 
    } 
} 

用法:

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

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

相关问题