JS無しCSSのみでテキストエリアを可変させる

2024.08.23 09:00
2024.08.23 09:40
JS無しCSSのみでテキストエリアを可変させる

HTMLフォームのテキストエリアは複数行のテキストを入力できるパーツですが、
通常だと縦の高さが一定で、たくさん文字を入れると隠れる仕様でした。

それをJSでなんとかしていたのが今までだったのですが、
ついにCSSのみで実現できるようになったみたいです!

デモはこんな感じ。

では早速試してみましょう。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title></title>
  <style type="text/css">
    .textarea {
      field-sizing: content;
      min-height: 100px;
      min-width: 200px;
      max-width: 400px;
    }
  </style>
</head>
<body>

<textarea rows="5" class="textarea"></textarea>

</body>
</html>

見ての通りめちゃくちゃシンプルですね。
textareaの方は特に新しいことはしておらず、クラスを当てているだけです。

cssには「field-sizing: content;」を当てています。
これだけで可変するようになります。便利すぎますね。

今までとちょっと違うのは、
明示的にサイズを指定する必要があるというところです。
何もしないと、めちゃくちゃ小さいフォームになってしまいます。

あと、まだ実験段階なので、対応していないブラウザが多いことですかね。
いずれにしても対応していなければただ可変しないだけなので、
「必ず可変してくれなきゃ困る!」という状況以外は入れ得なんじゃないでしょうか。

CSSがどんどん便利になっていいですね。

今回は以上です!