9

CSS3を使用して、特定のクラスの要素内にない要素を選択する方法はありますか? たとえば、以下の例では、class="bar"要素の内部にないclass="foo"(つまり、要素ではid="2"ないid="1") 要素を選択するにはどうすればよいですか?

<div class="foo">
  ... arbitrary depth ...
    <div class="bar" id="1">
      ...
    </div>
  ...
</div>
...
  <div class="bar" id="2">
    ...
  </div>
...
4

4 に答える 4

3

MDNによると:not()、いくつかの条件に従って要素に一致し、「非要素」は返されません。

すべての親を何らかの条件でテストする疑似セレクターを知らないので、個人的には次のような回避策を使用します。

div {background: yellow;}
.bar {background: green;}
.foo .bar {background: yellow;} /*repeat original styles changed by .bar*/
于 2013-04-12T15:19:43.693 に答える
0

残念ながらそうではありません。これを機能させる唯一の方法は、:not 構文を使用し、要素またはクラス名で 1 層の深さを指定することです。

ここにフィドルがあります:http://jsfiddle.net/2V7Wc/

html

<div class="foo">
    <div class="bar" id="one">
    </div>
</div>
<div class="bar" id="two">
</div>

CSS:

.bar:not(#one) {
   /* styles */
}
于 2013-04-12T15:08:41.073 に答える
0

私は以下を使用します:

.bar {
    color:red;
}

.foo ~ .bar{
    color:green;
}

このデモを参照してください: http://jsfiddle.net/QR3kP/

于 2013-04-12T15:26:03.770 に答える