1

私が理解しているように、幅/パディング/マージン プロパティはブロック レベルの要素でのみ機能します。ただし、INPUT および SELECT 要素では、幅を指定することができます。それはすべきですか?

私は次のように書くことができます:

<input type="text" style="display:block;" />

しかし、それは必要ですか?

なぜそれが機能するのか、誰でも説明できますか?

4

5 に答える 5

4

仕様によると

適用対象:置換されていないインライン要素、テーブル行、および行グループを除くすべての要素

input要素やselect要素などのフォームコントロールはインライン要素に置き換えられます(要素はフォームコントロールに置き換えられます。そのテキストコンテンツは通常の要素のように表示されません)。

それらは置き換えられるため、置き換えられないわけではないため、widthプロパティが適用されます。

于 2009-05-30T19:36:57.783 に答える
4

実際には、それらは実際にはインライン要素ではなく、インライン ブロック要素です。これにより、インライン要素の流れを中断することなく、幅、高さ、およびその他のブロック固有のプロパティを指定できます。優れたブラウザでは、任意の要素で「display:inline-block」を使用して同じことを実現できます。

于 2009-05-30T09:19:17.143 に答える
0

フォーム要素は、HTML/CSS の世界の厄介者です。通常の HTML 要素のように機能しないプロパティがたくさんあります。

あなたの質問には答えませんが、次の議論は興味深いかもしれません

于 2009-05-30T09:25:22.217 に答える
0

技術的には、これはブラウザ固有のレンダリング プロパティです。現時点では、ほとんどのブラウザーで幅を設定できますが、(特に古いブラウザーでは) 保証されておらず、間違いなくバグに遭遇する可能性があります。

入力要素の W3 仕様では、技術的にインライン要素になります。Inline-block は W3 仕様の一部ではなく、CSS2 の一部です (したがって、古いブラウザーでは一貫性がありません)。

たとえば、幅をパーセンテージで指定して大量のテキストを入れると、IE には面白いバグがいくつかあります。

簡単に言えば、ほとんどの場合安全ですが、私が見た公式仕様の一部ではありません.

于 2009-05-30T09:45:35.577 に答える
-1

それが不可能だったらどうなるか考えましたか?INPUT 要素が導入されたとき、CSS はありませんでした。また、適切なフォームを作成するために、HTML では INPUT 要素の幅が絶対に必要です。

于 2009-05-30T09:01:05.340 に答える