CSS3のボックスサイズプロパティの興味深いボックスモデルについての簡単な説明

CSS3のボックスサイズプロパティの興味深いボックスモデルについての簡単な説明

誰もがボックス モデルの構成を、内側から外側まで、コンテンツ、パディング、境界線、マージンについて知っておく必要があります。

標準ボックス モデルには 2 つあり、1 つは標準モデル、もう 1 つは IE モデルです。

上記の 2 つの図から、標準モデルでは、ボックス モデルの幅と高さがコンテンツの幅と高さと同じであることが簡単にわかります。

IE モデルでは、ボックス モデルの幅と高さは、コンテンツ + パディング + 境界線の合計の幅と高さになります。

CSSで2つのモデルを設定する方法

ここでは、CSS3 プロパティ box-sizing (デフォルト値: content-box) が使用されます。

/* 標準モデル */ 
 ボックスのサイズ:コンテンツボックス;
  /*IE モデル*/
 ボックスのサイズ:境界線ボックス;

content-box: これは CSS 2.1 で指定された幅と高さの動作です。要素の幅と高さ (最小/最大プロパティ) を指定すると、ボックスの幅と高さに適用されます。要素のパディングと境界線は、指定された幅と高さを除いてレイアウトされ描画されます。

border-box: 要素の境界ボックスを決定するために、幅と高さ (最小/最大プロパティ) を指定します。つまり、要素の幅と高さを指定すると、パディングと境界線を指定することも含まれます。コンテンツの幅と高さは、指定された「幅」プロパティと「高さ」プロパティから、両側の境界線とパディングの幅を減算することによって計算されます。

テスト参照ケース

理想的な効果とコードは次のとおりです。

.input { 幅: 146px; 高さ: 36px; 行の高さ: 36px; 背景: 透明; 境界線: 2px 実線 #0D349A; 色: #bdbdbd; 左パディング: 10px; 右パディング: 30px; フォントサイズ: 14px;
box-sizing:content-box; (デフォルトはオプション)} 

ブートストラップ フレームワークを使用するプロジェクトに適用すると、bootstrap.min.css スタイルのデフォルトの box-sizing: border-box; が検索ボックスの幅と高さに影響することがわかりました。

* { -webkit-box-sizing: border-box; 
-moz-box-sizing: 境界線ボックス;
 ボックスのサイズ: 境界線ボックス;}

このプロパティにより、ページは次のように表示されます。

.input { 幅: 146px; 高さ:
 36ピクセル;
 行の高さ: 36px; 
背景: 透明; 
境界線: 2px 実線 #0D349A;
 色: #bdbdbd; 左パディング: 10px;
 右パディング: 30px; 
フォントサイズ: 14px; ボックスサイズ: ボーダーボックス;} 

この時点で、理想的な効果を実現したい場合は、スタイルを次のように調整する必要があります。

.input { 幅: 190px;
 高さ: 40px; 行の高さ: 
40px; 背景: 透明; 
境界線: 2px 実線 #0D349A;
 色: #bdbdbd; 左パディング: 10px; 
右パディング: 30px;
 フォントサイズ: 14px; 
ボックスのサイズ:境界線ボックス;}

PS ヒント: コンテナーの幅が width:100%; として定義されている場合、パディングまたは境界線が追加されると、親コンテナーからオーバーフローして外側に拡張されます。

このスタイルを使用し、box-sizing: border-box; を指定すると、パディングと境界線はオーバーフローしなくなり、内側に縮小されます。この効果は非常に実用的です。

要約する

上記は、CSS3 box-sizing 属性の興味深いボックス モデルについての編集者による紹介です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信いたします。

<<:  three.js を使って立体的な矢印線を描く詳細な手順

>>:  docker run -v はデータボリュームを異常にマウントし、コンテナのステータスは常に再起動になります。

推薦する

HTML コマンドラインインターフェースの実装

HTML部分コードをコピーコードは次のとおりです。 <!DOCTYPE html> &l...

nginx をコンパイルしてインストールした後、スムーズに nginx をアップグレードする方法

nginx をコンパイルしてインストールし、一定期間使用した後、現在のバージョンに脆弱性があることや...

jsは動的にテーブルを生成します(ノード操作)

この記事の例では、テーブルを動的に生成するjsの具体的なコードを参考までに共有しています。具体的な内...

ネットワークセグメント内の IP アドレスに対する Nginx の接続制限設定の詳細な説明

Nginx におけるいわゆる接続制限は、実際には TCP 接続、つまり 3 ウェイ ハンドシェイク後...

vue3 テレポートの詳細な使用例

公式ウェブサイトhttps://cli.vuejs.org/ja/ガイド/場合によっては、コンポーネ...

jQueryはキャンバスタグを使用して検証コードを描画します

<canvas> 要素は、クライアント側のベクター グラフィックス用に設計されています。...

CSS におけるスタックコンテキストの具体的な使用法

序文一部の CSS 相互作用の影響により、要素に設定されたz-index実際のサイズに応じて重ね合わ...

Ubuntu 20.04 LTS で Java 開発環境を構成する

Java開発キットjdkをダウンロードするJDK のダウンロード アドレスはhttp://www.o...

ES5とES6の違いを分析する

目次概要関数シグネチャオプションパラメータ非厳密モード例外処理実用要約する概要ご存知のとおり、ES6...

Vue でスロットを使用する方法についての簡単な説明

定義と使用方法:コンポーネントのテンプレートでスロットタグの定義を使用します。デフォルトの表示値は、...

MySQL および Oracle のバッチ挿入 SQL の一般的な記述例

目次例えば:一般的な執筆:要約する例えば:次に、データベースのUSERテーブルにUserオブジェクト...

Ubuntu 20.04 IPアドレスを変更する方法の例

例:本日、前回のオフィスコラボレーションプラットフォーム実験の続きをしていたところ、仮想マシンは以前...

mysql 8.0.16 winx64 および Linux でルート ユーザーのパスワードを変更する方法

データベースへの接続などの基本的な操作はご自身で行ってください。この記事ではパスワードの変更方法を中...

MySQL ストレージ エンジン MyISAM と InnoDB の違いの概要

1. MySQLのデフォルトストレージエンジンの変更MySQL 5.1 より前のバージョンでは、デフ...

HTML はテキストの外側に省略記号を表示します...テキストオーバーフローによって実装されます

div または span に同時に CSS を適用する必要があります。コードをコピーコードは次のとお...