画像付きテキストエリアを作る方法
画像付きテキストエリアを作る方法を紹介します。このサンプルでは、画像と質問文、複数行入力できるtextarea要素を組み合わせ、画像を確認しながら文章を入力できるフォームを作成します。画像と入力欄を同じエリアへ配置することで、画像を参考にした回答や説明文を入力しやすい構成にできます。
模擬テストやクイズの記述式問題、画像について説明する学習コンテンツ、写真を見ながら内容を入力するフォームなどに利用できます。サンプルでは人物画像を左側、質問文と回答用テキストエリアを右側に配置しています。テキストエリアは複数行入力に対応しているため、人物名だけではなく、人物についての説明や画像から読み取った内容など、まとまった文章を入力する用途にも適しています。
質問文、ラベル、プレースホルダー、表示する画像はHTMLから変更でき、CSSでは画像の横幅、画像と回答欄の間隔、テキストエリアの高さ、余白、枠線、角丸などを調整できます。レスポンシブにも対応しており、画面幅が狭い場合は画像と回答欄を縦並びに切り替えるため、スマートフォン・タブレット・PCで利用できます。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
画像を確認しながら、質問への回答をテキストエリアへ入力できます。
この画像の人物について説明してください。
左側の画像を確認しながら、右側のテキストエリアへ回答を入力できます。テキストエリアは複数行の入力に対応しており、右下をドラッグすると高さを変更できます。画面幅が狭い場合は、画像とテキストエリアが縦並びで表示されます。
コードをコピーして使おう!
<!DOCTYPE html>
<html lang="ja">
<head>
<!-- 文字コードをUTF-8へ設定 -->
<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="image-textarea_wrap">
<!-- タイトル -->
<div class="image-textarea_title">
画像付きテキストエリア
</div>
<!-- 説明文 -->
<p class="image-textarea_text">
画像を確認しながら、質問への回答をテキストエリアへ入力できます。
</p>
<!-- 画像とテキストエリアを並べる領域 -->
<div class="image-textarea_content">
<!-- 画像 -->
<div class="image-textarea_image">
<img src="http://maruhinoto.com/wp-content/uploads/2026/08/坂本龍馬.png" alt="問題として表示する人物の画像">
</div>
<!-- 質問と入力欄 -->
<div class="image-textarea_group">
<!-- 質問文 -->
<p class="image-textarea_question">
この画像の人物について説明してください。
</p>
<!-- テキストエリアのラベル -->
<label class="image-textarea_label" for="answer">
回答
</label>
<!-- 複数行入力用のテキストエリア -->
<textarea id="answer" class="image-textarea_input" placeholder="この人物について入力してください"></textarea>
</div>
</div>
</div>
</body>
</html>
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。
InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。
ファイル構成と設置方法
このサンプルはHTMLとCSSの2ファイルで構成されています。HTMLでは画像、質問文、ラベル、複数行入力用のテキストエリアを配置し、画像を確認しながら回答を入力できる画面を作成します。CSSでは画像とテキストエリアの横並び表示、余白、枠線、角丸、フォーカス時の表示などを設定しており、画面幅が狭い場合は画像とテキストエリアを縦並びへ切り替えます。
sample/
├── index.html
└── style.css
各ファイルの役割
index.htmlは画像付きテキストエリア全体を構成するファイルです。タイトル、説明文、画像、質問文、ラベル、テキストエリアを編集できます。表示する画像や質問内容を変更することで、用途に合わせた入力画面を作成できます。
style.cssは画像とテキストエリアのレイアウトやデザインを設定するファイルです。全体の横幅、余白、画像サイズ、画像と入力欄の間隔、文字サイズ、枠線、角丸、テキストエリアの高さ、フォーカス時の色などを変更できます。
設置方法・使い方
sampleフォルダへindex.htmlとstyle.cssを配置します。2つのファイルを同じ階層へ保存したあと、sample/index.htmlをブラウザで開いてください。左側に画像、右側に質問文とテキストエリアが表示されます。画像を確認しながらテキストエリアへ複数行の文章を入力でき、右下をドラッグすると入力欄の高さを変更できます。
カスタマイズできる内容
index.htmlではタイトル、説明文、画像のsrc属性とalt属性、質問文、ラベル、テキストエリアのid属性やplaceholder属性を変更できます。表示したい画像や質問内容に合わせて編集してください。
style.cssでは全体の横幅、背景色、余白、画像の横幅、画像とテキストエリアの間隔、文字サイズ、テキストエリアの高さ、枠線、角丸、フォーカス時の枠線色や外側の強調表示などを用途に合わせて調整できます。
数値調整
style.css
max-width:760px;
全体の最大横幅です。値を大きくすると画像とテキストエリアを表示する領域が広がり、小さくするとコンパクトになります。
margin:40px auto;
全体の上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。左右のautoによって全体を中央へ配置しています。
padding:32px;
全体の内側余白です。値を大きくすると内容と外枠との間隔が広がり、小さくすると詰まった表示になります。
border-radius:18px;
全体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
font-size:22px;
タイトルの文字サイズです。値を大きくするとタイトルが大きくなり、小さくすると控えめになります。
margin:0 0 28px;
説明文の下側余白です。28pxを大きくすると画像や質問欄との間隔が広がり、小さくすると狭くなります。
grid-template-columns:240px 1fr;
画像とテキストエリアを横並びにするときの列幅です。240pxを大きくすると左側の画像領域が広くなり、小さくすると画像領域が狭くなります。
gap:28px;
画像と右側の質問・テキストエリアとの間隔です。値を大きくすると左右の間隔が広がり、小さくすると近づきます。
border-radius:12px;
画像の角丸です。値を大きくすると画像の丸みが強くなり、0にすると四角になります。
font-size:18px;
質問文の文字サイズです。値を大きくすると質問文が大きくなり、小さくすると小さくなります。
gap:10px;
質問、ラベル、テキストエリアを配置するグループ内の間隔です。値を大きくすると各要素の間隔が広がります。
min-height:160px;
テキストエリアの最小高さです。値を大きくすると最初から入力欄が高く表示され、小さくすると低くなります。
padding:14px 16px;
テキストエリアの内側余白です。上下の14pxを変更すると入力文字と上下の枠線との間隔が変わり、左右の16pxを変更すると左右の間隔が変わります。
border:2px solid #d1d5db;
テキストエリアの枠線です。2pxを大きくすると枠線が太くなり、小さくすると細くなります。
border-radius:10px;
テキストエリアの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。
box-shadow:0 0 0 4px rgba(37,99,235,.12);
フォーカス時にテキストエリアの外側へ表示する強調表示です。4pxを大きくすると強調表示が太くなり、小さくすると控えめになります。
レスポンシブ対応
このサンプルはレスポンシブ対応です。PCなど画面幅が広い場合はgrid-template-columns:240px 1frによって画像とテキストエリアを横並びで表示します。画面幅640px以下ではgrid-template-columns:1frへ変更し、画像とテキストエリアを縦並びで表示します。また、全体の内側余白を24px 18pxへ変更し、画像はmax-width:280pxで中央へ配置するため、画面幅が狭い場合でも見やすく表示できます。
コメント