CSSのwidthとheightの基本!初心者でもわかる単位の使い分け
生徒
「先生、CSSで画像やボックスの大きさを決める方法はありますか?」
先生
「あります。CSSではwidthとheightを使うことで、横幅と高さを簡単に設定できます。」
生徒
「単位ってpxや%がありますけど、どう使い分ければいいんですか?」
先生
「それでは、基本から単位の違いと使い方を丁寧に見ていきましょう!」
1. widthとheightとは?
CSSのwidthは要素の横幅、heightは縦の高さを指定するプロパティです。これを使うことで、画像、ボタン、divなどの大きさを自由に調整できます。widthとheightを指定しない場合、要素は内容に合わせて自動的に大きさが決まります。
2. 単位の種類と基本的な使い方
CSSで大きさを指定するときに使う主な単位はpx、%、em、remなどがあります。
- px(ピクセル):画面上の点の数を指定。固定サイズに便利。例:width:200px;
- %(パーセント):親要素に対する割合で指定。画面幅に応じて大きさを変えたい場合に便利。例:width:50%;
- em:要素のフォントサイズに応じた相対単位。文字サイズに連動させたいときに使います。
- rem:ルート要素のフォントサイズに基づく相対単位。emより予測しやすくレスポンシブ対応に向いています。
3. widthとheightの基本指定例
<style>
.box-px {
width: 200px;
height: 100px;
background-color: lightblue;
}
.box-percent {
width: 50%;
height: 150px;
background-color: lightgreen;
}
</style>
<div class="box-px">固定サイズのボックス</div>
<div class="box-percent">親幅の半分のボックス</div>
ブラウザ表示
4. pxと%の使い分けのコツ
画面サイズに応じて大きさを変えたい場合は%、固定したい場合はpxを使います。例えば、画像の表示領域を画面いっぱいに広げたいときはwidth:100%を使います。一方、ロゴなど正確なサイズを維持したい場合はpx指定が便利です。
5. 高さの自動調整とaspect-ratio
heightを指定せずにwidthだけを決めると、画像や要素の縦横比を自動で維持できます。近年はaspect-ratioを使うと、ボックスの縦横比を保ちながらサイズ調整が可能です。
<style>
.image-box {
width: 300px;
aspect-ratio: 16/9;
background-color: lightcoral;
}
</style>
<div class="image-box">16:9のボックス</div>
ブラウザ表示
6. 高さ指定の注意点
要素の内容が増える場合、高さを固定すると内容がはみ出すことがあります。特にテキストが入るボックスでは、heightをautoにすることで自然に高さが広がります。flexboxやgridレイアウトと組み合わせるとより柔軟にデザインできます。
7. 初心者でも失敗しにくい単位の選び方
- ロゴやボタンなど正確なサイズを維持したい場合はpx
- 画面に応じて幅を変えたい場合は%やvw(viewport width)
- 文字サイズに連動させたい場合はemやrem
- 縦横比を保ちたい場合はaspect-ratioと組み合わせて高さを調整
8. 実践のポイント
CSSでwidthとheightを使うときは、まず固定サイズで試してみて、次にパーセントや相対単位に置き換えるとレスポンシブデザインに対応しやすくなります。また、heightは必要な場合のみ指定し、autoで自然な高さ調整を活用するとレイアウトが崩れにくくなります。
まとめ
ウェブデザインの基礎となる「width」と「height」の使い方について、その役割から応用的なテクニックまで幅広く解説してきました。要素のサイズ指定は、単に数値を入力するだけでなく、デバイスの画面サイズやユーザーの閲覧環境に合わせて柔軟に変化させることが、現代のレスポンシブなウェブ制作において極めて重要です。特に「px」と「%」の使い分け、さらには「rem」や「vh/vw」といった現代的な単位を適切に選択することで、レイアウトの崩れを防ぎ、メンテナンス性の高いコーディングが可能になります。
レスポンシブデザインにおける幅と高さの戦略
以前は固定幅での設計が主流でしたが、スマートフォンやタブレットの普及により、可変的なサイズ指定が求められるようになりました。例えば、メインのコンテンツエリアには「max-width」を設定してPCでの広がりすぎを抑えつつ、モバイル端末では「width: 100%;」で画面いっぱいに表示させるといった工夫が一般的です。高さについては、できるだけブラウザの自動計算(height: auto;)に任せることで、文字数が増えた際の内容の突き抜けを回避できます。
画像とアスペクト比の重要性
画像の表示においても、widthとheightの概念は欠かせません。画像の歪みを防ぐためには、どちらか一方を固定し、もう一方をautoにする、あるいは「object-fit」プロパティを併用してボックス内での収まり方を制御します。近年登場した「aspect-ratio」は、動画コンテンツやカード型のレイアウトを作成する際に、特定の比率を維持したままリサイズできるため、非常に重宝するツールとなっています。
さらに理解を深めるための実践サンプル
ここでは、学んだ内容を活かして、レスポンシブなカードレイアウトのサンプルコードを作成してみましょう。固定サイズと可変サイズを組み合わせることで、どのように表示が変化するかを確認してください。
<style>
.container {
display: flex;
gap: 20px;
padding: 20px;
background-color: #f8f9fa;
}
.card-item {
width: 300px;
background-color: #ffffff;
border: 1px solid #ddd;
border-radius: 8px;
overflow: hidden;
}
.card-image {
width: 100%;
height: 150px;
object-fit: cover;
background-color: #eee;
}
.card-content {
padding: 15px;
}
.card-content h3 {
margin: 0 0 10px 0;
font-size: 1.2rem;
}
.card-content p {
font-size: 0.9rem;
color: #666;
height: auto;
}
.responsive-box {
width: 80%;
margin: 20px auto;
background-color: #e9ecef;
padding: 20px;
text-align: center;
border-radius: 10px;
}
</style>
<div class="container">
<div class="card-item">
<img src="/img/sample150-100.jpg" alt="サンプル画像" class="card-image">
<div class="card-content">
<h3>固定幅のカード</h3>
<p>widthを300pxに固定しています。PCで見ると安定したサイズになります。</p>
</div>
</div>
</div>
<div class="responsive-box">
<h3>可変幅のボックス</h3>
<p>widthを80%に設定しています。画面の幅を変えると、このボックスの横幅も一緒に伸び縮みします。</p>
</div>
ブラウザ表示
今後の学習ステップ
widthやheightの基本をマスターしたら、次は「min-width」や「max-height」といった、制限を加えるプロパティを学んでみましょう。これらを使えるようになると、「最小でもこれくらいの大きさは保ちたい」「最大でもここまでしか広げたくない」という細かな制御が可能になります。また、FlexboxやGrid Layoutといった最新のレイアウト手法と組み合わせることで、より高度で美しいウェブサイトを構築できるようになります。
生徒
先生、ありがとうございました!widthとheightの使い分けがかなりクリアになりました。pxでガッチリ固めるだけじゃなくて、%やautoを使いこなすのがコツなんですね。
先生
その通りです!特に「高さ(height)」については、初心者のうちは固定してしまいがちですが、中身のテキストが増えても大丈夫なように「auto」や「min-height」を使いこなせるようになると、プロの書き方に一歩近づきますよ。
生徒
確かに、さっきのサンプルコードでも、カードの中の文字が増えたら勝手に枠が伸びてくれました。もしこれをheight: 100pxとかで固定してたら、文字がはみ出して大変なことになっていましたね……。
先生
そうなんです。ウェブサイトは見る人の環境によってフォントサイズが変わることもあるので、柔軟性を持たせることが大切です。あとは、aspect-ratioも便利でしょう?
生徒
はい!画像を入れなくてもボックスの比率を保てるのがすごく便利だと思いました。スマホ表示の時に画像を正方形で見せたい時とかに使えそうです。
先生
いいところに気づきましたね。デザインの意図に合わせて単位を選べるようになれば、どんなデバイスでも美しく見えるサイトが作れるようになります。次はぜひ、max-widthを使って「スマホでは全幅、PCでは中央寄せ」というレイアウトにも挑戦してみてください!
生徒
分かりました!さっそく自分のコードでも試してみます。ありがとうございました!
【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー
「魅せる力」をコードで実現。CSS3でモダンWebデザインのプロトタイピングを。
本講座では、単に色を変えるだけではなく、「ユーザーを迷わせないUIデザイン」と「崩れないレイアウト設計」の本質を学びます。最新のCSS3とモダンなレイアウト手法を通じて、プロの現場で通用する「美しさと機能性を両立した実装力」を最短距離で習得します。
具体的なワークショップ内容と環境
【つくるもの】
HTMLで作成した骨組みに対し、商用サイトでも採用される「スタイリッシュなカード型UI」や「レスポンシブなナビゲーション」を構築します。色の選定基準や余白(ホワイトスペース)の黄金比など、デザインの理論をコードに落とし込む工程を体験してください。
【開発環境】
フロントエンド開発の標準であるVisual Studio Code (VS Code)を継続使用。CSSの記述を効率化するプラグインや、ブラウザのデベロッパーツール(検証機能)を駆使して、リアルタイムでデザインを微調整するプロのワークフローを再現します。
この60分で得られる3つの技術資産
要素の横並びや中央揃えを自由自在に操り、どんなデバイスでも崩れないレスポンシブな配置術を完全理解します。
後から修正しやすい「壊れにくいコード」の書き方を伝授。プロの現場で必須となる命名規則の考え方を学びます。
画像の最適化や軽量な装飾技法など、ページの表示速度を落とさずに高級感のある演出を行うテクニックを習得します。
※本講座は、HTMLの基礎を終えた後のステップアップ講座です。Webデザイナー、UIデザイナー、フロントエンドエンジニアへの道を切り開く「魅せる技術」を、モクモク独自のパーソナル指導で着実に定着させます。
リラックスしながら、学ぶことが大切です。しっかりと基礎を理解しましょう!
各回少人数・マンツーマン形式で徹底サポート
このセミナーの詳細・お申し込みはこちら