レッスン3:リンクと画像
🎯 このレッスンで学ぶこと
- aタグでリンクを作れます。
- imgタグで画像を表示できます。
- 相対パスと絶対パスの違いを説明できます。
📖 前回の復習(レッスン2)
<h1>〜<h6>で見出し、<p>で段落を作る<br>で改行、<hr>で区切り線を入れる<strong>で太字、<em>で斜体にできる
📖 導入 — ウェブページをもっと豊かにしよう
前のレッスンまでで、文字を表示できるようになりましたね。でも、ウェブページには文字だけでなく、リンクや画像もありますよね。このレッスンでは、そういった機能を作る方法を学びます!
📝 リンク・画像・パスの書き方
リンクタグ:<a>
リンク(anchor)を作るタグです。href 属性に移動先のアドレスを書きます。
<a href="https://www.youtube.com">YouTubeを見る</a>
<!-- 新しいタブで開く場合 -->
<a href="https://www.youtube.com" target="_blank" rel="noopener noreferrer">YouTubeを見る(新しいタブ)</a> ▶ プレビュー
target="_blank" を使うときは、セキュリティのため rel="noopener noreferrer" を付けましょう。
画像タグ:<img>
画像を表示するタグです。終了タグは不要です。alt は必ず書きましょう(スクリーンリーダーが読み上げます)。
画像ファイル(.jpg, .png, .gif, .webp など)を表示できます。Web では .webp が軽量でおすすめです。
<img src="cat.jpg" alt="かわいい猫の写真"> cat.jpg は架空のファイル名です。実際には「やってみよう」で用意した自分の画像ファイルのパスを書いてください。(例:images/photo.jpg)
画像が大きすぎるときは
width 属性でサイズを指定できます:<img src="photo.jpg" alt="写真" width="300">height を省略すると、縦横比を保ったまま縮小されます。CSSで
max-width: 100% を指定すると、画面幅に合わせて自動縮小されます(レスポンシブ対応):img { max-width: 100%; height: auto; } ページ内リンク
href="#id名" と書くと、同じページ内の特定の場所にジャンプできます。
<!-- リンク元(目次) -->
<ul>
<li><a href="#profile">プロフィール</a></li>
<li><a href="#hobby">趣味</a></li>
</ul>
<!-- リンク先(id属性をつける) -->
<h2 id="profile">プロフィール</h2>
<p>名前は田中です。</p>
<h2 id="hobby">趣味</h2>
<p>ゲームが好きです。</p> 長いページで目次を作るときに便利です。クリックするとその場所までスクロールします。
▶ プレビュー
同じ
id を複数の要素につけてはいけません。id="profile" はページ内で1つだけ使えます。
相対パスとは?
今開いているファイルの場所を起点にした、他のファイルへの道順のことです。
- 同じフォルダ内の画像:
photo.jpg - 1つ上のフォルダ:
../photo.jpg - 子フォルダ内:
images/photo.jpg
📁 my-website/├── index.html ← 今いる場所├── 📁 images/│ └── photo.jpg ← images/photo.jpg└── 📁 pages/ └── about.html ← pages/about.htmlindex.html から見て、photo.jpg は「images フォルダの中」にあるので
images/photo.jpg と書きます。
📁 my-website/├── 📁 pages/│ └── about.html ← 今いる場所└── 📁 images/ └── photo.jpg ← ../images/photo.jpgabout.html から photo.jpg を指定するには、まず
../ で1つ上(my-website)に戻り、そこから images/photo.jpg と進みます。
../ を1つ書くたびに1階上のフォルダに戻ります。2階上なら ../../ です。
絶対パスとは?
ウェブ上の住所(URL)をそのまま書いたものです。どこから書いても同じ場所を指します。
例:https://example.com/photo.jpg
相対パスと絶対パスの使い分け
| 種類 | 書き方 | 使いどころ |
|---|---|---|
| 絶対パス | https://... から始まる | 外部サイトの画像・リンク |
| 相対パス | ファイル名や フォルダ名/ から始まる | 自分のフォルダ内のファイル |
💻 やってみよう!
- フォルダと画像を用意する
- VS Codeで
my-practiceフォルダを開く my-practiceフォルダの中にimagesフォルダを作る(左のサイドバーで「新しいフォルダ」アイコンをクリック)- 好きな画像を用意する(スクリーンショットを撮るか、フリー素材サイト Unsplash から1枚ダウンロード)
- 用意した画像ファイルを
photo.jpgという名前に変更してimagesフォルダに入れる(ファイルを右クリック→「名前の変更」) my-practiceフォルダにindex.htmlという新しいファイルを作る
- VS Codeで
- コードを書く index.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>リンクと画像の練習</title> </head> <body> <h1>リンクと画像</h1> <h2>リンクの例</h2> <p><a href="https://www.google.com" target="_blank" rel="noopener noreferrer">Googleを開く</a></p> <h2>画像の例</h2> <img src="images/photo.jpg" alt="わたしのお気に入りの写真"> </body> </html> - ブラウザで確認する
リンクをクリックすると新しいタブでGoogleが開けば成功です! 🎉
書いたコードを、Gemini か ChatGPT に見てもらおう。答えを教えてもらうのではなく、良い点と改善点を1つずつ確認する使い方だよ。
※ ChatGPTは自動で入力されるよ。Geminiは環境によって自動で入らないことがあるので、その場合は貼り付けてね。
自由課題:
- 好きなサイトへのリンクを3つ追加してみよう
- 画像に
width="200"を追加してサイズを変えてみよう - ページ内リンク(
href="#section"+id="section")を試してみよう - 同じフォルダに別の HTML ファイルを作り、相対パスでリンクしてみよう
自由課題を、AIにヒントをもらいながら進めよう。完成コードはもらわず、自分の手で書くのがポイント。
※ ChatGPTは自動で入力されるよ。Geminiは環境によって自動で入らないことがあるので、その場合は貼り付けてね。
⚠️ よくあるミス
- img タグに alt を書き忘れる:
altは画像が表示できないときの代わりのテキストです。スクリーンリーダーも読み上げるので、必ず書きましょう。 - 画像のパスが間違っている:画像が表示されないときは、ファイル名やフォルダ名のスペルを確認しましょう。大文字・小文字の違いもエラーの原因になります。
- a タグの href を書き忘れる:
<a>テキスト</a>だけではリンクになりません。href="URL"を忘れずに書きましょう。 - ページ内リンクの id が一致しない:
href="#profile"とid="Profile"は大文字小文字が違うのでジャンプしません。完全に一致させましょう。
📌 まとめ
| タグ | 役割 |
|---|---|
<a href="..."> | リンク。クリックで別のページに移動する |
<img src="..." alt="..."> | 画像を表示する。終了タグは不要 |
- ✅
target="_blank"を追加すると新しいタブで開く - ✅
altは必ず書く(アクセシビリティのため) - ✅ 外部サイトは絶対パス(
https://...)、自分のファイルは相対パスで指定する - ✅
href="#id"でページ内リンクが作れる - ✅ 画像サイズは
width属性や CSS で制御する
このレッスンの内容から3問、AIに出題してもらおう。間違えても大丈夫、解説つきで教えてくれるよ。
※ ChatGPTは自動で入力されるよ。Geminiは環境によって自動で入らないことがあるので、その場合は貼り付けてね。
🚀 次のレッスンへ
次のレッスンでは、リストと表を使って情報を整理する方法を学びます!
このレッスンは役に立ちましたか?
フィードバックありがとうございます!
📖 このレッスンの用語
⚠️ よくあるエラー
- テーブルの表示が崩れる — tr/td の入れ子が間違っている
- 保存しても変更が反映されない — ブラウザを手動で更新していない
- ファイル名に日本語やスペースが含まれている — ファイル名が原因でエラーになる