背景 div にはパディングがあります。 CSSでインデントするにはどうすればいいですか? ブロックプロパティを管理するための詳細オプション

08.10.2023

どの Web ページもその上に配置された要素で構成されており、ほとんどの場合、div ブロックのレイアウトがその配置に影響します。 もちろんタグを使ったテーブルレイアウトもあります

, ,
、ブロックベースとテーブルベースのどちらのシステムを使用するのが良いかという議論さえあります。 しかし、実際には、現時点では、表形式のレイアウトのみを使用する、人気があり便利な最新のサイトは見つかりません。 せいぜい、それが意図されている目的、つまりテーブルを作成するためにのみ使用され、サイト構造自体を形成するためには使用されません。

実際、サイトの div レイアウトでは、テーブルでは使用できない多くの CSS プロパティを設定できます。 さらに、テーブル システムの最大の欠点は、テーブルがブラウザに完全に読み込まれるまで画面に表示されないことです。 サイト全体がテーブルで作成されている場合、ページの HTML コード全体が完全に読み込まれた後にのみディスプレイに表示されます。

DIVタグとfloatプロパティ

ブロックシステムの基本はタグです

、コンテンツのコンテナーです。 内部に他のコンテナが含まれる場合もあります
.

DIV タグの使用は、 と同じくらい難しいものではありません。 原則として、標準的なサイト構造は次のように形成されます。 メインコンテナーがあります。

(多くの場合、ラッパー、コンテナ、メインなどと呼ばれるクラスが割り当てられます)。 このコンテナ内には、メニュー、コンテンツ部分、サイドバーのブロックがあります。

デフォルトでは、新しいブロックはそれぞれ次のように配置されます。 改行。 ブロックを別のブロックの左側または右側に配置するには (たとえば、サイドバーを右側に配置するには)、次を使用します。 float プロパティ。 デフォルトでは値は「none」ですが、「left」と「right」の値を設定することもできます。

2 つのブロックの例を使用して、このプロパティを見てみましょう。

コンテンツブロック
サイドバーブロック

このコードは次の結果を返します。

明確なプロパティ

float プロパティは、それが登録されているブロック自体に適用されるだけでなく、このブロックに続く後続の要素にも適用されることを考慮することが重要です。 つまり、プロパティを何も指定せずに、上記の 2 つのブロックに別のブロックを追加すると、そのブロックは新しい行に配置されず、2 番目のブロックの右側から開始されます。

これを避けるために、ブロック div レイアウトでは、新しい行に配置するブロックに設定する必要がある clear プロパティを使用します。 ほとんどの場合、これは「両方」に設定されますが、ブロックを新しい行に配置するだけでなく、その配置も設定したい場合は、「左」または「右」に設定することもできます。

上の例に新しい要素を追加してみましょう。

コンテンツブロック
サイドバーブロック
新しいブロックは以下にあります

結果:

ブロックレイアウトのインデント

ブロックの位置に加えて、ブロック間とブロック内の両方にインデントを設定することが重要です。 このために、マージンとパディングのプロパティがそれぞれ使用されます。

インデントは要素の上下左右に分けて設定されます。 これらは 4 つの値をリストすることで 1 行で指定できます。

マージン: 20px 10px 0 40px

これらのパラメータを持つブロックは、親要素の 20 ピクセル下、右側の要素から 10 ピクセルの位置に配置され、下部のパディングはゼロ、左側は 40 ピクセルのパディングになります。

すべて同じインジケーターがパディング プロパティで指定されている場合、これらは、コンテンツが配置されているブロックの境界に関連したコンテンツの内部パディングになります。

また、margin-top、margin-bottom、margin-left、margin-right (パディングについても同様) を使用して、個々のエッジに個別のプロパティを設定することもできます。 この場合、エッジのいずれかが指定されていない場合、その側のインデントはゼロになるか、ページ上のブロックに指定された一般的な CSS プロパティによって決定されます。

ブロックレイアウトはWebサイトやブログを作成するときによく使用されます。 この結果、多くの場合、ブロックをインデントする必要があります。 このため、約 CSSでインデントを付ける方法このレッスンで詳しく説明します。 ブラウザにとって、各タグは、コンテンツ、パディング、外側のマージン、境界線を含むコンテナーです。 このレッスンでは、内部および外部のインデントを作成する方法を学び、その主なパラメーターについて検討します。

以下の図は、ブロック インデント パラメーターを明確に示しています。

ご覧のとおり、インデントは、上インデント (上)、下インデント (下)、左インデント (左)、右インデント (右) の 4 方向に作成できます。 測定単位には、ピクセル、パーセンテージ、その他の CSS 単位を使用できます。詳細については、こちらをご覧ください。 このチュートリアルではピクセルを使用します。

ブロックパディング

CSS のパディングを担当するプロパティは次のとおりです。 パディング。 それでは、ブロックの内部パディングを設定する例を見てみましょう。

パディングトップ: 5px; /*上のパディング*/padding-left: 8px; /*左パディング*/ パディング右: 8px; /*右パディング*/padding-bottom: 5px; /*下部のパディング*/

