2016-04-14 6 views
1

非常に論理的なので、HTMLとSASSで属性モジュールを使用します。SASSのターゲット属性値

[data-post] { 
    font-size: 15px; 
    color: black; } 

[data-post~="title"] { 
    font-size: 20px; } 

[data-post~="title"][data-post~="feature"] { 
    font-size: 30px; } 

が正常に動作しますが、それは巣にSASSでこれらのことが可能です場合、私は思ったんだけど:SASSは次のようになります

<article data-post="wrap feature"> 
    <h1 data-post="title feature">Feature title</h1> 
</article> 

<article data-post="wrap"> 
    <h1 data-post="title">Normal title</h1> 
</article> 

:現在、私はこのようなマークアップを有することができます。それらはすべて[data-post]に適用されるので、その中の属性を対象にしたいと思います。

[data-post] { 
    font-size: 15px; 
    color: black; 

    &[~="title"] { 
    font-size: 20px; } 

    &[~="title"]&[~="feature"] { 
    font-size: 30px; } 
} 

これは、コードをよりDRYと簡単に、より論理的だろう/維持:私は(明らかに動作しません)このようなものを想像しています。

+0

代替の複製:http://stackoverflow.com/questions/30400162/how-can-i-add-additional-information-to-an-attribute-selector-via-nesting-in-sas – cimmanon

答えて

1

これは近いです。そのたびに、子セレクタの属性名を再入力する必要があります。クラスとIDはtacking on an ending to the parent classで取り除かれますが、同じアイデアを属性に拡張すると、2番目のセレクタは[data-post][~="title"]になります。

だから:そこにあなたを取得する必要があります

[data-post] { 
    font-size: 10px; 

    &[data-post~="title"] { 
    font-size: 50px; 
    color: blue; 
    } 
} 

http://jsbin.com/kazusamore/edit?html,css,js,output

+0

ここの問題はあまり乾燥していないということです。これがtitle、description、link、imageなどの要素の多くの値を持つように拡張されると、属性は指定された時間の負荷を持つようになります。 – Coop

+0

おそらく、それはサスが働く方法です。最終的には、とにかくこのようなことにクラスを使う方が良いと思います。このようにした方が良いと思われますが、正当な理由があると仮定して質問に答えました。属性を簡単に、より多くDRYしようとしているように、クラスをネストして拡張することができます。 これは重複しているとマークされている質問は、あなたが本当にやるべきことがあるかどうかを求めているより複雑な方法を持っています。 – alexbea

+1

イェフ・フェア・プレイ。私はクラスに変更する可能性があります。私は本質的に、よりセマンティックなマークアップのための属性モジュールと、クラスと拡張のBEM方法論を混在させようとしていました。 – Coop