2017-08-30 13 views
1

私が取り組んでいるプロジェクトで、擬似要素の古い宣言と新しい宣言をサポートする必要があります。私はSCSS @mixinを作成して、自分自身を繰り返さなくても済むようにしたいと思っています。@mixin for pseudo element

私は次のことを達成したいと思っています:

宣言:

.selector { 
    &#{$before} { 
    content: ''; 
    } 
} 

がコンパイル:

.selector:before { content: ''; } 
.selector::before { content: ''; } 

をだから私は基本的に両方のために従ってください@mixin@extendに任意のCSSプロパティを必要とします:beforeおよび::before

私はこれを解決することなく、高低を検索しました。彼らの魔術師の魔法使いは私の夢を現実にすることができますか?

はここで事前

答えて

1

にありがとう、あなたは芽を行く:

@mixin pseudo-element($element) { 
    &:#{$element}, &::#{$element} { 
    @content; 
    } 
} 

// Usage: 

.foo { 
    @include pseudo-element('before') { 
    content: ''; 
    } 
} 

出力:

.foo:before, .foo::before { 
    content: ''; 
} 

CodePen:https://codepen.io/esr360/pen/VzVBpj

+0

こんにちは。うわー!何らかの理由で、私は自分の学習の中で '@ content' SCSS宣言を見逃しました。これによりすべてが変更されます(もう一度)。私が変更したのは、それぞれの擬似要素をコンマで区切ったことだけでした。私の理解は、 ':: before'を認識しないブラウザは':before'も無視しないように分離する必要があるということです:https: //codepen.io/anon/pen/MvzBmL。ありがとう。 – danMad

+0

心配はいりません!はい、あなたが行った変更を行うのは正しいですが、私は忘れていましたが、コンマと組み合わせて使用​​する際に問題があることを忘れていました。(参考:https://stackoverflow.com/a/10181948/2253888) –

+0

とても有難い。 – danMad