この例では、パディングはブロックの両側に個別に設定されます。 さらに、CSS でインデントを設定するにはいくつかの方法があります。

マージン: 5px 8px 5px 8px; /*上、右、下、左のマージン*/ margin: 5px 8px 5px; /*上、左、右、下のマージンを説明します*/ margin: 5px 8px; /*上下左右のマージンを記述します*/ margin: 7px; /*すべての 7px パディングを説明します*/

最初のほうが覚えやすいし、 最後の方法。 前者の場合、インデントは時計回り (上、右、下、左) に配置されます。後者の場合、インデントの量は任意に指定できます。後者の場合、すべての面のインデントが同じになります。

ブロックマージン

CSS のマージンを担当するプロパティは次のとおりです。 マージン。 CSS のマージンの例:

マージントップ: 5px; /*上マージン*/ margin-left: 10px; /*左マージン*/マージン-右: 10px; /*右マージン*/ margin-bottom: 5px; /*下マージン*/
パディング: 5px 10px 5px 10px; /*上、右、下、左のマージン*/ パディング: 5px 10px 5px; /*上、左、右、下のパディングを説明します*/padding: 5px 10px; /*上下左右のパディングを記述します*/padding: 7px; /*すべての 7 ピクセルのマージンを説明します*/

したがって、 CSSでインデントを付ける方法- 質問は難しくありませんが、非常に関連性があります。 上記の情報をよりよく理解するには、パディング - 内部インデントとマージン - 外部インデントの 2 つのプロパティがあることを覚えておく必要があります。 また、すでにご存知のとおり、インデントを設定するにはいくつかの方法があり、それらを使用できます。

レイアウト設計者は、特定の状況で余分なインデントが存在するために、ページ上に要素を配置する際に問題に遭遇することがよくあります。 この記事では、ブロック内に画像が配置され、不明なインデントが発生する場合について検討します。 ここでは、この問題の説明と解決策を説明します。

通常の生活と同様、レイアウトにも説明が難しい異常な状況が発生します。 これはまさに、次のプロパティを持つコンテナに画像挿入タグ (img) が挿入されたときに発生する可能性のある状況です。 ブロック要素または浮遊物体。 この状況の混乱は、画像の下に表示される理解できないくぼみにあります。

実際の例を見てみましょう

したがって、問題を明確にし、よりよく理解するために、すべてを見て、いわば実際に「触れる」ことを提案します。 任意の画像を取得して div に置きます。 以下にコード例を示します。

HTML

< div> < img src= "img.png" width= "250px" alt= "" />

スタイルを作成するときは、ブロックの内側の背景を塗りつぶします。 赤で。 通常の状態では、画像はブロック内のスペース全体を完全に占め、赤い背景を覆います。 登録用のコードを書きます

