2

ここで提供されるこのclearfixソリューションに注意してください。

HTML [xmlns]に別のスタイルが定義されているのはなぜですか?

これは特定のブラウザをターゲットにするように設計されたCSSハックですか?

更新:これが問題のコードです。私の意見では、回答のいくつかは明らかにマークから外れているためです。

.clearfix {
    display: inline-block;
}

html[xmlns] .clearfix {
    display: block;
}

* html .clearfix {
    height: 1%;
}

更新2:それがハックであることはすでに多かれ少なかれ確立されています。しかし、私はそれを詳細に説明する外部参照が必要です。たとえば、どのブラウザに適用され、どのような問題を修正することを目的としていますか?

4

4 に答える 4

6

私はStuNichollsに連絡して、このハックの決定的な情報源を突き止めようとしました。彼は答えて、私に次の情報を与えました:

element[attribute]はw3.orgCSS2Attribute Selectorであり、通常はbody要素と属性に適用されますが、この場合はタグとその'xmlns'属性を使用します。したがって、[ご存知のとおり]このスタイルを認識するか無視するブラウザを分離することです。答えは、IE5.xとIE6を除いて、すべてのブラウザがこのスタイルを認識するということです。したがって、すべてのブラウザーは.clearfixをインラインブロックとしてスタイル設定し、IE5.xとIE6を除くすべてのブラウザーはこれをブロックとしてスタイル変更します。
次に、* htmlプレフィックスを使用してIE5.xおよびIE6のみをターゲットにし、.clearfix要素の高さのみを1%に設定します。

于 2011-01-05T14:32:45.163 に答える
4

属性セレクターをサポートしていないブラウザーdisplay: blockの代わりに設定するのはハックです。display: inline-block

CSSハックに関する通常のコメントが適用されます—条件付きコメントが通常より良い選択であり、ハックを使用する場合は、それを説明するコメントを含める必要があります。

于 2011-01-05T14:10:15.470 に答える
0

これは、属性xmlnsを持つhtmlタグを対象としています。開発者がサイト内に複数のページを持っていて、何らかの理由ですべてのページにxmlns属性が含まれているとは限らない可能性があります。このコードについて本当に奇妙なことは何もありませんが、分離の理由は実際にはそれを行った開発者によってのみ与えられました。私が見ているように、この仕様は、htmlタグにその属性を含むサイトのページにのみ影響します。

于 2011-01-05T13:24:34.380 に答える
0

おそらく、HTMLまたはXHTMLのいずれかのページを含むWebサイトです。XHTMLページには名前空間(xmlns)があるため、このスタイルはそれらのページを具体的にターゲットにします。XHTMLをサポートしていないブラウザにxmlns属性がロードされているかどうかはわかりません。これらのブラウザでこの属性が無視される場合、これはこれらのブラウザで別のスタイルを適用するためのトリックになる可能性もあります。

いずれにせよ、私はそれをハックではなく、せいぜいトリックと呼ぶでしょう。

于 2011-01-05T13:31:59.483 に答える