2016-10-20 6 views
0

私は自分のscssセレクタでいくつかの重複を削除しようとしています。私はこのようにそれを書き換えてみましたアンパサンドを使用するときに構文上の親をどのようにターゲットできますか?

.container { 
    .operation { 
    color: green; 
    } 
    .row.is-active &, 
    .row:hover & { 
    .operation { 
     color: inherit; 
    } 
    } 
} 

.container { 
    .operation { 
    color: green; 
    } 
    .row & { 
    &.is-active, &:hover { 
     .operation { 
     color: inherit; 
     } 
    } 
    } 
} 

しかし、これは.is-active.containerの代わりに、アンパサンドを使用しているとき、私は構文親をターゲットにすることができますどのように.row

に適用されますか?

+0

期待される出力は何ですか? –

+0

@Mr_Green期待される出力は最初の賛美の例(これは有効な例です)の結果です –

+0

@ WillemD'Haeseleer私はあなたの質問を理解したので、私は以下の答えを修正しました。うまくいけば助けになります:) – shaune

答えて

0

最初に間違って理解していたので、もう一度質問に答える時間がありました。残念ながら、現時点でSASSでこれを行う方法は全くありません。セレクタや文字列を操作するために、さらに進化したSASS functionsを使用しようとしても、これは不可能です。

Stylusを使用して行うことが可能であるいくつかの良いニュース

があります。 私はcodepenでライブExampleを作成しました。

// Stylus - not SASS 
    .container { 
    .operation { 
     color: green; 
    } 
    .row { 
     ^[-1..-1]:is-active ^[0], ^[-1..-1]:hover ^[0] { 
     .operation { 
      color: inherit; 
     } 
     } 
    } 
    } 

は、私はそれがオプションであなたを提供するかもしれない、これは非常に少なくとも、何らかの方法であなたを助け願っていますが、残念ながらSASSは、あなたがしようとしているものを達成することはできません。

+0

申し訳ありません私はあなたが何を意味するか分からない。私の最初のscssの例は有効なscssなので、そこからコンパイルされた出力は期待される出力です。私はちょうど.rowセレクタを複製することなくそれを書こうとしています。 –

+0

あなたの最初の例から結果と結果を見直しました。私は結果を複製することができることを確かめるために、CSSの出力を確認してテストすることができました。 私の結果はCSSの出力とは異なります。私は本当に助けることができない、さらなる情報なしで、申し訳ありません。 – shaune

+0

ありがとう、私は努力を感謝しますが、スタイラスでは、提案されたソリューションは、目的を無視して元のソリューションより複雑です。 –

関連する問題