div ( display: block; width: 250px; margin: 0px auto; /*ブロックを中央に配置*/ 背景: #ff0000;/*ブロックを赤色で塗りつぶし、パディングを視覚化するため*/ ) body (background: #eee; )

その結果、ブラウザには次の画像が表示されます。

容器の底の赤い縞模様から判断すると、理解できない凹みが発生していると言えます。 ブラウザのウェブマスター パネルを使用すると、インデントが 5,511 ピクセルであることが判明しました。

すべての人気のあるブラウザにこのバグがあるのは非常に面白いことですが、誰もがお気に入りの Internet Explowed はこの場合でも問題なく動作します。

インデントの理由

高度な技術教育を受けた者として、何も起こらずに起こることはなく、すべてには理由があると断言できます。 この問題を調べてみて、私は改めてそう確信しました。 混乱全体は、要素の標準プロパティにあります。 デフォルトでは、img タグにはインライン要素プロパティがあり、これは要素がテキストのベースラインに揃えられることを意味します。 テキスト用の必須のマージン、つまり文字の「尾」用のスペースがあるため、この行はブロックの下端のすぐ上に配置されます。

問題の解決

この小さな欠陥を修正するには、ブロック要素のプロパティを画像に割り当てるだけで十分です。 これを行うには、表示プロパティを画像に割り当てます。 表示: ブロック; そして不要な問題を排除します。 また、vertical-align プロパティを使用して垂直方向の配置を有効にすることもできます。 これは、不要なインデントを取り除くのにも役立ちます。

どのブラウザで動作しますか?

6.0+ 5.0+ 9.5+ 4.0+ 3.0+ - -

ブロック要素は、キャベツの葉を重ね合わせるように、一連のプロパティで構成されます。 ブロックの基礎はその内容 (テキスト、画像など) であり、その幅は width プロパティで指定され、高さは height で指定されます。 コンテンツの周囲にパディングがあり、コンテンツから境界線の内側の端まで空のスペースが作成されます。 次に、境界線自体 (境界線) が来て、ブロックはマージン (マージン)、つまり境界線の外側の端からの目に見えない空きスペースを付けて完成します。 これらのプロパティがブロックに与える影響の順序は明確に定義されており、違反することはできません。 図では、 図 3.1 は、これらのプロパティのセットとしてのブロックを示しています。

米。 3.1. ブロック要素を形成するプロパティ

わかりやすくするために、ブロックのプロパティは入れ子人形の形で表すことができます (図 3.2)。 小さな入れ子人形は大きなマトリョーシカに挿入できますが、その逆はできません。

米。 3.2. マトリョーシカ人形

実際、コンテンツを含め、これらのプロパティはどれも必須ではないため、padding 、 border 、および margin プロパティの組み合わせを含むブロックを形成することも、それらをまったく使用せずに作成することもできます。

フィールド

マージンは、境界線の内側の端またはブロックの端から、ブロックの内容を境界付ける仮想の長方形までの距離になります。 それぞれの辺でマージンの値が異なる場合があるため、もう一方の辺については「上マージン」または「上マージン」などの表現が使用されます。 「マージン」という指定は、すべての辺に対して同じマージン値として理解されるべきです。 マージンの主な目的は、テキストなどのブロック要素のコンテンツの周囲に空白を作成し、要素の端にぴったりと収まらないようにすることです。 余白を使用すると、テキストの読みやすさが向上し、改善されます。 外観ページ。 例 3.1 は、フィールドを使用してテキストをフォーマットする方法を示しています。

例 3.1: パディングプロパティの使用

フィールド

彼らは私たちを征服し、私たちを拷問し、生きたまま火あぶりにするためにやって来ました。彼らは、コルテスがアナワクのインディアンにしたのと同じことを、私たち自由イギリス人に行うためにやって来ました。


例の結果を図に示します。 3.3.

米。 3.3. テキストの周囲の余白

フィールド値を負にすることはできません。

国境

境界線は、要素の 1 辺、2 辺、3 辺、または 4 辺すべての余白の周囲の線です。 各線には太さ、スタイル、色があります。 境界線を作成するには、これらすべてのパラメーターを同時に設定するユニバーサル境界プロパティを使用します。要素の個々の側面に線を作成するには、 border-left 、 border-top 、 border-right 、および border-bottom プロパティを使用できます。それぞれ、境界線を left、top、right、bottom に設定します。 例 3.2 は、要素の左側に行を追加する方法を示しています。

例3.2。 赤い点線

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

ライン



結果 この例図に示されています。 3.4.

米。 3.4. テキストの隣の行

行からテキストまでの距離は、パディング値によって制御されます。

くぼみ

インデントは、ブロックの境界線、マージン、またはコンテンツの外端からの空白スペースです。 前述したように、マージン付きの境界線はオプションであり、存在しない場合もあるため、パディングの作成方法は状況に応じて異なります。 マージンと同様に、「上マージン」または「上マージン」という表現が使用され、他の面についても同様の表現が使用されます。 「インデント」という指定は、すべての面で同じインデント値として理解される必要があります。

くぼみには次のような特徴があります。

  • パディングは透明であり、ブロックに指定された背景色や背景画像の影響を受けません。 ただし、背景が親要素に設定されている場合は、余白にも表示されます。
  • インデントはマージンとは異なり、負の値をとることができ、これによりブロック全体が指定された方向にシフトします。 したがって、margin-left が -10px に指定されている場合、ブロックは 10 ピクセル左に移動します。
  • インデントは、隣接する要素のインデントが合計されずに結合される「コラプス」と呼ばれる現象が特徴です。
  • インデントはパーセントで指定され、ブロック コンテンツの幅から計算されます。 これは、垂直インデントと水平インデントの両方に当てはまります。

例 3.3 は、パディングが折りたたまれて透明になることを示しています。

例3.3。 インデントの使用

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

くぼみ

ライオンが吠えるのは、その領土が自分のものであることを宣言するとき、または自分が自然の王であると宣言するときだけです。


この例の結果を図に示します。 3.5. ブロック間の距離は 40 ピクセルではなく 20 ピクセルであることに注意してください。これは、ブロックの上部と下部のパディングを合計することで得られます。 これは、近くのマージンが結合される崩壊効果によって発生します。

米。 3.5. 要素のパディング

この図は、background プロパティによって設定された色が要素の境界線を超えず、パディングに影響を与えないことを明確に示しています。

ブロック幅は複合値であり、いくつかのプロパティ値で構成されます。

  • width - コンテンツの幅、つまり ブロックの内容。
  • padding-left および padding-right - コンテンツの左右のマージン。
  • border-left と border-right - 左右の境界線の太さ。
  • margin-left と margin-right - 左マージンと右マージン。

すでに述べたように、一部のプロパティが欠落している可能性がありますが、その場合でも幅は影響を受けません。 全幅は図の通りです。 3.6 は黒い点線の形で表示されます。

米。 3.6. ブロック幅

幅が指定されていない場合は、デフォルトで auto になります。 この場合、ブロックの幅は、マージン、ボーダー、パディングの値を維持しながら、使用可能な幅全体を占めます。 利用可能な幅の下で この場合これは親ブロックのコンテンツの幅を意味し、親がない場合はブラウザのコンテンツの幅を意味します。

次のスタイルがレイヤーに対して記述されているとします。

幅: 300ピクセル; /* コンテンツの幅 */ margin: 7px; /* パディング値 */ border: 4px 単色黒; /* 枠線のオプション */padding: 10px; /* テキストの周囲の余白 */

このエントリによるブロック幅は 342 ピクセルに等しくなります。この値は、コンテンツの幅に左パディング、左ボーダー、左マージン、右マージン、右ボーダー、右パディングを加えた値を加算することによって取得されます。 すべての数字を合計してみましょう。

幅 = 300 + 7 + 7 + 4 + 4 + 10 + 10 = 342

幅の形成を伴うブロックモデルには多くの不都合があることに注意する必要があります。 特定のブロック幅を設定する必要がある場合は、常に計​​算を行う必要があります。 問題は組み合わせるときにも始まります 異なる単位測定値、特にパーセンテージとピクセル。 コンテンツの幅が 90% に設定されているとします。ピクセル単位で指定されたマージンと境界線を追加すると、パーセンテージはピクセルに直接変換されないため、ブロックの合計幅を計算することは不可能です (CSS3 ではこれを合計できます)。ただし、この機能はすべてのブラウザでサポートされているわけではありません)。 その結果、ブロックの合計幅が Web ページの幅を超える可能性があり、水平スクロール バーが表示されることになります。 この状況から抜け出す方法は 2 つあります。ブロック モデルのアルゴリズムを変更することと、ネストされたレイヤーを使用することです。

