ホームページ ウェブフロントエンド CSSチュートリアル CSS inline-block 属性はさまざまなブラウザと互換性があり、水平方向のギャップの問題を解決します

CSS inline-block 属性はさまざまなブラウザと互換性があり、水平方向のギャップの問題を解決します

Sep 13, 2018 pm 03:58 PM
css

この章では、ブラウザ間での CSS インライン ブロック属性の互換性と、水平方向のギャップの問題の解決策について説明します。困っている友人は参考にしていただければ幸いです。

inline-block 属性 説明:

この値を設定すると、オブジェクト自体はインライン オブジェクトとしてレンダリングされますが、オブジェクト内のコンテンツはブロック ボックスとしてレンダリングされます。つまり、この値が設定された要素は、ブロック ボックスを含めることができるインライン ボックス要素と同等です。 IE6 と 7 は inline-block をサポートできますが、彼らにとって、display:inline-block はレイアウトをトリガーするための条件にすぎず、W3C によって指定されたものではありません。ただし、IE のレイアウトを使用して、display:inline-block の効果をシミュレートすることはできます。

さまざまなブラウザ向けのインラインブロック互換ソリューション

2 つのメソッドがあり、どちらも最初に IE のレイアウトをトリガーし、次に、次のように、display:inline を定義してブロック要素自体をインライン オブジェクトとしてレンダリングできるようにします。

1. レイアウトをトリガーできるすべての属性のうち、position:absolute と float、および width と height を除いた後、使用できるのは、次のように、display:inline-block だけです。 2 つのディスプレイは連続して配置する必要があります。2 つの CSS ステートメントのみが効果を持ちます。display:inline-block が最初に定義されてから、ディスプレイが inline または block に戻された場合、レイアウトは消えません。

2. 最初の方法は、注意しないと間違いを犯す可能性があります。コードは次のとおりです。

fn-ib{display:inline-block;}fn-i{*display:inline;}
ログイン後にコピー

IE6、7 は inline-block 属性をサポートしていますが、W3C 効果を実装していないため、layout と display:inline を使用して inline-block 属性の効果をシミュレートします。

さて、さまざまなブラウザでインライン ブロックの問題を解決する解決策が見つかりました。次の解決策は次のとおりです。さまざまなブラウザで次の例を見てください。

さまざまなブラウザではインライン ブロック要素にギャップがあります。これはインライン自体の性質であり、バグではありませんCSS inline-block 属性はさまざまなブラウザと互換性があり、水平方向のギャップの問題を解決します

次に、display:inline-block 属性をサポートするブラウザでは、IE67 と IE では、inline 要素と block 要素の両方で、display:inline-block の後に水平方向のギャップが生成されることがわかりました。 (Q) シミュレーション display:inline-block の後に 2 つの状況があります。シミュレーション後のブロック要素にはスペースがありませんが、インライン要素にはギャップがあります。なぜ?ここにもう 1 つの知識ポイントがあります。インライン要素はデフォルトでギャップを持って配置されます。したがって、上記の現象は次のように説明されます:

display:inline-block 属性をサポートするブラウザでは、要素自体は inline 要素と同等であるため、ブロックは設定されていますが、シミュレートされたソリューションにはギャップがあります。要素に display:inline を指定すると、要素を inline 要素と同様に水平方向に配置できますが、block 要素は依然としてブロック要素であり、実際には inline 要素にはならないため、隙間は生じません。

ギャップの根本的な原因は、HTML 内の改行、スペース、タブなどの文字によって空白文字が生成されることです。

インラインブロック間の水平方向のギャップの問題の解決策

上記で、ギャップの根本原因は HTML 内の改行、スペース、タブなどの文字であることがわかったので、タグとタグを配置します間のスペースをなくしても問題ないでしょうか?コードは次のようになります:

HTML コードは次のとおりです:

fn-ibz{display:inline-block;*display:inline;*zoom:1}
ログイン後にコピー

