0

私が見つけることができるすべてのリソースは、テキストエリアの cols 属性が水平線の平均文字幅の数を示していると言っています。それでも、Chrome、Firefox、および Safari (すべて OSX 上) では、テキストエリアの列を (たとえば) 80 に等幅フォントで設定すると、折り返される前に 81 文字を入力できます。丸めの問題ではありません。cols=1 は同じ量を追加します。パディングやマージンの問題でもありません。動作は、すべてのスタイルが削除された場合と同じです。行ではなく、列のみです。

これは指定された動作ですか? もしそうなら、仕様や何百ものオンラインガイド/リソースのいずれにも含まれていないのはなぜですか? それが非公式の慣習である場合、css 幅を設定する代わりに、80 列に対して常に cols=79 を設定できるほど十分に信頼できますか?

4

2 に答える 2

2

の指定の意味はcols「平均的な文字幅で表示幅を指定する」というもので、Windowsプラットフォームのブラウザはこれに従います。もちろん、フォントがモノスペースでない場合、「平均的な文字幅」はあいまいな概念になり、ブラウザーによって幅の割り当てが異なる場合があります。

ラッピングは別問題です。HTML 4.01 仕様は、テキストエリアで自動ラッピングが行われないという古い考えをまだ反映していますが、ブラウザは一般的にこれを拒否しています。デフォルトでは、値よりも長い行を自動折り返しcolsします。これは、Windows ブラウザーでは正確です。

自動ラッピングはwrap、非標準の属性を使用して制御できますwrap=offが、ブラウザを HTML 4.01 の「標準」に従って動作させる唯一の方法です!

HTML5 ドラフトでは、wrap属性が定義されていますが、値softのみhardが含まれているため、古い動作を実現する方法は記述されていません。

原則として、これについてあまり心配する必要はありません。colsユーザーにとって最も有用であると予想されるものに従って、属性を設定します。通常、値 80 は大きすぎます。55 または 60 は、通常の最適な行の長さに対応します。また、書きやすいように、データがコンピューター コードまたは事前に書式設定されたテキストでない限り、フォントをプロポーショナル フォントに設定する必要があります。これにより、1 行あたりの正確な最大文字数を得ることができなくなります。

于 2012-09-24T06:07:56.590 に答える
1

これには2つの責任があります。

  1. スクロール・バー

    W3C によると、スクロールバー用の余分なスペースがあります。W3Cのメモを参照してください。

    cols = 数値 [CN]

    この属性は、表示幅を平均文字幅で指定します。ユーザーはこれよりも長い行を入力できる必要があるため、ユーザー エージェントは、コンテンツが表示領域を超えたときにコントロールのコンテンツをスクロールする手段を提供する必要があります。ユーザー エージェントは、スクロールせずに長い行を表示できるように、表示されているテキスト行を折り返すことができます。

  2. フォントサイズ

    cols属性は、フォント サイズが100%ブラウザのデフォルトのフォント サイズである場合にのみ機能します。変更すると機能しなくなります。暗黙的/明示的なfont-sizecss ルールは、動作を変更します。

于 2012-09-24T05:31:32.560 に答える