ブロックモデルアルゴリズム

すでに述べたように、ブロック幅はコンテンツの幅とマージン、ボーダー、パディングの値から形成されます。 ブラウザで インターネットエクスプローラー互換モード (つまり、doctype が指定されていない場合) では、アルゴリズムが自動的に変更され、ブロック全体の幅が width に設定されます。 他のブラウザはアルゴリズムをそう簡単に変更しません。さらに、互換モードが悪であることはご存知でしょう。 CSS3 には、私たちにとって役立つ素晴らしいボックス サイズ設定プロパティがあります。 border-box に設定すると、幅にはマージンと境界線が含まれ始めますが、パディングは含まれません。 したがって、box-sizing と border-box の値をスタイルに接続することで、幅をパーセンテージとして設定し、ブロックの幅が変わることを心配することなく安全にボーダーとパディングを指定できます。 残念ながら、ブラウザの場合と同様に、このプロパティには小さな問題があります。すべてのブラウザがそれを理解できるわけではありません。 ブラウザーが少なくともブラウザー固有のプロパティをサポートしていることをうれしく思います。 テーブル内 3.1 はブラウザのサポートを示します。

テーブル 3.1. ブラウザによるボックス サイズ設定プロパティのサポート
ブラウザ インターネットエクスプローラー クロム オペラ サファリ Firefox
バージョン 8.0+ 2.0+ 7.0+ 3.0+ 1.0+
財産 ボックスのサイジング -webkit-box-sizing ボックスのサイジング -webkit-box-sizing -moz-box-sizing

表からわかるように、プロパティには混乱と変動があるため、ハイブリッドを作成し、3 つのプロパティすべてを同時に示す必要があります (例 3.4)。

例3.4。 ブロック幅

XHTML 1.0 CSS 3 IE 7 IE 8+ Cr Op Sa Fx

ブロック幅

ブロック幅100%


この例は、表にリストされているすべてのブラウザで動作します。 ただし、3.1 は、-moz および -webkit で始まる非標準プロパティが使用されているため、CSS3 では無効です。 ブロック幅はパディング値を含めて 100% です。 box-sizing プロパティを使用しないと、ブラウザーに水平スクロールバーが表示されます。

入れ子になったレイヤー

ボックス サイズ設定プロパティの使用は、古いバージョンの IE では機能しないことを除いて、誰にとっても有益です。 IE7 および IE6 に基づいて Web サイトを設計している場合は、層をネストする古くから実績のある方法が適しています。 考え方は単純です。外側のブロック要素には必要な幅のみが設定され、ネストされたブロックにはマージン、ボーダー、パディングなどの他のすべてが設定されます。 ブロックのデフォルトの幅はその親の使用可能な幅と等しいため、ブロックはある意味で互いに重なり合いますが、結合された要素の実際の幅は明確に定義されます。 例 3.5 は、ネストされたレイヤーの使用を示しています。

例3.5。 入れ子になったレイヤー

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

ブロック幅

レイヤー幅100%


この例の結果を図に示します。 3.7.

米。 3.7. ブロック幅(パーセント)

ネストされたレイヤーの利点は、インデントの使用 (ボックスのサイズ変更ではインデントが考慮されません)、この方法の多用途性、および必要に応じて背景を 1 つまたは別のレイヤーに追加できるという事実です。 これにより、要素の外観が多少変わります。これは、背景画像が含まれている場合に特に当てはまります。 この方法の欠点の中には、特にこの方法が頻繁に使用される場合に、コード構造が複雑になる追加ブロックの追加が挙げられます。 しかし、これはメリットに比べれば小さなことだと考えられます。

ブロックの幅と同じルールがブロックの高さにも適用されます。 つまり、高さはコンテンツの高さ(height)、フィールド(padding)、ボーダー(border)、マージン(margin)の値で構成されます。 height プロパティが指定されていない場合は、 auto として扱われます。この場合、コンテンツの高さはコンテンツに基づいて自動的に計算されます。 図では、 図 3.8 は、最終的な高さを与えるプロパティを示しています (黒い点線で示されています)。