レンダリング:

インラインブロック間のギャップの問題を解決するために DOM 構造を変更しますCSS inline-block 属性はさまざまなブラウザと互換性があり、水平方向のギャップの問題を解決します

上記のデモコードを処理しましたので、見てみましょう見てください。クリアランスが不十分です。しかし、ここに問題があります。

それが静的である場合、これをバックグラウンドで直接生成した場合はどうなるでしょうか?あるいは、将来的には、メンテナンス担当者がコードがこのように書かれているのを見て、元に戻すことになるでしょう。したがって、CSS を使用して問題を解決することが依然として最良の方法です。この状況を初めて見たとき、私の最初の反応は、ギャップの根本原因を知った後、ネガティブ マージン法では問題は解決できるものの、問題を解決することはできないと感じました。隙間の原因はHTMlの文字、スペース、タブなどの改行であり、フォントサイズなどの属性が変わると隙間も変化します。したがって、CSS を使用して文字サイズを制御し、文字サイズを見つけることができます。そこで、YUI3 のソリューションを参照すると、次のコードが得られました:

<div class="parent">
    <strong class="fn-ibz">内联元素</strong><strong class="fn-ibz">
    内联元素</strong><strong class="fn-ibz">
    内联元素</strong><strong class="fn-ibz">
    内联元素</strong>
</div>
<div class="parent">
    <div class="fn-ibz">块元素</div><div class="fn-ibz">
    块元素</div><div class="fn-ibz">
    块元素</div><div class="fn-ibz">
    块元素</div>
</div>
ログイン後にコピー

Rendering:

CSSinline-block gap solution CSS inline-block 属性はさまざまなブラウザと互換性があり、水平方向のギャップの問題を解決します

次に、コードの各行の役割を分析します:

  1. font-size の役割: もちろん文字によって引き起こされるので、その font-size を 0 に設定し、要素内の font-size を元のサイズに戻します。 IE6、7、および下位バージョンの Chrome および Safari を使用するその他のブラウザを除き、インライン ブロックのギャップはこのステップで消えます (下位バージョンの Chrome では、font-size:0 を設定した後にテキストを自由に拡大および縮小することができないため、推奨)

  2. word-spacing の役割: IE6、7、および IE (q) モードでは、常に 1px の間隔があり、word-spacing:-1px を使用してそれを解決します (単語間の距離)は英語でのみ役立ちます。中国語には単語の概念がありません)、要素を通常の状態に戻します。もちろん、margin:0 0 0 -1px; を使うことも可能です(コードが少ないような気がします…)

  3. letter-spacing の役割: chrome と Safari の低バージョンのみが残っています。文字間隔は文字の間隔、フォントサイズ、フォントファミリー、さらにはブラウザによっても異なりますので、「文字間関係データ表」のデータに従って設定してください。 -間隔とフォントサイズ/フォント」を選択すると、隙間を解除できます。次に、文字間隔と単語間隔が一緒になると問題が発生しやすいため、 *letter-spacing:normal; というコードを追加しました。

  4. vertical-align:top の役割: 最後のものはギャップとは関係ありません。vertical-align:top の設定は、インラインブロック要素を上部のベースラインに揃えることです。 vertical-align 属性は、inline 要素および inline-block 要素でのみ有効です。

インラインブロックの利点

インラインブロックレイアウトはフローティングレイアウトよりもブラウザリソースを節約することは言うまでもありませんが、フローティングレイアウトを放棄してインラインブロックレイアウトを採用する必要があります(そして公式Webサイトはそうではありません)この発言)結局のところ、ものの見た目には意味があり、フローティングレイアウトは最も認知されたレイアウト方法でもあります。繰り返しますが、具体的な状況を詳細に分析すると、フローティング レイアウト構造の方が明確ですが、たとえインライン ブロック レイアウトが実際には最小限のリソースであっても、インライン ブロックを使用し、多くの冗長コードを追加する必要があります。 -消費は伝説的ですが、HTML コードの増加によりリソースも消費されるのではありませんか?

