IE の下位バージョンにおける CSS バグの原因 'haslayout'_html/css_WEB-ITnose
haslayout は、Windows Internet Explorer レンダリング エンジンの内部コンポーネントです。 Internet Explorer では、要素がサイズを計算して独自のコンテンツを編成するか、親要素に依存してサイズを計算してコンテンツを編成します。これら 2 つの異なる概念を調和させるために、レンダリング エンジンは、true または false の hasLayout 属性を使用します。要素の hasLayout 属性の値が true の場合、その要素にはレイアウトがあると言います
CSS、特に IE での CSS のレンダリングをより深く理解したい場合は、haslayout の概念を徹底的に理解することが非常に必要です。 。 IE での表示エラーのほとんどは haslayout が原因で発生します。 true に設定すると、要素自体をレンダリングする必要があるため、要素は、流出するコンテンツを含めるために展開する必要があります。たとえば、切り詰められていない浮動単語や非常に長い単語の場合、 haslayout が true に設定されていない場合、要素はそれをレンダリングするために祖先要素に依存する必要があります。ここで IE の多くのバグが発生します。
要素にレイアウトがある場合、その要素はそれ自体と、可能な子孫要素のサイズと位置を決定します。簡単に言えば、これは、要素がこの作業を行うために祖先要素に依存するのではなく、要素自体とそのコンテンツを維持するためにより多くの時間を費やす必要があることを意味します。したがって、一部の要素にはデフォルトでレイアウトが設定されます。要素が「レイアウトを持つ」または「レイアウトを取得する」、あるいは要素が「レイアウトを持つ」と言うときは、その Microsoft 固有のプロパティ hasLayout が true に設定されていることを意味します。 「レイアウト要素」は、デフォルトでレイアウトを持つ要素、または特定の CSS プロパティを設定することによってレイアウトを持つ要素です。 IE の HTML 要素に haslayout があるかどうかは、IE Developer Toolbar で確認できます。IE Developer Toolbar では、通常、haslayout を持つ要素は「haslayout = -1」として表示されます。
独自のコンテンツの整理を担当する要素にはデフォルトでレイアウトがあり、主に次の要素 (完全なリストではありません) が含まれます:
* body および html
* table, tr, th, td
* img
* hr
* input、button、file、select、textarea、fieldset
* marquee
* Frameset、frame、iframe
* object、applets、embed
Microsoft が挙げた主な理由は、すべての要素がデフォルトのレイアウトは「パフォーマンスとシンプルさ」です。すべての要素がデフォルトでレイアウトされている場合、パフォーマンスとメモリ使用量に悪影響を及ぼす可能性があります。
haslayoutをアクティブ化するにはどうすればよいですか?
ほとんどの IE 表示エラーは、要素の haslayout 属性をアクティブにすることで修正できます。 cssのsize属性(幅/高さ)などを設定することで要素のhaslayoutを有効にし、「レイアウトを持つ」ようにすることができます。以下に示すように、次の CSS プロパティを設定するだけです。
* 表示: インラインブロック
* 高さ: (自動以外の任意の値)
* 浮動小数点数: (左または右)
* 位置: 絶対
* 幅: (自動以外の任意の値)
* 書き込み-mode: tb-rl
* ズーム: (通常以外の任意の値)
Internet Explorer 7 には追加のプロパティもあります (完全なリストではありません):
* min-height: (任意の値)
* max -高さ: (なしを除く任意の値)
* 最小幅: (任意の値)
* 最大幅: (なしを除く任意の値)
* オーバーフロー: (可視を除く任意の値)
* overflow-x: (可視以外の任意の値)
* overflow-y: (可視以外の任意の値)
* 位置: 固定
ここで、overflow-x と overflow-y は css3 ボックス モデルの属性です。現在、ブラウザーではまだ広くサポートされていません。
インライン要素 (デフォルトは、span などのインライン要素、または display:inline; を持つ要素) の場合、
width と height のみが IE5.x および IE6 以降のバージョンの quirks モードで hasLayout をトリガーします。 IE6 の場合、ブラウザーが標準互換モードで実行されている場合、インライン要素は幅または高さの属性を無視するため、この場合、幅または高さを設定しても要素にレイアウトを指定することはできません。
IE7 の場合、最良の方法は、要素の最小の高さを 0 (min-height:0;) に設定することです。
ハッシュレイアウトの問題によって引き起こされる一般的なバグ:
E6 以前のバージョンのダブルマージンフローティングバグ
バグ修正: display:inline;
IE5-6/win の 3 ピクセルオフセットバグ
バグ修正: _height :1% ;IE6 のいないいないばあバグ
バグ修正: _height:1%; または、子要素に hasLayout を割り当てて、position:相対;
hasLayout 属性は Microsoft に固有の古い属性であることに注意してください. IE8 および IE9 では、hasLayout 属性は廃止されました。上記の Internet Explorer は、IE7、IE6 以下のバージョンを指します。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する

Y軸位置Webアノテーション機能の適応アルゴリズムこの記事では、単語文書と同様の注釈関数、特に注釈間の間隔を扱う方法を実装する方法を探ります...

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

画像をクリックした後、散乱と周囲の画像を拡大する効果を実現するには、多くのWebデザインがインタラクティブな効果を実現する必要があります。特定の画像をクリックして周囲を作成してください...
