0

私のスキンには次の CSS があります。

dl.definition dd:last-child {
    margin-bottom: 0;
}
/* IE class */
dl.definition dd.last-child {
    margin-bottom: 0;
}

2番目はIE専用ですが、これらを1つに結合することは可能ですか?

答えてくれてありがとう。

dl.definition dd:last-child, 
dl.definition dd.last-child {
    margin-bottom: 0;
}
4

4 に答える 4

1

あなたが望んでいた解決策はうまくいきません:

dl.definition dd:last-child, 
dl.definition dd.last-child {
    margin-bottom: 0;
}

これが機能しない理由は、古いバージョンの IE に関する限り、dd:last-child無効なセレクターであり、ブロック全体が破棄されるためです。有効なセレクターも含まれているかどうかは問題ではありません。無効なもののためにすべてが破棄されます。

物事を改善する方法に関するいくつかのオプションと、あちこちでコードを複製する手間を省く...

  1. IE をアップグレードします。Selectivizrie7.js/ie8.js/ie9.jsなど、 IE にパッチを適用してより多くの CSS セレクターをサポートするようにするJavaScript ライブラリが利用可能です。:last-childこれらのほとんどすべてのライブラリに含まれています。

  2. CSS をダウングレードします。古い IE バージョンをサポートするために、既にクラスをコードに記述しているため、すべてにそれを使用し、セレクター.last-childの使用は忘れてください。:last-childそうすれば、すべてのブラウザーに必要なセレクターは 1 つだけです。

  3. 優雅な劣化。IE 固有のコードを削除し、古い IE ユーザーがわずかに壊れたページを表示できるようにします。使い勝手に問題ない程度であれば大したことないかもしれません。古い IE ユーザーはそれほど多くないかもしれません (そして、その数は減少し続けるでしょう)。また、古い IE をまだ使用しているユーザーは、最近、わずかに壊れた (またはさらに悪い) サイトを目にすることに慣れています。

  4. :first-childの代わりに使用するレイアウトを再配置します:last-child:first-childのサポートははるかに優れています (古い IE にはバグがありますが、IE7 に戻ります)。

  5. SASS や Lessなどの CSS コンパイラを使用すると、CSSをサイトにデプロイするときに実際の CSS コードに変換する前に、より論理的で構造化された形式で CSS を記述できます。

うまくいけば、これらのソリューションの1つがうまくいくでしょう。私の提案は Selectivizr ライブラリですが、上記のいずれも実行可能なソリューションを提供するはずです。

于 2013-01-03T15:07:30.173 に答える
0

あなたの質問に対する正確な答えではありませんが、IE6とIE7の回避策はここにあり、単一のcssファイルでプロパティを使用できることを示しています。

これにより、さらに洗練されたソリューションが得られます。

また、単一のcssファイルで複数のプロパティを使用でき、ブラウザがそれを理解しない場合、ブラウザはそれを無視します。ブラウザのスマートさの向上に乾杯。:-)

于 2013-01-03T13:30:05.127 に答える
0

IE の条件付きコメント。CSSを選択したいIEのバージョンを指定できます

于 2013-01-03T13:47:21.863 に答える