レスポンシブなプロフィールページを作ろう
HTMLの構造を作ろう
index.html と style.css を作成し、ページの骨組みを作りましょう。
<header>— ページタイトル<main class="content">— プロフィールとスキル一覧<footer>— コピーライト
viewport メタタグ:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
を必ず書きましょう。これがないとスマホで正しく表示されません。
このタグは「画面幅に合わせて表示する」という指示をブラウザに伝えます。
ブラウザで開いて、ヘッダー・メインエリア・フッターの3つが表示されることを確認しましょう。
📝 模範解答を見る
⚠️ まず自分で考えてから見よう!
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Profile</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header><h1>🚀 My Profile</h1></header>
<main class="content">
<section class="profile">...</section>
<section class="skills">...</section>
</main>
<footer><p>© 2026 My Profile</p></footer>
</body>
</html>基本スタイルを設定しよう
body のフォント・背景色、ヘッダーとフッターの色を設定しましょう。
ダークカラーのヘッダー/フッターに白い文字を使うと、プロっぽいデザインになります。
* { box-sizing: border-box; margin: 0; } でブラウザのデフォルト余白をリセットします。
min-height: 100vh でページが画面の高さいっぱいになります。
display: flex; flex-direction: column; を body に設定すると、フッターが常に画面下部に配置されます。
flex: 1 を main に設定すると、ヘッダーとフッターの間のスペースを全て使います。
確認: ヘッダーとフッターがダーク背景で表示されていればOKです。
💡 ヒント
📝 模範解答を見る
⚠️ まず自分で考えてから見よう!
* { box-sizing: border-box; margin: 0; }
body {
font-family: sans-serif;
background: #f5f5f5;
color: #333;
min-height: 100vh;
display: flex;
flex-direction: column;
}
header {
background: #2d3748;
color: #fff;
padding: 16px 24px;
text-align: center;
}
header h1 { font-size: 1.3rem; }
footer {
background: #2d3748;
color: #fff;
text-align: center;
padding: 16px;
font-size: 0.85rem;
}プロフィールセクションをデザインしよう
アイコン(丸い枠)、名前、肩書き、自己紹介文にスタイルを当てましょう。
border-radius: 50% で正円を作れます。絵文字をアイコンとして使うと簡単です。
display: flex; justify-content: center; align-items: center; で絵文字を丸の中央に配置します。
💡 ポイント: width と height を同じ値にしないと正円になりません。
色は background: #4299e1 で青にしていますが、好きな色に変えてOKです。
margin: 0 auto 16px で丸を中央寄せし、下に16pxの余白を入れています。
確認: 丸いアイコンの中に絵文字が中央に表示されていればOKです。
💡 ヒント
📝 模範解答を見る
⚠️ まず自分で考えてから見よう!
.profile { text-align: center; min-width: 250px; }
.avatar {
width: 120px;
height: 120px;
border-radius: 50%;
background: #4299e1;
color: #fff;
font-size: 3rem;
display: flex;
justify-content: center;
align-items: center;
margin: 0 auto 16px;
}
.profile h2 { font-size: 1.5rem; margin-bottom: 4px; }
.role { color: #888; font-size: 0.9rem; margin-bottom: 12px; }
.bio { color: #555; line-height: 1.6; font-size: 0.95rem; }Flexboxで横並びレイアウトにしよう
.content に Flexbox を設定して、プロフィール(左)とスキル一覧(右)を横並びにしましょう。
max-width と margin: 0 auto で中央寄せにすると見やすくなります。
padding: 32px 24px で上下32px、左右24pxの余白を設定します。
中間確認: ブラウザで開いて、プロフィールとスキルが横並びになっていることを確認しましょう。
flex: 1 を .skills に設定すると、残りのスペースを全て使って広がります。
gap: 32px でプロフィールとスキルの間に余白ができます。
💡 ポイント: max-width: 900px で広い画面でも横に広がりすぎないようにしています。
💡 ヒント
📝 模範解答を見る
⚠️ まず自分で考えてから見よう!
.content { display: flex; gap: 32px; max-width: 900px; margin: 0 auto; padding: 32px 24px; flex: 1; }スキルカードをデザインしよう
スキル一覧をカード風にデザインし、レベルバーをCSSで表現しましょう。
スキルバーの仕組み:
外側のバー(.skill-bar、灰色)の中に内側のバー(.skill-fill、グラデーション)を入れます。
内側バーの width をインラインスタイルで指定してレベルを表現します。
例: width: 80% = 80%習得、width: 30% = 30%習得
HTML側: <div class="skill-fill" style="width:80%"></div>
overflow: hidden で内側バーが外側からはみ出さないようにします。
border-radius: 8px でバーの端を丸くすると見た目が良くなります。
linear-gradient(90deg, #4299e1, #667eea) で左から右へのグラデーションを作っています。
確認: 各スキルのバーが異なる長さで表示されていればOKです。
📝 模範解答を見る
⚠️ まず自分で考えてから見よう!
.skills {
flex: 1;
background: #fff;
border-radius: 12px;
padding: 24px;
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}
.skills h2 { font-size: 1.2rem; margin-bottom: 20px; }
.skill { margin-bottom: 16px; }
.skill-name { font-size: 0.9rem; font-weight: bold; display: block; margin-bottom: 6px; }
.skill-bar { background: #e2e8f0; border-radius: 8px; height: 12px; overflow: hidden; }
.skill-fill {
background: linear-gradient(90deg, #4299e1, #667eea);
height: 100%;
border-radius: 8px;
}メディアクエリでスマホ対応しよう
768px以下の画面幅で、横並びを縦並びに切り替えましょう。
@media の構文:
@media (条件) { CSSルール } の形で書きます。
条件を満たすときだけ中のCSSが適用されます。
max-width: 768px は「画面幅が768px以下のとき」という意味です。
flex-direction: column で横並びを縦並びに切り替えます。
.profile { min-width: auto } で幅の制限を解除します。
アバターも width: 80px; height: 80px に小さくして、スマホ画面に合わせます。
開発者ツールのスマホ表示モード(F12 → スマホアイコン)で確認できます。
アイコンサイズや余白も調整して完成です!🎉
発展課題:
・ダークモード対応(prefers-color-scheme: dark)
・スキルを増やす
・SNSリンクを追加する
・バーにアニメーションをつける
💡 ヒント
📝 模範解答を見る
⚠️ まず自分で考えてから見よう!
@media (max-width: 768px) {
.content { flex-direction: column; padding: 24px 16px; }
.profile { min-width: auto; }
.avatar { width: 80px; height: 80px; font-size: 2rem; }
}📚 使う技術を学ぶ
⚠️ つまずいたら
- スマホで表示が小さい — viewport meta タグがない
- エラーメッセージの読み方