CSS ボックスモデルのアルゴリズムとアプリケーションの詳細な説明

CSS ボックスモデルのアルゴリズムとアプリケーションの詳細な説明

ここでは、ブロックレベル ボックスのデフォルトの幅、幅のない絶対配置ボックス、幅のないフローティング ボックスなどを中心に、CSS ボックス モデルの概念と応用について説明します。この記事を学習することで、CSS ボックス モデルの概念と使用法について深く理解できるようになると思います。

CSS ボックスモデル

Web デザインにおけるすべての要素は長方形のボックスです。ボックスのサイズを正確に計算する方法については、以下の図を参照してください。


Firebug ユーザーであれば (基本的にフロントエンドに関連するものはすべて Firebug を使用します - Sugar と Tomatoes)、以下の表によく馴染みがあるでしょう。

このチャートは、ページ上の任意のボックスに作用する値を表示するのに最適です。

上記の両方の例では、余白が白であることに注意してください。マージンはボックス自体のサイズには影響しないという点で特別ですが、

ボックスに関連する他のコンテンツに影響するため、マージンはボックス モデルの重要な部分です。

ボックス自体のサイズは次のように計算されます。

幅 = 自身の幅 + 左パディング + 右パディング + 左ボーダー + 右ボーダー

高さ = 自身の高さ + 上部パディング + 下部パディング + 上部ボーダー + 下部ボーダー

未宣言の値

パディングまたはボーダーが宣言されていない場合は、ゼロ(cssreset を使用する場合)またはブラウザのデフォルト値(通常はリセットされないフォーム要素の場合は特に、ゼロ以外の値になる可能性が高い)になります。

ブロックレベルボックスのデフォルトの幅

幅が宣言されておらず、ボックスが静的であるか、CSS ボックス モデル内で相対的に配置されている場合、幅は 100% のままで、パディングと境界線は外側に広がるのではなく内側に押し込まれます。

ただし、ボックスの幅を明示的に 100% に設定すると、パディングは外側に拡張されます。


ボックスのデフォルトの幅は実際には 100% ではなく、残りの可能な値 (つまり、残りの実際の幅、つまり砂糖とトマト) であることに注意してください。この特別な値は、多くの場合、幅を設定/設定解除するのに非常に便利なので、知っておく必要があります。

私が抱えていた最大の問題は、textarea 要素でした。textarea 要素は、「cols」属性の希望する幅に設定する必要があり、子要素を含めることはできません。そのため、通常はテキストエリアの幅を明示的に 100% に設定する必要がありますが、パディングがある場合はテキストエリアの幅が拡張されます。固定幅環境では、通常、これを適切なピクセル値の幅に設定できますが、可変幅環境ではそうはいきません。

幅のない絶対位置のボックス

CSS ボックス モデルで幅が指定されていない絶対位置のボックスは、動作が少し異なります。幅は、含まれるコンテンツに応じて適切である必要があります。したがって、ボックス内に単語が 1 つしかない場合、ボックスの幅はその単語の表現と同じになります。 2単語になると、ボックスの幅もそれに応じて大きくなります。

これは、ボックスの幅が親要素(相対的に配置された最も近い親要素またはブラウザ ウィンドウ)の幅の 100% に達するまで続き、その時点でボックスは折り返されます。
ボックスは、含まれるコンテンツに合わせて垂直方向に拡張するのが自然です。驚くべきことは、プラットフォームによってテキストの動作が異なるだけでなく、ブラウザによってテキストの処理方法にも多くの癖があることです。

幅のないフロートボックス

幅のない絶対配置ボックスと同じように動作します。 CSS ボックス モデルの幅は、含まれるコンテンツの幅、つまり親要素の幅まで拡張する必要があります (親を相対的に配置する必要はありません)。これらの幅のないボックスは壊れやすいため、全体的なページレイアウトなどのミッションクリティカルなパターンには依存できないという教訓が得られます。サイドバーとして使用するために列をフロートし、内部要素 (画像など) がその幅を制御することを期待すると、問題が発生します。

インライン要素もボックスである

ここでは、ブロックレベル要素のボックスに焦点を当ててきました。ブロックレベル要素をボックスと考えるのは簡単ですが、インライン要素もボックスです。これらは非常に長くて狭い長方形と考えることができます。他のボックスと同様に、余白、パディング、境界線を持つこともできます。

折りたたむと少しわかりにくくなります。上記の左余白はボックスを右に押し出しますが、ボックスが始まる最初の行でのみ機能します。パディングは通常、テキストの上部または下部に適用されます。行が区切られると、前の行のパディングは無視され、行の高さで必要な位置から開始されます。背景を透明にすることで、効果がより鮮明に見えるようになります。

詳細については、 http://www.csschina.net/a/jc/css_646.htmlを参照してください。

【編集者のおすすめ】

  1. ウェブページの幅と高さのデザインを実現する CSS ボックス モデル
  2. JavaScriptはdiv属性とスタイルを動的に作成します
  3. DIV CSSウェブサイト構築のブラウザ互換性と注意事項
  4. CSS ボックスモデルの使用方法の詳細な説明
  5. DIV CSS ウェブページレイアウトで CSS が無効になる 10 の理由を解釈する

<<:  ハッカーがGSMアルゴリズムを破り、携帯電話ユーザーが盗聴の危険にさらされる

>>:  Zigbeeプロトコルスタックの暗号化アルゴリズムについての簡単な説明

ブログ    

推薦する

ImageNet-1K 圧縮 20 倍、Top-1 精度が初めて 60% を超える: 大規模データセット蒸留の転換点

データの圧縮や蒸留というタスクは、ここ数年大きな注目を集めています。データ圧縮方法は、大規模なデータ...

AIが有名人に似た人を紹介

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

...

Github のデータサイエンスと機械学習のリポジトリ トップ 10

この記事では、データサイエンスと機械学習の愛好家にとって最も役立つ Github リポジトリをいくつ...

...

2018 年 4 月の最も人気のある AI 機械学習プロジェクト トップ 5

データサイエンスと機械学習に関しては、GitHub と Reddit が最も人気のある 2 つのプラ...

李開復のLLaMAに基づく企業モデルだが、テンソル名が異なっており論争を巻き起こしたが、公式の回答が来た。

少し前に、オープンソースのビッグモデル分野に新しいモデル「易」が導入されました。このモデルはコンテキ...

LLM で会話インターフェースを設計するにはどうすればいいですか?

著者:ヴァルン・シェノイ編纂者:王睿平大規模言語モデル (LLM) で構築されたテキスト ボックスの...

AIがあらゆるところに存在している世界を想像してみてください

[[360153]]あなたをモデルに、考え、反応し、行動するように訓練されたロボットを想像してみてく...

人工知能の革新はいかにしてより賢いロボットの進化につながるのか

ロボットはコンピューターによってプログラムされた機械です。人間の介入なしに一連の複雑なアクションを自...

...

自動運転のための多視点視覚認識の理解

出力次元の観点から、視覚センサーに基づく知覚方法は、2D知覚と3D知覚に分けられます。視覚システムは...

次世代人工知能の開発方向(第2部)

[[349523]]人工知能は半世紀以上前から存在していますが、人工知能の分野は過去 10 年間で...

医者から「ビジネスを奪いたい」ですか?人工知能はこれら3つの大きな困難を克服しなければならない

10年以上が経過し、ディープラーニングは人工知能の発展の機会を提供してきました。並列コンピューティン...

プロのようにビッグデータをマイニングするにはどうすればいいでしょうか?

股関節置換手術にはどれくらいの時間がかかりますか?これは病院にとって学術的な問題ではありません。 2...