私が理解しているように、幅/パディング/マージン プロパティはブロック レベルの要素でのみ機能します。ただし、INPUT および SELECT 要素では、幅を指定することができます。それはすべきですか?
私は次のように書くことができます:
<input type="text" style="display:block;" />
しかし、それは必要ですか?
なぜそれが機能するのか、誰でも説明できますか?
私が理解しているように、幅/パディング/マージン プロパティはブロック レベルの要素でのみ機能します。ただし、INPUT および SELECT 要素では、幅を指定することができます。それはすべきですか?
私は次のように書くことができます:
<input type="text" style="display:block;" />
しかし、それは必要ですか?
なぜそれが機能するのか、誰でも説明できますか?
適用対象:置換されていないインライン要素、テーブル行、および行グループを除くすべての要素
input要素やselect要素などのフォームコントロールはインライン要素に置き換えられます(要素はフォームコントロールに置き換えられます。そのテキストコンテンツは通常の要素のように表示されません)。
それらは置き換えられるため、置き換えられないわけではないため、widthプロパティが適用されます。
実際には、それらは実際にはインライン要素ではなく、インライン ブロック要素です。これにより、インライン要素の流れを中断することなく、幅、高さ、およびその他のブロック固有のプロパティを指定できます。優れたブラウザでは、任意の要素で「display:inline-block」を使用して同じことを実現できます。
フォーム要素は、HTML/CSS の世界の厄介者です。通常の HTML 要素のように機能しないプロパティがたくさんあります。
あなたの質問には答えませんが、次の議論は興味深いかもしれません。
技術的には、これはブラウザ固有のレンダリング プロパティです。現時点では、ほとんどのブラウザーで幅を設定できますが、(特に古いブラウザーでは) 保証されておらず、間違いなくバグに遭遇する可能性があります。
入力要素の W3 仕様では、技術的にインライン要素になります。Inline-block は W3 仕様の一部ではなく、CSS2 の一部です (したがって、古いブラウザーでは一貫性がありません)。
たとえば、幅をパーセンテージで指定して大量のテキストを入れると、IE には面白いバグがいくつかあります。
簡単に言えば、ほとんどの場合安全ですが、私が見た公式仕様の一部ではありません.
それが不可能だったらどうなるか考えましたか?INPUT 要素が導入されたとき、CSS はありませんでした。また、適切なフォームを作成するために、HTML では INPUT 要素の幅が絶対に必要です。