米。 3.8. ブロックの高さ

同時に、幅と高さの構築原理は似ているにもかかわらず、大きな違いがあります。 これは、幅と高さが指定されていない場合に適用され、デフォルトで auto になります。 ブロック幅の場合、これは利用可能なコンテンツの最大幅であり、ブロック高さの場合、これはコンテンツの高さです。 また、ブロック幅の場合、明示的に指定されていなくても、親の幅がわかります。 これにより、幅をパーセンテージで設定できます。 親の高さは計算されず、指定する必要があるため、高さにパーセンテージを使用しても何も起こりません。 例 3.6 は、ブロックの高さをパーセンテージとして設定する方法を示しています。

例3.6。 ブロックの高さ

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

ブロックの高さ

レイヤーの高さ 100%


この例の結果を図に示します。 3.9.

米。 3.9. ブロックの高さのパーセンテージ

タグ用

この例では、親はタグです , そのため、高さの値を 100% に設定します。 同時に と同じルールが適用されます
, そのため、パーセント値はページの高さではなく、コンテンツの高さから計算されます。 だから親にとっては 、これがタグです 、高さの値を 100% に設定する必要もあります。 この場合のみ、ブロックの高さのパーセンテージはページの高さに依存します。

高さはマージン、ボーダー、パディングの影響を受けるため、例では次のようになります。 縦縞スクロール。 幅の場合と同じ方法、つまりボックス サイズ プロパティを使用するか、ネストされたレイヤーを使用して、この影響を取り除くことができます。

もう 1 つの機能は高さに関連しています。ブロックのコンテンツが特定の高さでその寸法を超えると、コンテンツはブロックの上に表示され始めます (図 3.10)。

米。 3.10. ブロックサイズを超えています

同様の結果を生成するコードを例 3.7 に示します。

例3.7。 ブロックサイズを超えています

XHTML 1.0 CSS 2.1 IE Cr Op Sa Fx

ブロックの高さ

ライオンが吠えるのは、その領土が自分のものであることを宣言するとき、または自分が自然の王であると宣言するときだけです。

ライオンの狩猟範囲は長さと幅が最大30キロメートルにも及ぶことがあります。



このようなトラブルを避けるためには、コンテンツの高さを設定しないことをお勧めします。そうすれば、ブロックの高さは自動的に計算されます。 ただし、高さを明確に指定する必要がある場合があるため、値 auto または hidden を使用してスタイルにオーバーフロー プロパティを追加することをお勧めします。 それらの結果は異なります。auto は必要なときにスクロール バーを自動的に追加します (図 11a)。hidden は指定されたサイズに収まらないものをすべて非表示にします (図 11b)。

A. 自動値

b. 隠された意味

米。 11. オーバーフロープロパティの使用

背景

背景色とブロックの点線枠を同時に設定すると、色の付いた領域の内側に枠線が通っていることが目立ちます。 の真実 さまざまなブラウザ矛盾があり、特に Internet Explorer バージョン 7.0 までには、背景が境界線の内側の端に沿って表示されるというバグが含まれています (図 12c)。 バージョン 8.0 以降、このエラーは修正され、標準に従って背景が表示されるようになりました (図 12d)。 ブラウザ Opera (図 12a)、Firefox (12b)、Safari および Chrome (図 12e) は背景を正しく表示します。 点線のボックスが表示されると若干の違いが見られますが、ボックス モデルには影響しません。

d. サファリ、クローム

米。 12.ブラウザに背景を表示する

例 3.8 は、そのような境界を取得するコードの作成方法を示しています。

例3.8。 背景と枠線

XHTML 1.0 CSS 2.1 IE 7 IE 8+ Cr Op Sa Fx

フレーム

おっと...


ブラウザによる境界線の描画方法の違いは、色付きの背景と点線でのみ顕著です。 ソリッド フレームの場合、ブラウザでのブロックの外観はほぼ同じになります。

CSSボックスモデル 英語ボックスモデル(ボックスは箱です)と呼ばれます。 この翻訳は、ブロック モデルの本質を理解するのに少し役立ちます。 肝心なのは、画面上でページを形成するときにブロック、つまり画面の長方形の領域が使用されるということです。

CSS ボックス モデルは、CSS を理解するための基礎の 1 つである文書書式設定モデルです。

CSS を学習する前に、HTML を学習しておく必要があります。つまり、次のことを知っておく必要があります。 HTMLタグブロック要素とインライン要素に分かれています。

  • ブロック要素はブロックを作成するタグです。つまり、ブロック要素は利用可能な幅全体 (端から端まで) を占め、ブロック要素の高さはその内容によって決まり、ブロック要素は常に新しい行を占めます。 ブロック要素の例 - タグ

    そして

    .
  • インライン要素は、独自のブロックを作成しませんが、ブロックのコンテンツの表示に影響を与えるタグです。 そのようなタグの例は次のとおりです。 , , そしてその他。

例を使用して、これらの要素グループの違いを見てみましょう。

