ホームページ  >  記事  >  ウェブフロントエンド  >  HTML+CSS のまとめ/BFC と ie 固有の属性についての話 hasLayout_html/css_WEB-ITnose

HTML+CSS のまとめ/BFC と ie 固有の属性についての話 hasLayout_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-24 11:37:33921ブラウズ

最近、IE の一般的なバグをまとめた記事を読みました。その記事では、IE のバグのほとんどはその固有の属性である hasLayout に起因していると述べられていました。この属性については以前に少し学習したことがありますが、深くは理解していなかったので、ここでこの属性についていくつかの関連情報を確認しました。

1. hasLayout の定義。

ここでは一つ一つ入力しませんが、Baiduのものをコピーするだけです。

IEでは、要素はサイズを計算して独自のコンテンツを編成するか、親要素に依存してサイズを計算してコンテンツを編成します。これら 2 つの異なる概念を調和させるために、レンダリング エンジンは、true または false の hasLayout 属性を使用します。要素の hasLayout 属性値が true の場合、その要素にはレイアウトがあると言います。

true に設定されている場合、要素自体をレンダリングする必要があるため、送信コンテンツを含めるために要素を展開する必要があります。 たとえば、切り詰められていないフローティングまたは非常に長い単語の場合、 haslayout が true に設定されていない場合、要素はそれをレンダリングするために祖先要素に依存する必要があります。ここで IE の多くのバグが発生します。

要素にレイアウトがある場合、その要素はそれ自体と、可能な子孫要素のサイズと位置を決定します。 簡単に言えば、これは、この要素がこれらのタスクを完了するために祖先要素に依存するのではなく、それ自体とその内部のコンテンツを維持するためにより多くの時間を費やす必要があることを意味します。したがって、一部の要素にはデフォルトでレイアウトが設定されます。要素が「レイアウトを持つ」または「レイアウトを取得する」、あるいは要素が「レイアウトを持つ」と言うときは、その Microsoft 固有のプロパティ hasLayout が true に設定されていることを意味します。 IE の HTML 要素に haslayout があるかどうかは、IE Developer Toolbar で確認できます。IE Developer Toolbar では、通常、haslayout を持つ要素は「haslayout = -1」として表示されます。

CSS には haslayout 属性がないことに注意してください。IE では、特定の属性を特定の値に設定することによってのみ hasLayout 属性をトリガーできます。この属性は IE8 以降のバージョンでは廃止されました。

先 まず、デフォルトの「Haslayout」の要素を見てみましょう。

& lt; html & gt; 、