0

ここに私は癖モードのウェブサイトを持っています。:(、そして私はいくつかのページをCSS1Compatモードにパッチしています。

既存のCSSを再利用して、1つのバージョンのみを保持したいのですが、ボックスモデルが異なるため、一部の値は癖とCSSモードで異なる必要があります。

HTMLが癖か標準モードかを判断できるセレクターはありますか?IEにはCSSハックがいくつかあることは知っていますが、ChromeとFirefoxをサポートする必要があります。

4

1 に答える 1

1

これは、HTMLの癖であるため、CSSセレクターの癖ではありませんが、quirksモードでは、idandclass属性で大文字と小文字が区別されなくなります。つまり、大文字と小文字が異なるセレクターは常に一致します。詳細については、この回答とその最初の脚注を参照してください。

すべてのページでHTMLを変更できる場合は、htmlまたはbody要素のいずれかにクラスを追加し(クラス名は関係ありません)、別のケースでは、 quirksセレクターに同じクラス名のプレフィックスを付けます。コード例は次のとおりです。

<html class="quirks">
<!-- Or: <body class="quirks"> -->
#foo {
    width: 480px;
    padding: 10px;
}

/* Capital Q instead of small q, won't match in standards mode with a doctype */
.Quirks #foo {
    width: 500px;
}

これはすべてのブラウザに適用されます。

HTMLを変更できない場合は、すべてのブラウザーに適用できる純粋なCSSソリューションがあるとは思いません。以前のバージョンのIEでは、CSS2.1セレクターを使用して、IE5の癖や古いバージョン(古き良きhtml > bodyハックなど)からスタイルを隠すことができましたが、ChromeやFirefox、または新しい相互運用可能な癖モードではこれを行うことはできません。 IE10で導入されたのは、クァークズモードと標準モードで同じ高度なセレクターをサポートしているためです。

于 2012-12-05T15:55:00.623 に答える