CSSボックスモデル

pタグブロック。 これ テキストの一部 em タグで強調表示されます。



この例では、タグが

そして

独自のブロックを作成します。 各ブロックは新しい行から始まりました。 ブロック用
幅と高さが指定されており、ブロック

画面の幅全体を占め、高さはコンテンツの高さと同じになります。 これを見えるようにするために、両方の要素が黄色の背景色に設定されます。

タグ ブロック内のテキストをフォーマットしただけです

ブロックについて詳しくはこちらをご覧ください。

どのブロック要素にも、次の場合に変更できるプロパティのセットがあります。 CSSヘルプ.

ブロックの基礎はそのコンテンツです。コンテンツ フィールドの幅は width プロパティで指定され、高さは height プロパティで指定されます。 しかし、このブロックには他の畑もあり、それらはキャベツの葉のように重なり合っています。

これを図の形で示すと簡単です。

コンテンツ フィールド自体に加えて、ブロックにはさらに 3 つのプロパティがあることがわかります。

  • 内部インデント - パディング - 英語で「パディング」。 詰め物とは、何かの中に詰め物をしたり、詰めたりしたものです。 パディングは、コンテンツの端から境界線までのブロックの部分です。
  • ボーダーとは英語で「国境」。 ブロック要素の境界線を設定できます さまざまなスタイル:実線、点、点線。 枠線の色を設定できます。 以下で境界プロパティを管理する方法について詳しく説明します。
  • 外部インデント-マージン-英語で「マージン」。 経済用語では、マージンはコストと価格の差を意味します。

この記事では、アウトライン プロパティについては考慮しません。 注意: このプロパティはブロック サイズには影響しません。

残りのプロパティは、CSS を使用してサイズやその他のスタイル値を設定することで制御できます。 例を挙げて見てみましょう。

CSSボックスモデル

divタグブロック。

pタグブロック。 この段落にはデフォルトのプロパティがあります。

スタイル: パディング: 10px。

スタイル: マージン: 30px。



結果は次のようになります。


図 2. 例 2 の動作中。

タグによって作成されたブロックの周囲に 3 ピクセルの太さの黒い境界線が表示されます。

。 最初の段落は、背景色を除き、デフォルトで書式設定されます。 2 番目の段落では、内部パディングが 10px に設定されており、テキストの周囲で背景色で塗りつぶされた領域が増加していることがわかります。 3 番目の段落には内部インデントはありませんが、30px のマージンが設定されています。 この段落と 2 番目の段落の間の距離が、2 番目の段落と最初の段落の間の距離よりも大きいことがわかります。これが外側のインデントの仕組みです。

ボーダーとパディングはオプションのブロック プロパティであり、すべてゼロに設定できます。

これらのプロパティの背景色はどのように設定されますか?

  • 内部インデント (パディング) は常に、background-color プロパティで指定された要素自体の背景色を持ちます。
  • 境界線 - 境界線 - その色は、border-color プロパティによって設定されます。
  • 外側のマージン (マージン) は常に透明なので、この領域の色は親要素の背景色と一致します (この場合、要素の背景色は白です) デフォルトでインストールされます)。

ブロックプロパティを管理するための詳細オプション

ブロックのすべての側面を一度に管理するだけでなく、各プロパティの各側面を個別に制御することもできます。 この方法でブロック スタイルを管理するための CSS プロパティを示す図を次に示します。


図 3. CSS ボックス モデル。

ブロックのプロパティを詳しく見て、その使用例を挙げてみましょう。

内部パディング

内部パディング - 境界線の内側の端から、ブロックのコンテンツを制限する条件付き四角形までの距離。 内部のくぼみはブロックの両側で異なる場合があるため、「上部の内部のくぼみ」または「上部のくぼみ」と呼ばれます。 CSS の本によって、padding プロパティの翻訳が異なることに注意してください。単にパディングと呼ばれる場合もあれば、フィールドと呼ばれる場合もあり、マージン プロパティはパディングと呼ばれる場合もあります。

パディングの主な機能は、ブロックのコンテンツと境界線の間に空きスペースを作成することです。たとえば、テキストが境界線と同じ高さになるのを防ぎます。 インデントはページをより魅力的に見せ、インデントを使用してデザインされたテキストはより読みやすくなります。

CSSボックスモデル



結果は次のようになります。

図 4. 職場での例 #3。

境界線までパディングされた、美しくデザインされたブロックが表示されます。

国境

境界線は、要素の内部コンテンツの周囲の線です。 境界線は、ブロックのすべての辺または任意の数に設定できます。 境界線の太さ、スタイル、色を設定できます。 枠(枠線)を作るには、先ほど書いたようにCSSにborderプロパティがあります。 このプロパティでは、フレームのすべての特性 (厚さ、スタイル、色) を指定できます。 また、ブロックの個々の側面に境界線を作成するには、 border-top 、 border-right 、 border-bottom 、および border-left プロパティを使用する必要があります。

CSSボックスモデル



コードの実行結果は次のようになります。


図 5. 例 4 の作業。

外部マージン - マージン

