<input name="txtId" type="text" size="20" />
または
<input name="txtId" type="text" style="width: 150px;" />
最適なクロスブラウザコードはどれですか?
もちろん、要件によって異なりますが、人々がどのように決定し、どのような根拠に基づいているかを知りたいのです。
<input name="txtId" type="text" size="20" />
または
<input name="txtId" type="text" style="width: 150px;" />
最適なクロスブラウザコードはどれですか?
もちろん、要件によって異なりますが、人々がどのように決定し、どのような根拠に基づいているかを知りたいのです。
回答:
両方使用できます。CSSスタイルは、size
CSSをサポートするブラウザーの属性をオーバーライドし、フィールドを正しい幅にします。そうでない場合は、指定された文字数にフォールバックします。
編集:size
属性は正確なサイズ変更方法ではないことを述べました。HTML仕様によると、これは入力が一度に表示できる現在のフォントの文字数を参照する必要があります。
ただし、指定されたフォントが固定幅/等幅フォントでない限り、これは指定された数の文字が実際に表示されることを保証するものではありません。ほとんどのフォントでは、異なる文字は異なる幅になります。この質問には、この問題に関連するいくつかの良い答えがあります。
以下のスニペットは、両方のアプローチを示しています。
@font-face {
font-family: 'Diplomata';
font-style: normal;
font-weight: 400;
src: local('Diplomata'), local('Diplomata-Regular'), url(https://fonts.gstatic.com/s/diplomata/v8/8UgOK_RUxkBbV-q561I6kFtXRa8TVwTICgirnJhmVJw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
@font-face {
font-family: 'Open Sans Condensed';
font-style: normal;
font-weight: 300;
src: local('Open Sans Condensed Light'), local('OpenSansCondensed-Light'), url(https://fonts.gstatic.com/s/opensanscondensed/v11/gk5FxslNkTTHtojXrkp-xBEur64QvLD-0IbiAdTUNXE.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
p {
margin: 0 0 10px 0;
}
input {
font-size: 20px;
}
.narrow-font {
font-family: 'Open Sans Condensed', sans-serif;
}
.wide-font {
font-family: 'Diplomata', cursive;
}
.set-width {
width: 220px;
}
<p>
<input type="text" size="10" class="narrow-font" value="0123456789" />
</p>
<p>
<input type="text" size="10" class="wide-font" value="0123456789" />
</p>
<p>
<input type="text" size="10" class="narrow-font set-width" value="0123456789" />
</p>
<p>
<input type="text" size="10" class="wide-font set-width" value="0123456789" />
</p>
おそらく、最良の方法は、スタイルの幅をem単位で設定することですstyle='width:20em'
:) 20文字の入力サイズの場合は、次のように設定します:)
size
は、さまざまなブラウザおよびそれらの可能なフォント設定間で一貫性がありません。
width
PXでのスタイルセットは、少なくとも一貫して、モジュロボックスサイジングの問題を。フォントに対して相対的にサイズを設定する場合は、スタイルを「em」に設定することもできます(ただし、入力のfont
ファミリとサイズを明示的に設定しない限り、これは一貫性がありません)。液体レイアウトフォーム。いずれにせよ、スタイルシートはおそらくインラインよりも望ましいですstyle
属性ます。
あなたはまだ必要とするsize
ため<select multiple>
、適切なオプションと並ぶように高さを取得します。しかし、私はそれを使用しません<input>
。
これは「従来の知恵」に反すると言いたいのですが、私は一般的にサイズを使用することを好みます。この理由は、多くの人がそうではないと言う理由です。フィールドの幅は、フォントサイズに応じて、ブラウザーによって異なります。具体的には、ブラウザの設定に関係なく、常に指定された数の文字を表示するのに十分な大きさになります。
たとえば、日付フィールドがある場合、通常はフィールドに8文字または10文字(2桁の月と日と2桁または4桁の年、区切り記号付き)を表示するのに十分な幅が必要です。サイズ属性を設定すると、無駄なスペースを最小限に抑えながら、日付全体が表示されることが保証されます。同様に、ほとんどの数値について-予想される値の範囲がわかっているので、size属性を適切な桁数に加えて、該当する場合は小数点に設定します。
私の知る限り、CSS属性はこれを行いません。たとえば、emで幅を設定することは、幅ではなく高さに基づいて行われるため、既知の数の文字を表示する場合はあまり正確ではありません。
もちろん、このロジックは常に適用されるわけではありません。たとえば、名前入力フィールドには、任意の数の文字を含めることができます。そのような場合は、CSS幅のプロパティ(通常はpx)にフォールバックします。しかし、私はフィールドの大半は、私が知られているコンテンツのいくつかの並べ替えを持って行い、サイズ属性を指定することによって、私はことを確認することができると言うでしょう、ほとんどのコンテンツのは、中にほとんどの場合、クリッピングなしで表示されます。
ex
ユニットを使用することもできますが、サイズを使用すると、CSSの幅に数十のID /クラスが含まれないため、ほとんどの場合は簡単になります。
ex
のように、幅ではなく、文字の高さ(具体的には「X」)em
です。文字の高さと幅(xまたはその他)の間に固定の関係がないため、文字の高さを使用してフィールドの幅を設定すると、フィールドが適切な幅になり、与えられた数の文字。フォントに応じて、幅が広くなったり狭くなったりします。ch
ユニットは有望に見えますが、9未満のIEではサポートされていません。これは、私がこれを書いたときに問題でした。
ch
残念ながらもっと良くなったかもしれませんが、一部のゼロは薄く、文字スペース全体を測定できない場合があります...
size
属性がそれを正確に行うよう努めているという私の元のポイントを強化します。あなたは正しいかもしれませんex
が、妥当な代替手段ですが、それは高さ属性であり、幅属性ではないという事実は変わりません。size
幅属性であり、単なるcssではありません。
テーブルの幅を小さくしようとしてどの要素を小さくしようとしても、小さくすることができないテーブルとの戦いを終えたところです。firebugを使用して検索しましたが、幅を高く設定している要素が見つかりませんでした。
最後に、入力テキスト要素のサイズ属性を変更してみましたが、修正されました。何らかの理由で、サイズ属性がCSSの幅を上書きしました。テーブルに行を動的に追加するためにjQueryを使用していて、入力を含んでいたのはこれらの行でした。したがって、おそらくappendTo()関数を使用して動的に入力を追加することになると、幅とともにサイズ属性を設定する方が良いでしょう。
スタイルと幅を使用してテキストボックスのサイズを変更できます。以下がそのコードです。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<div align="center">
<form method="post">
<div class="w3-row w3-section">
<div class="w3-rest" align = "center">
<input name="lastName" type="text" id="myInput" style="width: 50%">
</div>
</div>
</form>
</div>
</body>
</html>
テキストボックスを中央に配置するには、alignを使用します。
HTMLは要素の意味の意味を制御します。CSSはページのレイアウト/スタイルを制御します。レイアウトを制御する場合はCSSを使用してください。
つまり、決してsize = ""を使用しないでください。