一般に「テキストエリア」または「複数行テキストボックス」として知られる
<textarea></textarea><textarea cols="30" rows="5"></textarea>
以下のサイズは、cols および rows 属性値がない場合よりも明らかに大きいことがわかります。
次の質問は、列と行がテキストフィールドのサイズに影響を与える可能性があることを多くの友人が知っていると思いますが、列と行のさまざまな値と最終的な表示のピクセルサイズの間には何か関係があるのでしょうか? ?計算式を使って計算できるのでしょうか?最終的なパフォーマンスは他の CSS プロパティの影響を受けますか?
上記の問題について知っている人は私も含めてほとんどいないと思いますが、この記事を書く前は漠然と理解していました。
今からくだらない話をしますが、この記事を書いたとき、私は実は心の中で孤独でした。この感覚は、目の前に川があるのはわかっているけど、釣りに適しているかどうかわからない、という感覚に似ています。結果は自分で確認する必要があります。しかし、川岸への道は誰も歩いたことがなく、つまり道はなく、目の前にあるのは人の背丈ほどもある不毛の草原であり、とても高く遠くにあります。終わりが見えない草原には、いつ毒ヘビやイノシシが現れるかわかりません。それでも、自分の情熱に従って、私は果敢に未知の道を探索しに行きました。草や木が生い茂り、手で押しのけたり、踏みしめたりするしかありませんでした。茎と蔓、刃のような葉が手と顔に跡を残し、半分進んで草原全体の真ん中に到達すると、周りには誰もおらず、絡み合った草の葉が穏やかな風に吹かれているだけです。 . ささやくような音、自然と湧き上がる孤独感、どんなに強い心でも迷ってしまう、このまま進んでいいのか…
そうだ、進めばいいのか! ?最近、私の心に大きな影響を与え、繰り返し言及される言葉があります。それは、「これを行う目的は何ですか?」です。いいですか?私はただ自分の興味を追求しているだけです!これが私の最初の反応でした。
しかし、ふと見上げると周りには誰もおらず、棘だらけであることに気づくと、例えばこの記事は、功利主義と目的について語らなければならない場合、次のようになります。本当に何もないのですか?気にする人はいますか?時間を費やす価値はありますか?なぜ誰も気にも留めないものを構築するのでしょうか?あなたのプロジェクトに役立つトレンドのものに焦点を当ててみてはいかがでしょうか?他の人が空を飛んでいる中、なぜあなたは一人で茨の中を歩かなければならないのでしょうか? (下のビデオ:通行人が路上の黒板に人生最大の後悔を書きました)
さて、みんなで行こう、まだ渡ったことのない草原を越え、呼ぶ川に向かって進み続けた待っていたら見つけた、憧れの未開の漁場。
2. Cols 属性の値と幅
インターフェースは次のとおりです:
テキストのサイズと幅を変更するにはドロップダウンを選択できます。テキストエリアのフォントや文字間隔など、テキストフィールドの幅に影響するかどうかを確認します。結果と結論は次のとおりです。
Chrome | IE | FireFox | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | IE | FireFox | |
---|---|---|---|
font-size | |||
フォントファミリー | |||
行の高さ |
ご覧のとおり、Chrome ブラウザと FireFox ブラウザは行の高さのみに影響を受け、フォントと文字のサイズには影響を受けません。一方、IE ブラウザはまったく逆で、行の高さには目をつぶっていますが、そのことは認識していません。文字サイズとフォントが影響を受けます。
ここで最も懸念される質問が来ますが、行の値と最終的にレンダリングされる高さとの間には関係や公式はあるのでしょうか (パディングとボーダーの影響はさておき)。
Chrome ブラウザでは、最終的な高さは rows の値と line-height の行の高さの積になります。上のデモのスクリーンショットに示されているように、行の値が 2 で行の高さが 20 ピクセルの場合、最終的な高さはその積である 40 ピクセルになります。
FireFox ブラウザでも同様ですが、高さにスクロール バーのサイズを含める必要があるという違いが 1 つあります。そのため、以下のシーンでは、高さが Chrome ブラウザの高さより 17 ピクセル高くなります。 :
IE ブラウザでは、異なるフォントが切り替えられるため、高さは行の高さとは関係なく、テキストを含むコンテンツ領域の高さによって決まります (インライン ボックス モデルの概念)。たとえば、Microsoft Yahei フォントを使用すると、明らかに高さが高くなります。Microsoft Yahei のコンテンツ領域の高さは、通常のフォントよりも高くなります。したがって、テキストフィールドの高さと文字の関係を決定するために、高さ = 行数 * 係数という計算係数を決定することは困難です。たとえば、16px の Microsoft Yahei フォントの係数は約 21 (下図を参照)、宋代の simsun の係数は 18.2 ~ 18.5 などです。
要約すると:
互換性は依然として混乱しており、まったく同じように動作する 2 つのブラウザはありません。ただし、最終的なパフォーマンス設計は Cols よりも少し優れています。さらに重要な問題は、高さの要件が一般にそれほど厳密ではないことです。そのため、テキスト フィールドの高さを確認するために CSS を再作成したくない場合があります。これを行うには rows 属性値を使用することもできます。
最終的な調査の結果、互換性は非常に低く、各ブラウザで同じパフォーマンスを実現するには非常にコストがかかることがわかりました。したがって、テキストフィールドのレイアウト要件が厳しい場合は、CSS の幅 / 高さ属性を使用して正確に制御することをお勧めします。
唯一の収穫は、ブラウザごとに互換性がどのように異なるのか、最終的なレンダリングサイズの計算方法や関連する要素などがわかったことです。将来、特定の機能を実装する際に別のアイデアが得られるかもしれません。 !
以上です!
この記事は、スクリプトの動作を含むオリジナルの記事です。したがって、再印刷する場合は、追跡可能性を高めるために、元のソースを保持してください。古くて間違った知識による誤解を避けると同時に、より良い読書体験を得ることができます。
この記事のアドレス: http://www.zhangxinxu.com/wordpress/?p=5240
(この記事はここまで)