パディングは、ブロックの境界からその外側の端までのスペースです。 マージンは margin プロパティによって設定されます。 パディングやボーダーと同様に、パディングはブロックのどちらの側にも設定できます。 たとえば、margin-left プロパティはブロックの左マージンを制御します。

外側の凹みの特徴。

  • 余白は常に透明です。 背景色を受け入れない、または 背景画像属するブロックに設定されます。 ただし、親要素の背景が引き継がれます。
  • 余白は合計されます。 ブロック間に 25 ピクセルのマージンが指定されている場合、外側のマージンが互いに重なるため、ブロック間の距離は 50 ピクセルではなく 25 ピクセルになります。
  • マージンを負の値に設定できます。 この値はブロックを移動します。たとえば、 margin-left : -20px を宣言すると、ブロックが 20 ピクセルだけ左に移動します。
  • インデントはパーセンテージとして設定でき、そのようなインデントはコンテンツ ブロックのサイズに基づいて計算されます。 これは水平方向と垂直方向の両方のマージンに対して行われます。
CSSボックスモデル

何千年も経ちました。 永久に動作するように設計された機構が停止しました。 生命維持システムが損傷した。

何千年も経ちました。 永久に動作するように設計された機構が停止しました。 生命維持システムが損傷した。

見知らぬ人は辺りを見回した。 地平線まで四方八方に砂漠が広がっていました。



この例をさらに詳しく見てみましょう。 実行結果は次のようになります。

図 6. 例 5 の作業。

タグ用

ここで設定した枠線の太さは1pxです。 これは、このタグの外側のインデント領域がどこから始まるかを明確にするために行われます。

タグが 1 つ

ブロックに配置

背景色セットあり。 タグの外側のインデントが

受け入れられるタグの背景色

。 そしてタグは

このブロックの外側にあるものには、ブロックの背景色に対応する白い余白の色が付きます。 デフォルト。

最後の空の段落の高さは 20 ピクセルです。この例では、段落間の距離が 20 ピクセルで、この空の段落の高さと等しいことが分かりやすくするために配置されています。 タグのスタイルシート内

宣言マージンは 20px に設定されており、段落の外側のインデントがマージされ、段落間の距離が 40px ではなく 20px であることがわかります。

ブロック幅は複合値であり、いくつかのプロパティの値の合計です。

  • width - ブロックコンテンツの幅。
  • padding-left と padding-right - コンテンツの左右にパディングします。
  • border-left と border-right - 左右の境界線の太さ。
  • margin-left と margin-right - 左右の外側のマージン。

一部のプロパティの値はゼロに等しくてもよく、その場合はブロックの幅には影響しません。

図 7 では、ブロックは黒い点線で示されています。


図 7. ブロック幅。

ブロックの幅がスタイルシートで指定されていない場合、デフォルトは auto になります。 この場合、コンテンツ フィールドは使用可能な幅全体 (親ブロック、または存在しない場合はブラウザ ウィンドウ) を占めますが、すべてのインデントと境界線のサイズは保持されます。

例として次のスタイルを使用してブロックの幅を計算してみましょう。

幅: 400ピクセル; /* ブロック幅 */ パディング: 5px; /* 境界線までのマージン */ border-width: 3px; /* 枠線の太さ */ margin: 7px; /* マージン */

ブロックの幅を構成するすべての項を合計してみましょう。

ブロック幅 = 400 + 5*2 + 3*2 + 7*2 = 430px。

レガシーブロックモデル

歴史的に、上記のブロック幅を計算する方法は常に使用されていたわけではありません。 現時点では、W3C によって採用された標準です。 ただし、以前は、width プロパティは content フィールドと等しくなく、border プロパティを含むブロック スペースを表していました。 このようなブロック モデルのソースは MicroSoft であり、それに基づいて開発されました。 インターネットブラウザ Explorer はバージョン 7 まで。図は 2 つのブロック モデルの比較を示しています。

図 8. 2 つのブロック モデル。

「互換モード」とも呼ばれる古いブロック モデルで作成された膨大な数の古いドキュメントがオンラインで入手できます。 したがって、それを帳消しにする価値はありません。

知っておくべき重要なこと: 文書が指定されていない場合, その後、ブラウザは互換モードに切り替わります。

ボックス サイズ設定プロパティ

ブロックの幅を計算するとき、幅プロパティの測定単位としてパーセントを使用すると、特定の問題が発生する可能性があります。 利息は 相対値これにより、特にパディングとボーダーが絶対単位で指定されている場合、多少予測不能になります。 その結果、ブロックの合計幅がブラウザ ウィンドウの幅を超える可能性があり、これにより水平スクロール バーが表示されます。

この記事のレベルではないので、問題の本質については詳しく掘り下げません。 ここでは、時代遅れのシステムが時には役立つことがあるということだけを述べておきます。 CSS3 でボックス モデル アルゴリズムを変更できるようにするために、便利なボックス サイズ設定プロパティが導入されました。 border-box が設定されている場合、ボックスの幅にはマージンと境界線が含まれ始めますが、パディングは含まれません。 したがって、box-sizing プロパティに値 border-box を割り当てることで、ブロックの幅をパーセンテージとして設定し、ブロックの幅が変更されることを心配することなく、必要な値の border プロパティと Padding プロパティを安全に指定できます。 。

