入力中に色が変わるテキストエリアを作る方法【HTML/CSS・サンプルコード付き】

テキストエリア

入力中に色が変わるテキストエリアを作る方法

入力中に色が変わるテキストエリアを作る方法を紹介します。このサンプルでは、HTMLのtextarea要素とCSSのfocus擬似クラスを使用し、テキストエリアを選択している間だけ枠線と背景色が変わる入力フォームを作成します。JavaScriptを使用せず、HTMLとCSSだけで入力中の状態を分かりやすく表現できます。

お問い合わせ画面、会員サイトのプロフィール編集、ECサイトの備考欄、管理画面のメモ入力など、複数行の文章を入力するフォームで利用できます。入力中のテキストエリアを色で強調することで、利用者が現在操作している入力欄を確認しやすくなり、複数の入力項目がある画面でも入力位置を把握しやすくなります。

タイトル、説明文、ラベル、プレースホルダーはHTMLから変更できます。CSSでは通常時と入力中の背景色、枠線色、影、横幅、高さ、余白、角丸などを用途に合わせて調整できます。画面幅に応じてフォームが縮小されるため、スマートフォン・タブレット・PCで利用しやすいテキストエリアとして活用できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

お問い合わせ内容

入力中はテキストエリアの色が変わります。

テキストエリアをクリックして文章を入力してください。入力中は枠線と背景色が青色へ変わり、選択を外すと通常の色へ戻ります。

コードをコピーして使おう!

<!DOCTYPE html>
<html lang="ja">
<head>

  <!-- 文字コード -->
  <meta charset="UTF-8">

  <!-- スマートフォン対応 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>入力中に色が変わるテキストエリア</title>

  <!-- CSSファイル -->
  <link rel="stylesheet" href="style.css">

</head>
<body>

  <!-- 入力フォーム全体 -->
  <div class="textarea-focus-color_wrap">

    <!-- タイトル -->
    <div class="textarea-focus-color_title">
      お問い合わせ内容
    </div>

    <!-- 説明文 -->
    <p class="textarea-focus-color_text">
      入力中はテキストエリアの色が変わります。
    </p>

    <!-- 入力項目 -->
    <div class="textarea-focus-color_group">

      <!-- ラベル -->
      <label
        class="textarea-focus-color_label"
        for="message">
        内容
      </label>

      <!-- テキストエリア -->
      <textarea
        id="message"
        name="message"
        class="textarea-focus-color_input"
        placeholder="お問い合わせ内容を入力してください。"></textarea>

    </div>

  </div>

</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。

ファイル構成と設置方法

このサンプルはHTMLとCSSの2ファイルで構成されています。HTMLではtextarea要素を使用して複数行入力できるフォームを作成し、CSSの:focusを使って、テキストエリアを選択している間だけ枠線・背景色・外側の影を変更します。JavaScriptを使用せず、入力中の状態を視覚的に分かりやすく表示できます。

sample/
├── index.html
└── style.css

各ファイルの役割
index.htmlは入力フォーム全体を構成するファイルです。ページタイトル、「お問い合わせ内容」のタイトル、説明文、「内容」のラベル、テキストエリアへ表示するプレースホルダーを編集できます。textarea要素を使用しているため、改行を含む複数行の文章を入力できます。

style.cssはページ全体、フォーム、タイトル、説明文、ラベル、テキストエリアのデザインを設定するファイルです。通常時の枠線と背景色に加えて、入力中に適用する枠線色、背景色、外側の影を設定しています。

設置方法・使い方
sampleフォルダを作成し、その中へindex.htmlとstyle.cssを配置します。2つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。テキストエリアをクリックすると枠線と背景色が青系へ変わり、入力欄から選択を外すと通常の色へ戻ります。

カスタマイズできる内容
index.htmlではページタイトル、フォーム内のタイトル、説明文、ラベル、プレースホルダーを変更できます。お問い合わせ内容だけでなく、備考欄、コメント欄、プロフィール紹介、管理画面のメモ欄など、用途に合わせた表示へ編集できます。

style.cssではページ全体の背景色や余白、フォームの最大横幅、背景色、角丸、テキストエリアの高さ、内側余白、通常時の枠線色、入力中の枠線色、背景色、影を変更できます。resize:vertical;により、利用者はテキストエリアの高さだけを上下方向へ変更できます。

数値調整
style.css

padding:40px 20px;
ページ全体の内側余白です。40pxは上下、20pxは左右の余白を表します。値を大きくすると画面端との間隔が広がり、小さくすると狭くなります。

max-width:700px;
フォーム全体の最大横幅です。値を大きくすると横長になり、小さくするとコンパクトになります。

margin:40px auto;
フォーム全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。autoによって左右中央へ配置します。

padding:32px;
フォーム全体の内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると狭くなります。

border-radius:18px;
フォーム全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

font-size:22px;
タイトルの文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。

margin:0 0 24px;
説明文の下側余白です。24pxを大きくすると入力項目との間隔が広がり、小さくすると狭くなります。

line-height:1.8;
説明文の行間です。値を大きくすると行間が広がり、小さくすると詰まった表示になります。

gap:10px;
ラベルとテキストエリアの間隔です。値を大きくすると間隔が広がり、小さくすると近くなります。

font-size:16px;
ラベルの文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。

min-height:180px;
テキストエリアの初期の最低高さです。値を大きくすると最初から高く表示され、小さくすると低くなります。

padding:14px 16px;
テキストエリアの内側余白です。上下の14pxを大きくすると入力欄が高くなり、左右の16pxを大きくすると文字と枠線の間隔が広がります。

border:2px solid #d1d5db;
通常時のテキストエリアの枠線です。2pxを大きくすると枠線が太くなり、小さくすると細くなります。

border-radius:10px;
テキストエリアの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

line-height:1.7;
入力文字の行間です。値を大きくすると行間が広がり、小さくすると詰まった表示になります。

transition:0.3s;
枠線、背景色、影が切り替わる時間です。0.3秒で変化します。値を大きくするとゆっくり、小さくすると速く切り替わります。

background:#eff6ff;
入力中のテキストエリアの背景色です。色コードを変更すると、入力中に表示される背景色が変わります。

box-shadow:0 0 0 4px ...
入力中に表示する外側の強調範囲です。4pxを大きくすると影が広がり、小さくすると控えめになります。

padding:24px 18px;
画面幅640px以下で使用するフォームの内側余白です。24pxは上下、18pxは左右の余白を表します。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width:700pxにより、画面幅に合わせてフォーム全体が縮小されます。また、画面幅640px以下ではメディアクエリによってフォームの内側余白をpadding:24px 18px;へ変更しているため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント