2017-02-07 15 views
0

私は一度に1つしか表示されないdivのリストを持っています。これは、親が持つ属性値に依存します。たとえば:親と同じ属性値を参照するCSSセレクタ

HTML:

<div id="parent" data-something="c"> 
    <div class="children" data-something="a"></div> 
    <div class="children" data-something="b"></div> 
    <div class="children" data-something="c"></div> 
    <div class="children" data-something="d"></div> 
</div> 

はCSS:

.children 
{display: none;} 

#parent[data-something="a"] .children[data-something="a"] 
{display: block;} 

#parent[data-something="b"] .children[data-something="b"] 
{display: block;} 

/* etc. */ 

は、私は、このセレクタは、親属性値に基づいて、対応する子供たちを選ぶことができます方法はありますか?

ような何か:

#parent[data-something="*"] .children[data-something="*"] 
{display: block;} 

背後にある理由は、私は私が持っていることと、私は方法があるかどうかを確認したい、純粋なCSSで、あらゆる可能性を書いて避けるために、どのように多くの子どもたちわからないです

+0

最初の例で行ったように、唯一の方法はすべてのオプションに対して行うことです。私はあなたがそれらのデータ属性を出力するためにサーバー側言語のいくつかの並べ替えを使用していますか?そうであれば、あなたのサーバ側の言語は複雑なことをするべきです(すべてのCSSはスタイリングのためのものです)。そして属性が親属性と一致するときにクラスを追加してください。 – Pete

+0

@PeteこれがおそらくJavaScriptは何アイテムあるのか分からず、CSSで1000個の可能性を生み出さないことを好みます。 – Alvaro

+0

@NenadVracarこの提案をありがとう。さて、JavaScriptを使用して親が変更されています。あなたの提案は同じですが、それ以外の方法では問題は解決しません。 – Alvaro

答えて

0

したがって、祖先のdata-somethingプロパティの値が常にdata-something子孫のプロパティの値と同じである汎用値descendant selectorが必要ですか。

残念ながら、これはCSSでは不可能です。

+0

答えをありがとうが、これは問題を解決しません。 – Alvaro

+0

@Alvaro:まあ、「属性値」ではなく「属性」と言っていましたが、それはあなたが後者を意味していることが明らかであると判断しました。 – BoltClock

+0

@BoltClockありがとう、質問が編集されました。 – Alvaro

関連する問題