ブロック高さを形成するときは、ブロック幅を形成するときと同じ計算式が使用されます。 ブロックの高さは、コンテンツ フィールド、境界線、内部および外部のパディング (もちろん上部と下部) の高さの合計です。 height プロパティが指定されていない場合、デフォルト値は auto に設定されます。この場合、コンテンツ フィールドの高さはコンテンツ自体に応じて自動的に計算されます。

図 9 は、黒い点線で示されたブロックの合計の高さを構成するすべてのプロパティを示しています。


図 9. ブロックの高さ。

ブロックの高さと幅を決定する式は原理的には非常に似ていますが、ブロックを扱う場合にはこの点で大きな違いがあります。

早速例に移り、ブロックの幅と高さのプロパティが 200% に設定されているケースを見てみましょう。

CSSボックスモデル



ブロックには、その領域を示す背景色も与えられます。 以下にその様子を示します。

図 10. 例 6 の作業。

水平スクロール バーが形成されていることがわかります。そのサイズはブラウザ ウィンドウのサイズの 2 倍です。 ブロックの幅は常に親要素、つまりブラウザ ウィンドウの 200% に等しくなります。 しかし、垂直方向ではそのような効果はありません。 親の高さのデフォルトの高さは存在せず、指定する必要があるため、パーセンテージを使用して高さを指定することは意味がありません。

CSSボックスモデル

幅 = 200%、高さ = 100% のブロック。


ここでの親要素は、

- テグ 、高さは 50px に設定され、高さは
100%に設定します。 つまり、このタグの高さは 50px です。

図 11. 例 7 の作業。

#F3F3D6 で着色された領域が増加していることがわかります。 ブラウザ ウィンドウの高さをさらに下げると、垂直スクロール バーが表示されますが、前の例ではそうではありませんでした。

この例では、ブロックの高さパラメータをパーセンテージとして設定するにはどうすればよいですか。これで機能します。 前の例を変更して、ボディ セレクターの高さプロパティを 100% に設定してみてください。 この例は機能しません。 なぜ? タグのため 高さは親であるタグを基準にして決定されます。 , そしてそこでは高さは指定されていません。 したがって、何もないものは 100% ありません。 この問題を解決するには、次のスタイルを記述する必要があります。

CSSボックスモデル

幅と高さ = 200% のブロック。


タグの高さを 100% に設定するだけで そして タグの高さをパーセンテージで設定できるようになります

そしてそれはうまくいきます。

図 12. 例 8 の作業。

ブロックの高さを扱うときにもう 1 つ留意すべき点は、コンテンツがブロック サイズを超えると、その境界を越えてしまうということです。 そのようなコードの例を次に示します。

CSSボックスモデル

何千年も経ちました。 永久に動作するように設計された機構が停止しました。 生命維持システムが損傷した。



この例は、テキストがブロックの境界を越えていることを示しています。

図 13. 例 9 の作業。

これを回避するのは非常に簡単です。コンテンツの高さ (height) を設定しないだけです。 ただし、場合によっては、ブロックの高さを厳密に決定する必要があります。 この場合、値 auto を指定してオーバーフロー プロパティを使用できます。 このプロパティは、コンテンツ サイズがブロック サイズを超える場合に、ブロック内にスクロール バーを作成します。

例 9 のスタイルに値 auto を指定してオーバーフロー プロパティを追加すると、結果は次のようになります。

図 14. 値が auto のオーバーフロー プロパティ。

オーバーフロー プロパティには、ブロックの高さの調整にも使用できる別の値 (hidden) があります。 この値は、設定されたブロック寸法に収まらないものをすべて非表示にするだけです。

図 14. 値が非表示になっているオーバーフロー プロパティ。

要素の最小幅と最大幅

この記事では、要素の最小幅と最大幅をそれぞれ設定する min-width プロパティと max-width プロパティを思い出すことも適切です。

min-width プロパティは次のように機能します。ユーザーがブラウザ ウィンドウのサイズを変更しても、ブロック幅は最小値より小さくなりません。この場合、スクロール バーが表示されます。 要素の幅は、 width 、 max-width 、および min-width プロパティの値によって異なります。

この表は、ブラウザーがこれらのプロパティを使用するときにブロック幅を計算する方法を示しています。

テーブル 1. 要素の幅
プロパティ値
最小幅 < < 最大幅
最小幅 > > 最大幅 最小幅
最小幅 > < 最大幅 最小幅
最小幅 <
最小幅 > 最小幅
最小幅 > 最大幅 最小幅
最小幅 < 最大幅 最大幅

max-width プロパティ - 要素の最大幅を設定します。 max-width プロパティの使用例:

CSSボックスモデル

何千年も経ちました。 永久に動作するように設計された機構が停止しました。 生命維持システムが損傷した。

見知らぬ人は周りを見回しました。 地平線まで四方八方に砂漠が広がっていました。


要素の最小高さと最大高さ

同様に、要素の最小高さと最大高さを割り当てるためのプロパティ min-height と max-height があります。