あったとしても、大きくないと思います。したがって、絶対配置を使用する場合は、絶対配置を使用してください。フローティングを使用する場合は、インラインブロックを使用したほうが問題を解決できる場合は、大胆に使用してください。結局のところ、インラインブロックには、フローティングおよび絶対配置と比較して、いくつかの利点があります。

  1. vertical-align と text-align を使用して、垂直、水平、両側、ベースラインなどの配置を実現でき、適応性もあります。

  2. 独自の理由により、流動的なレイアウトに特に適しています。高さと幅を固定する必要はありません。

以上がCSS inline-block 属性はさまざまなブラウザと互換性があり、水平方向のギャップの問題を解決しますの詳細内容です。詳細については、PHP 中国語 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)

ブートストラップにスプリットラインを書く方法 ブートストラップにスプリットラインを書く方法 Apr 07, 2025 pm 03:12 PM

ブートストラップスプリットラインを作成するには2つの方法があります。タグを使用して、水平方向のスプリットラインを作成します。 CSS Borderプロパティを使用して、カスタムスタイルのスプリットラインを作成します。

HTML、CSS、およびJavaScriptの役割:コアの責任 HTML、CSS、およびJavaScriptの役割:コアの責任 Apr 08, 2025 pm 07:05 PM

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

ブートストラップに写真を挿入する方法 ブートストラップに写真を挿入する方法 Apr 07, 2025 pm 03:30 PM

ブートストラップに画像を挿入する方法はいくつかあります。HTMLIMGタグを使用して、画像を直接挿入します。ブートストラップ画像コンポーネントを使用すると、レスポンシブ画像とより多くのスタイルを提供できます。画像サイズを設定し、IMG-Fluidクラスを使用して画像を適応可能にします。 IMGボーダークラスを使用して、境界線を設定します。丸い角を設定し、IMGラウンドクラスを使用します。影を設定し、影のクラスを使用します。 CSSスタイルを使用して、画像をサイズ変更して配置します。背景画像を使用して、背景イメージCSSプロパティを使用します。

VueでBootstrapの使用方法 VueでBootstrapの使用方法 Apr 07, 2025 pm 11:33 PM

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

ブートストラップのサイズを変更する方法 ブートストラップのサイズを変更する方法 Apr 07, 2025 pm 03:18 PM

Bootstrapの要素のサイズを調整するには、次のものを含むDimensionクラスを使用できます。

ブートストラップのフレームワークをセットアップする方法 ブートストラップのフレームワークをセットアップする方法 Apr 07, 2025 pm 03:27 PM

Bootstrapフレームワークをセットアップするには、次の手順に従う必要があります。1。CDNを介してブートストラップファイルを参照してください。 2。独自のサーバーでファイルをダウンロードしてホストします。 3。HTMLにブートストラップファイルを含めます。 4.必要に応じてSASS/LESSをコンパイルします。 5。カスタムファイルをインポートします(オプション)。セットアップが完了したら、Bootstrapのグリッドシステム、コンポーネント、スタイルを使用して、レスポンシブWebサイトとアプリケーションを作成できます。

ブートストラップボタンの使用方法 ブートストラップボタンの使用方法 Apr 07, 2025 pm 03:09 PM

ブートストラップボタンの使用方法は?ブートストラップCSSを導入してボタン要素を作成し、ブートストラップボタンクラスを追加してボタンテキストを追加します

ブートストラップの日付を表示する方法 ブートストラップの日付を表示する方法 Apr 07, 2025 pm 03:03 PM

回答:ブートストラップの日付ピッカーコンポーネントを使用して、ページで日付を表示できます。手順:ブートストラップフレームワークを紹介します。 HTMLで日付セレクター入力ボックスを作成します。ブートストラップは、セレクターにスタイルを自動的に追加します。 JavaScriptを使用して、選択した日付を取得します。

See all articles