入力内容をリアルタイム表示するテキストエリアを作る方法
入力内容をリアルタイム表示するテキストエリアを作る方法を紹介します。このサンプルでは、テキストエリアへ入力した文章をJavaScriptで取得し、入力内容の確認エリアへそのまま表示します。文字の入力や削除、改行に合わせて表示内容がすぐに更新されるため、別の確認ボタンを押さなくても入力結果を確認できます。
お問い合わせ画面の入力確認、会員サイトのプロフィール編集、ECサイトの商品説明入力、管理画面のお知らせ作成など、入力した文章の見え方をその場で確認したい場合に利用できます。入力欄と表示結果を同じ画面で確認できるため、改行位置や文章内容の間違いに気付きやすく、利用者が内容を調整しながら入力できます。
タイトル、説明文、ラベル、プレースホルダー、初期メッセージはHTMLから変更できます。CSSではフォームの横幅、テキストエリアの高さ、余白、枠線、角丸、確認エリアの背景色などを調整できます。JavaScriptは入力イベントに合わせて表示内容を更新するシンプルな構成で、外部ライブラリを使わずに導入できます。スマートフォン・タブレット・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-realtime-preview_wrap">
<!-- タイトル -->
<div class="textarea-realtime-preview_title">
お問い合わせ内容
</div>
<!-- 説明文 -->
<p class="textarea-realtime-preview_text">
入力した文章が確認エリアへリアルタイムで表示されます。
</p>
<!-- 入力項目 -->
<div class="textarea-realtime-preview_group">
<!-- ラベル -->
<label
class="textarea-realtime-preview_label"
for="message">
内容
</label>
<!-- 入力内容を取得するテキストエリア -->
<textarea
id="message"
name="message"
class="textarea-realtime-preview_input"
placeholder="お問い合わせ内容を入力してください。"></textarea>
</div>
<!-- 入力内容の確認エリア -->
<div class="textarea-realtime-preview_result">
<!-- 確認エリアのタイトル -->
<div class="textarea-realtime-preview_result-title">
入力内容の確認
</div>
<!-- 入力内容をリアルタイム表示する場所 -->
<p
id="preview-output"
class="textarea-realtime-preview_output"
aria-live="polite">入力内容がここに表示されます。</p>
</div>
</div>
<!-- JavaScriptファイル -->
<script src="script.js"></script>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
ファイル構成と設置方法
このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLでは文章を入力するテキストエリアと、入力内容を表示する確認エリアを配置します。CSSではフォーム全体、テキストエリア、確認エリアの横幅や余白、枠線、角丸などを設定し、JavaScriptでは入力や削除、改行に合わせて確認エリアの内容をリアルタイムで更新します。
sample/
├── index.html
├── style.css
└── script.js
各ファイルの役割
index.htmlは入力フォーム全体を構成するファイルです。ページタイトル、フォーム内のタイトル、説明文、ラベル、プレースホルダー、確認エリアのタイトル、未入力時に表示する初期メッセージを変更できます。
style.cssはページ全体、フォーム、テキストエリア、入力内容の確認エリアのデザインを設定するファイルです。フォームの最大横幅、余白、背景色、角丸、テキストエリアの高さ、枠線、確認エリアの高さや文字色などを変更できます。
script.jsはテキストエリアの入力内容を取得し、確認エリアへリアルタイムで表示するファイルです。入力内容が空になった場合は、初期メッセージの「入力内容がここに表示されます。」へ戻します。
設置方法・使い方
sampleフォルダを作成し、その中へindex.html・style.css・script.jsを配置します。3つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。テキストエリアへ文章を入力すると、文字の入力や削除、改行に合わせて確認エリアの表示内容が自動で更新されます。
カスタマイズできる内容
index.htmlではページタイトル、「お問い合わせ内容」のタイトル、説明文、「内容」のラベル、プレースホルダー、「入力内容の確認」の見出し、未入力時の初期メッセージを変更できます。お問い合わせ内容、プロフィール紹介、商品説明、お知らせ作成など、入力内容を確認しながら編集したい用途へ変更できます。
style.cssではページ全体とフォームの背景色、最大横幅、余白、角丸、テキストエリアの高さ、入力文字の行間、確認エリアの高さ、背景色、文字色、枠線などを変更できます。resize:vertical;を変更すると、利用者によるテキストエリアの高さ変更方法も調整できます。
script.jsでは、入力内容が空の場合に表示する「入力内容がここに表示されます。」の文章を変更できます。入力元のテキストエリアと表示先を変更する場合は、index.htmlのIDとscript.jsのgetElementById()へ指定するIDを一致させてください。
数値調整
style.css
padding:40px 20px;
ページ全体の内側余白です。40pxは上下、20pxは左右の余白を表します。値を大きくすると画面端との間隔が広がり、小さくすると狭くなります。
max-width:700px;
フォーム全体の最大横幅です。値を大きくすると横長になり、小さくするとコンパクトになります。
margin:40px auto;
フォーム全体の上下余白です。40pxを大きくすると上下の間隔が広がります。autoによって左右中央へ配置します。
padding:32px;
フォーム全体の内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると狭くなります。
border:1px solid #e5e7eb;
フォーム全体の枠線です。1pxを大きくすると枠線が太くなります。
border-radius:18px;
フォーム全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
margin:0 0 12px;
タイトルの下側余白です。12pxを大きくすると説明文との間隔が広がり、小さくすると狭くなります。
font-size:22px;
タイトルの文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。
line-height:1.5;
タイトル、ラベル、確認エリアのタイトルの行間です。値を大きくすると行間が広がります。
margin:0 0 24px;
説明文の下側余白です。24pxを大きくすると入力項目との間隔が広がり、小さくすると狭くなります。
font-size:16px;
説明文、ラベル、確認エリアのタイトル、表示する文章の文字サイズです。値を大きくすると文字が大きくなります。
line-height:1.8;
説明文の行間です。値を大きくすると行間が広がり、小さくすると詰まった表示になります。
gap:10px;
ラベルとテキストエリアの間隔です。値を大きくすると広がり、小さくすると近くなります。
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秒で変化します。値を大きくするとゆっくり、小さくすると速く切り替わります。
box-shadow:0 0 0 4px ...
テキストエリアを選択したときの外側の強調範囲です。4pxを大きくすると影が広がり、小さくすると控えめになります。
margin-top:24px;
入力内容の確認エリア全体の上側余白です。値を大きくするとテキストエリアとの間隔が広がります。
margin:0 0 10px;
確認エリアのタイトルの下側余白です。10pxを大きくすると表示欄との間隔が広がります。
min-height:120px;
確認エリアの最低高さです。値を大きくすると最初から高く表示され、小さくすると低くなります。
padding:16px;
確認エリアの内側余白です。値を大きくすると文章と枠線の間隔が広がり、小さくすると狭くなります。
padding:24px 12px;
画面幅640px以下で使用するページ全体の内側余白です。24pxは上下、12pxは左右の余白を表します。
padding:24px 18px;
画面幅640px以下で使用するフォーム全体の内側余白です。24pxは上下、18pxは左右の余白を表します。
min-height:160px;
画面幅640px以下で使用するテキストエリアの最低高さです。値を変更するとスマートフォン表示時の高さが変わります。
min-height:100px;
画面幅640px以下で使用する確認エリアの最低高さです。値を変更するとスマートフォン表示時の高さが変わります。
padding:14px;
画面幅640px以下で使用する確認エリアの内側余白です。値を大きくすると文章と枠線の間隔が広がります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%とmax-width:700pxによって、画面幅に合わせてフォーム全体が縮小されます。また、画面幅640px以下ではページとフォームの余白、テキストエリアと確認エリアの最低高さ、内側余白を小さくするメディアクエリを設定しているため、スマートフォン・タブレット・PCで利用できます。
コメント