ホームページ >ウェブフロントエンド >CSSチュートリアル >ブロックレベルの入力要素が常に div のようにコンテナを満たさないのはなぜですか?

ブロックレベルの入力要素が常に div のようにコンテナを満たさないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-30 11:52:12788ブラウズ

Why Don't Block-Level Input Elements Always Fill Their Containers Like Divs?

ブロックとして表示される入力要素: Div と異なる理由

入力要素は、display: block および width: で認識されるのが一般的です。 auto は div と同様に動作し、コンテナーの全幅を占めます。ただし、指定されたコード スニペットに見られるように、これは当てはまりません。

矛盾を理解する

div とは異なり、入力要素は別のボックス モデルに従います。ボーダーボックスモデル。このモデルは、div に使用されるコンテンツ ボックス モデルとは異なり、全体の幅の計算でパディングと境界線を考慮します。

問題の解決

入力要素を強制的にスパンするにはコンテナーの全幅、パディングとボーダーを考慮しながら、max-width: 100% プロパティを使用できます。この手法は基本的に、ボーダーとパディングにより計算された幅がこの値を超えている場合でも、入力要素の幅を親コンテナーに制限します。

ブラウザー間の互換性

ブラウザ間で一貫した動作を実現するには、最近導入された box-sizing: border-box プロパティを使用できます。このプロパティは、デフォルトのボックス モデルに関係なく、ターゲット要素にボーダー ボックス モデルを使用するようにブラウザに明示的に指示します。

実装

次のコードは、この解決策を示しています。 :

<div class="wrapper">
  <input type="text" class="input" placeholder="Input Text" />
</div>

<style>
  .wrapper {
    width: 500px;
    border: 1px solid black;
    padding: 20px;
  }

  .input {
    width: 100%;
    box-sizing: border-box;
  }
</style>

このアプローチでは、入力要素がコンテナーの全幅を占めることが保証されます。すべての主要なブラウザ。

以上がブロックレベルの入力要素が常に div のようにコンテナを満たさないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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