ホームページ ウェブフロントエンド htmlチュートリアル つまり、compatibility-haslayout_html/css_WEB-ITnose

つまり、compatibility-haslayout_html/css_WEB-ITnose

Jun 24, 2016 am 11:51 AM

CSS、特に IE での CSS のレンダリングをより深く理解するには、haslayout を徹底的に理解する必要がある概念です。 IE での表示エラーのほとんどは haslayout が原因で発生します。

ハレイアウトとは何ですか?

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

要素にレイアウトがある場合、その要素はサイズの計算と、それ自体および可能な子孫要素の位置決めを担当します。簡単に言えば、これは、要素がこの作業を行うために祖先要素に依存するのではなく、要素自体とそのコンテンツを維持するためにより多くの時間を費やす必要があることを意味します。したがって、一部の要素にはデフォルトでレイアウトが設定されます。要素が「レイアウトを持つ」または「レイアウトを取得する」、あるいは要素が「レイアウトを持つ」と言うときは、その Microsoft 固有のプロパティ hasLayout が true に設定されていることを意味します。 「レイアウト要素」は、デフォルトでレイアウトを持つ要素、または特定の CSS プロパティを設定することによってレイアウトを持つ要素です。 HTML 要素に haslayout 属性がある場合、この要素の haslayout の値は true のみである必要があり、一度トリガーされると元に戻すことはできません。 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

* objects, applets, embed

したがって、これらの属性の一部はインライン要素ですが、次のようにすることができます幅と高さを自分で設定します。

すべての要素にデフォルトでレイアウトがあるわけではありませんが、Microsoft が挙げた主な理由は「パフォーマンスとシンプルさ」です。すべての要素がデフォルトでレイアウトされている場合、パフォーマンスとメモリ使用量に悪影響を及ぼす可能性があります。

haslayout を有効にするには?

ほとんどの IE 表示エラーは、要素の haslayout 属性をアクティブにすることで修正できます。 cssのsize属性(幅/高さ)などを設定することで要素のhaslayoutを有効にし、「レイアウトを持つ」ようにすることができます。以下に示すように、次の CSS プロパティを設定するだけです。

* display: inline-block (すべての主要なブラウザで動作します)

* height: (auto以外の任意の値)

* float: (左または右)

auto以外の任意の値)

* writing-mode : tb-rl

* ズーム: (標準を除く任意の値)

Internet Explorer 7 には、いくつかの追加プロパティもあります (完全なリストではありません):

* min -height: (任意の値)

* max- height: (none を除く任意の値)

* min-width: (任意の値)

* max-width: (none を除く任意の値)

* overflow : (visible を除く任意の値)

* overflow-x: (visible を除く任意の値)

* overflow-y: (visible を除く任意の値)

*position:fixed

ここで、overflow-x と overflow -y は CSS3 ボックス モデルの属性であり、CSS3 ボックス モデルではまだ広くサポートされていません。ブラウザ。

zoom はいつでも hasLayout をトリガーできますが、IE5.0 ではサポートされていません。

「レイアウト」を持つ要素が以下を表示する場合: インライン同時に、その動作は標準で言及されているインラインブロックと非常によく似ています: 通常のテキストのように段落内に連続的に配置され、vertical-align の影響を受けます。コンテンツに応じて適応的にサイズを調整できます。これは、IE/Win だけでは、インライン要素にブロック レベルの要素を含めることができる理由も説明できます。これは、他のブラウザでは、IE/Win とは異なり、display: inline はインラインを意味し、インライン要素にレイアウトが作成されると、その後もレイアウトが保持されるためです。レイアウトはインラインブロックになります。

典型的な例:

非浮動外側 div は内部の浮動要素の高さによって引き伸ばされず、外側の非浮動 div の高さは自動的に計算されません。この非浮動 div にzoom:1; を追加して、その hasLayout 属性をトリガーします。もちろん、これは標準規格に準拠するために、内側の浮動 div によって拡張されます。 Firefox などのブラウザでは、overflow: hidden; display: table を追加するか、疑似要素: after を使用して問題を解決できます。

詳細については、http://xiaogai1010.blog.163.com/blog/static/13717030820122242616468/

をご覧ください。

hasLayout はインライン要素にも影響を与えることができます。インライン要素の hasLayout が true の場合、インライン要素の高さと幅を設定して、目的の効果を得ることができます。

(1)zoom:1 を使用して、インライン要素の haslayout 属性をトリガーして、その高さと幅を計算できますが、これは ie6 と ie7 にのみ適用されます。

(2) display:inline-block、すべての主流ブラウザに適した、インライン要素の haslayout 属性をトリガーします。

haslayout の問題のデバッグと解決

(1) IE で Web ページが異常な動作をする場合、haslayout をアクティブにして問題が存在するかどうかを確認できます。一般的な方法は、特定の要素の CSS にzoom:1を設定することです。ほとんどの場合、既存の環境に影響を与えることなく要素の haslayout を起動するため、Zoom:1 が使用されます。問題が解消されれば、基本的には haslayout が原因であると判断できます。その後、対応する CSS プロパティを設定することでこの問題を修正できます。最初に要素の幅/高さの属性を設定してから、他の属性を検討することをお勧めします。

(2) haslayout 属性がトリガーされるため、IE6 および IE7 では要素のレイアウトに問題が発生することがあります。この場合、IE プラグインの開発者ツールバーを使用して、要素が haslayout をトリガーしたかどうかを確認する必要があります。属性がトリガーされた場合は、幅、高さ、浮動小数点数、位置およびその他の関連属性を削除して、Web ページを参照して問題を見つけることができます。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

< Progress>の目的は何ですか 要素? < Progress>の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML< Progress>について説明します。要素、その目的、スタイリング、および< meter>との違い要素。主な焦点は、< Progress>を使用することです。タスクの完了と< Meter> statiの場合

< datalist>の目的は何ですか 要素? < datalist>の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML< Datalist>について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

< meter>の目的は何ですか 要素? < meter>の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html< meter>について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化< Meter> < Progress>およびex

HTML5< time>を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5< time>を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

この記事では、html5< time>について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

< iframe>の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? < iframe>の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

この記事では、< iframe>外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

See all articles