2009-03-11 6 views
0

がIEで認識できない、私は再コードこの例から、私のCSSスタイル:これにCSSのdivの[ID | = "サブペイン"]その親>のdiv CSSセレクタを知っているときにエラー

div#bodyMain div#paneLeft>div{/*styles here*/} 

div#bodyMain div#paneLeft div[id|="subPane"]{/*styles here*/} 

はここに私のHTMLスニペットです:

<div id="bodyMain"> 
     <div id="paneLeft"> 
      <div id="subPaneCategory"> 
       <p id="subPaneTitle">Shop Item Categories</p> 
       <!--other html here --> 
</div></div</div> 

問題はここに私の/ スタイルある/ありません今はMozillaで働いています。 element [attribute | = "value"]の使い方について知っておく必要があることはありますか?ありがとう

答えて

1

パイプ(|=)は、ハイフネーションされた値を照合するためのものです。 IEはおそらくパイプを無視し、Mozillaではパイプを尊重しているのでスタイルはもはや動かなくなりますが、それはマークアップ(ハイフンなし)と一致しません。

^=演算子は値の "StartsWith"と一致し、$ = "EndsWith"と一致します。私はこれらのどちらもIEによって認識されていないと確信しています。あなたは、クロスブラウザのサポートが必要な場合には、に固執することが一般的に最も安全です:

  • ele
  • #id
  • .class
  • 子孫(スペース)
  • そしてa
  • ため :hoverのようないくつかの他の限定されたもの

これはかなりです。ありがとうIE :)

+0

だから、subPaneで始まるidを持つdivを参照するための適切なCSSセレクターは何ですか?:D? –

+0

@ bgreen1989^= StartsWith、$ =はEndsWithのため –

+0

@ bgreen1989と私はどちらもIEでどちらもうまく働いていないので、あなたは全体の戦略を考え直すのがよいでしょう。\ –

0

なぜCSSクラスを使用しないのですか?

<div id="bodyMain"> 
    <div id="paneLeft"> 
     <div id="subPaneCategory" class="subpane"> 
      <p id="subPaneTitle" class="subpane">...</p. 
     </div> 
    </div> 
</div> 

そして、あなたのCSSを簡単かつクロスブラウザです:

#paneLeft div.subpane { 
    /* whatever */ 
} 

はまた、(あなたが特異性を高めるためにそれを必要としない限り)2つのIDを使用してCSSセレクタを持つにはポイントがないことに注意してください。つまり、div#bodyMain div#paneLeftはちょうど#paneLeftと書き直すことができます。

+0

複雑なセレクタではなくCSSクラスを使用するのは本当に適切で/実用的ですか? –

+0

@ bgreen1989が同意した、間違いなく。クラスは、意味値をマークアップに追加する場合にのみ使用してください。 CSSの規則はそのマークアップに適合するように曲げるべきであり、その逆ではありません。 –

+0

はい、CSSクラスを使用することは間違いありません。それが彼らのためだ! "subPaneCategory" divにクラス "subpane"を指定すると、セマンティクスが確実に追加され、class = "subpane"のものと同じ型であることが示されます。 – nickf