理想のサイトをカスタマイズ構築
面倒な基本構造やレスポンシブ対応はテーマに任せ、浮いた時間で「あなたにしかできないこだわりの独自カスタマイズ」をとことん追求してみませんか?
「SWELL」の徹底レビュー・詳細を見る
面倒な基本構造やレスポンシブ対応はテーマに任せ、浮いた時間で「あなたにしかできないこだわりの独自カスタマイズ」をとことん追求してみませんか?
「SWELL」の徹底レビュー・詳細を見るレスポンシブデザイン(様々なデバイスの画面サイズに柔軟な対応を実施するWebデザインのこと)を実現するには、min-widthとmax-widthが重要になります。
本記事では、min-width(最小幅)とmax-width(最大幅)の使い方を解説します。
また、CSSに関するカテゴリーページから学びたい内容を決めたい人は、以下のCSSページをご確認ください。
さらに、width(横幅)とheight(高さ)の基本的な学習を進めたい人は「【html&css】width(横幅)とheight(高さ)の指定とボックスモデル」を一読ください。
レスポンシブ対応や基本レイアウトは最高峰テーマに任せませんか?浮いた時間で、流麗なアニメーションや標準設定を上書きする「あなただけの高度なビジュアル表現」をとことん突き詰めましょう。
「SWELL」であなたのデザインの限界を超えるmin-widthは、HTML要素の「最小幅(絶対に縮まらない限界サイズ)」を指定するCSSプロパティです。
min-widthを設定しておくと、「画面が狭くしてもこのサイズより小さくならない」といったストッパーの役割を果たします。
min-widthの基本的な書き方min-widthの使い方min-widthの注意点@media screen and (min-width: ○○px) { ~ }セレクタ { min-width: 値&単位; }
min-widthプロパティは値と単位を指定します。
以下は、min-widthプロパティでよく利用される単位になります。
| 単位 | 例 | 説明 |
|---|---|---|
| px(ピクセル) | min-width: 300px; | 300px以下に縮まない。 最もよく使われる。 |
| %(パーセント) | min-width: 50%; | 親要素の幅の50%以下に縮まない。 |
| vw(ビューポート幅) | min-width: 50vw; | 画面幅の50%以下に縮まない。 |
CSSの挙動は、理解するために体感するのが一番なので以下の表示から直感的に体験してみましょう。
▼ この点線枠の【右下】をドラッグして、幅を狭くしてみてください ▼
<div class="resizable-wrapper">
<p class="instruction">▼ この点線枠の【右下】をドラッグして、幅を狭くしてみてください ▼</p>
<div class="box">
この箱は通常「点線枠の100%」の幅ですが、<br>
<strong>「min-width: 300px;」</strong>があるため、<br>
300pxのラインで縮むのをピタッとやめます!
</div>
</div>.resizable-wrapper {
resize: horizontal; /* 横方向にだけリサイズ可能にする */
overflow: auto; /* resizeを有効にするために必須 */
/* 見た目の設定 */
width: 100%;
border: 2px dashed #999;
padding: 20px;
background-color: #f9f9f9;
box-sizing: border-box;
}
.instruction {
font-size: 14px;
color: #333;
font-weight: bold;
text-align: center;
margin-bottom: 15px;
}
.box {
/* 基本の幅:親(点線枠)の100%に合わせて伸び縮みする */
width: 100%;
/* ★最大のポイント:どれだけ親が狭くなっても300pxは死守する */
min-width: 300px;
/* 見た目の設定 */
background-color: #e0f2f1;
padding: 20px;
border: 2px solid #009688;
box-sizing: border-box;
text-align: center;
}途中から緑の箱が画面から切れてしまうのが分かるかと思います。
実際のWeb制作の現場は、以下の場面で利用します。
いわゆるレスポンシブ対応を施す際の重要なCSSプロパティの一つがmin-widthになります。
min-widthプロパティは便利ですが、使う際に気をつけたい点があります。
min-width(例:min-width: 500px;)を指定すると、画面に収まらずスマホで見た時に横スクロールバーが発生します。widthやmax-widthとの強弱関係width: 200px;とmin-width: 300px;を指定した場合、min-widthが優先されて実際の幅は300pxになります。max-widthと競合した場合も、CSSのルール上はmin-widthが最優先で扱われることを覚えておくとバグを防げます。@media screen and (min-width: ○○px) { ~ }
or
@media (min-width: ○○px) { ~ }
主流は、省略して@media (min-width: ○○px) { ~ }と書くことも多いです。
スマホやPCに対応させる「レスポンシブデザイン」の心臓部とも言える技術になります。
これは「もし画面(ブラウザ)の幅が○○px以上だったら、この中のCSSを発動させる」という条件分岐です。(メディアクエリと呼ばれます。)
@media | ブラウザのウィンドウ画面の幅を監視する仕組み |
screen | 画面(モニターやスマホ)で見てる人に実施する条件 |
(min-width: 600px) | 画面幅が最低でも600px(=600px以上)時に適用する |
主に「スマホ用デザインをPC用デザインに切り替える時」に使われます。(モバイルファーストと呼びます。)
以下は、min-widthがどんな場面で利用されるかを記載しています。
ここでは、レスポンシブ対応で利用するmin-widthを直感的に理解するサンプルコードを以下に記載しています。
▼ この点線枠の【右下】をドラッグして、幅を「広く」してみてください ▼
<div class="resizable-wrapper">
<p class="instruction">▼ この点線枠の【右下】をドラッグして、幅を「広く」してみてください ▼</p>
<div class="card">
<div class="card-icon"></div>
<div class="card-text">
<strong>現在の状態</strong><br>
箱の幅が狭い時は、スマホ用の「縦並び&赤色」のデザインです。
</div>
</div>
</div>.resizable-wrapper {
resize: horizontal;
overflow: auto;
container-type: inline-size;
width: 280px; /* 最初はスマホサイズの狭い幅 */
border: 2px dashed #999;
padding: 20px;
background-color: #f9f9f9;
box-sizing: border-box;
}
.card {
background-color: #ffebee;
border: 2px solid #f44336;
padding: 15px;
border-radius: 8px;
text-align: center;
/* 最初は縦に並ぶ */
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
}
.card-icon { font-size: 40px; }
.card-icon::before {
content: "📱";
font-size: 40px;
}
.card-text { font-size: 14px; }
/* =======================================
幅が広がった時の条件分岐(ここがメイン!)
======================================= */
/* 枠の幅が「450px以上」になったら、この中身が発動(上書き)される! */
@container (min-width: 450px) {
.card {
background-color: #e8f5e9;
border-color: #4caf50;
/* 縦並びから「横並び」に変化 */
flex-direction: row;
text-align: left;
}
.card-icon::before {
content: "💻"; /* 450pxを超えたら、PC用アイコンに上書き */
font-size: 60px;
}
.card-text {
font-size: 16px; /* 文字を少し大きくする */
}
/* スマホ用だったテキストをPC用に書き換える(疑似表現) */
.card-text strong::after { content: "(PCモード発動!)"; color: #4caf50; }
}メディアクエリを利用するとウィンドウ幅に依存するため、ここでは体験用としてコンテナクエリを利用しています。
「指定サイズを境目にデザインを切り替える」といった境界線を、Web用語でブレイクポイントと呼びます。
レスポンシブ対応で多用するメディアクエリの使い方を詳しく知りたい人は「【CSS】メディアクエリの書き方:レスポンシブ対応・ブレイクポイント・複数指定・効かない対策」を一読ください。
max-widthは、HTML要素の「最大幅(絶対に広がらない限界サイズ)」を指定するCSSプロパティです。
max-widthを設定しておくと、「画面が大きくなってもこのサイズでストップする」といった上限におけるストッパーの役割を果たします。
max-widthの基本的な書き方max-widthの使い方max-widthの注意点@media screen and (max-width: ○○px) { ~ }セレクタ { max-width: 値&単位; }
max-widthプロパティは値と単位を指定します。
以下は、max-widthプロパティでよく利用される単位になります。
| 単位 | 例 | 説明 |
|---|---|---|
| px(ピクセル) | min-width: 1000px; | 1000px以上に広がらない。 |
| %(パーセント) | min-width: 100%; | 親要素の幅を絶対に超えない。 ※画像によく使われます |
こちらもmin-widthと同じく、挙動を理解するために体感するのが一番なので以下の表示から直感的に体験してみましょう。
▼ この点線枠の【右下】をドラッグして、幅を「広く」してみてください ▼
<div class="resizable-wrapper">
<p class="instruction">▼ この点線枠の【右下】をドラッグして、幅を「広く」してみてください ▼</p>
<div class="box">
この箱は通常「点線枠の100%」の幅で広がりますが、<br>
<strong>「max-width: 400px;」</strong>があるため、<br>
400pxに到達すると、それ以上は広がりません!
</div>
</div>.resizable-wrapper {
resize: horizontal;
overflow: auto;
/* 最初は狭くしておく */
width: 250px;
max-width: none;
border: 2px dashed #999;
padding: 20px;
background-color: #f9f9f9;
box-sizing: border-box;
}
.instruction {
font-size: 14px;
color: #333;
font-weight: bold;
text-align: center;
margin-bottom: 15px;
}
.box {
/* 基本の幅:親(点線枠)の100%に合わせて広がる */
width: 100%;
/* ★最大のポイント:どれだけ親が広くなっても400pxでストップ! */
max-width: 400px;
margin: 0 auto;
/* 見た目の設定 */
background-color: #fff3e0;
padding: 20px;
border: 2px solid #ff9800;
box-sizing: border-box;
text-align: center;
}途中からオレンジの箱が一定の大きさで留まっていることが分かると思います。
実際のWeb制作の現場は、以下の場面で利用します。
max-width: 1000px;とmargin: 0 auto;を設定して作られています。max-width: 100%;を指定しておくのが鉄則です。max-width: 800px;など設定し、長くなるのを防ぎます。こちらもレスポンシブ対応を施す際の重要なCSSプロパティの一つがmax-widthになります。
max-widthプロパティを多用する際、使う場面で気をつけたい点があります。
widthと同時指定した時の優先順位width: 800px;とmax-width: 500px;が同時指定された場合、ストッパーであるmax-widthが優先され、実際の幅は500pxになります。min-widthと競合した場合300px(max-width: 300px)」と「最小500px(min-width: 500px)」といった矛盾した指定をした場合、CSSのルールではmin-widthが優先されます。500pxの幅になります。<a>タグや<span>タグといったインライン要素は、そのままではmax-widthが効きません。display: block;やdisplay: inline-block;を追加し、ブロック要素にする必要があります。@media screen and (max-width: ○○px) { ~ }
or
@media (max-width: ○○px) { ~ }
こちらも主流は、省略して@media (max-width: ○○px) { ~ }と書くことが多いです。
こちらもスマホやPCに対応させる「レスポンシブデザイン」で重要な技術になります。
これは「もし画面幅(ブラウザ)が、○○px以下だったら、この中のCSSを発動させる」といった条件分岐です。
@media | ブラウザのウィンドウ画面の幅を監視する仕組み |
screen | 画面(モニターやスマホ)で見てる人に実施する条件 |
(max-width: 800px) | 画面幅が最大でも800px(=800px以下)時に適用する |
主に「PC用デザインをスマホ用デザインに切り替える時」に使われます。(デスクトップファーストと呼びます。)
min-widthが「スマホ基準で作り、PC向けに広げていく(モバイルファースト)」のに対し、max-widthは「PCの画面を基準に作り、スマホ向けに縮めていく(デスクトップファースト)」といった手法で使います。
以下は、max-widthがどんな場面で利用されるかを記載しています。
max-width: 768px以下)になったら縦1列に並べ直す。paddingやmargin)をスマホの画面に合わせて狭くする。display: none;を使って隠す。ここでは、レスポンシブ対応で利用するmax-widthを直感的に理解するサンプルコードを以下に記載しています。
▼ この点線枠の【右下】をドラッグして、幅を「狭く」してみてください ▼
<div class="resizable-wrapper">
<p class="instruction">▼ この点線枠の【右下】をドラッグして、幅を「狭く」してみてください ▼</p>
<div class="card">
<div class="card-icon"></div>
<div class="card-text">
<strong>現在の状態</strong><br>
箱の幅が広い時は、PC用の「横並び&青色」のデザインです。
</div>
</div>
</div>.resizable-wrapper {
resize: horizontal;
overflow: auto;
container-type: inline-size;
/* 今回は最初からPCサイズ(広く)にしておく */
width: 600px;
border: 2px dashed #999;
padding: 20px;
background-color: #f9f9f9;
box-sizing: border-box;
}
.instruction {
font-size: 14px;
color: #333;
font-weight: bold;
text-align: center;
margin-bottom: 15px;
}
.card {
background-color: #e3f2fd;
border: 2px solid #2196f3;
padding: 20px;
border-radius: 8px;
/* PC向けなので、最初は「横並び」にしておく */
display: flex;
flex-direction: row;
align-items: center;
gap: 20px;
}
.card-icon::before {
content: "💻"; /* PCアイコン */
font-size: 60px;
}
.card-text { font-size: 16px; }
/* =======================================
幅が狭くなった時の条件分岐(ここがメイン!)
======================================= */
/* 枠の幅が「499px以下」に縮んだら、この中身が発動(上書き)される! */
@container (max-width: 499px) {
.card {
background-color: #fff3e0;
border-color: #ff9800;
/* 横並びから「縦並び」に変化 */
flex-direction: column;
text-align: center;
padding: 15px;
}
.card-icon::before {
content: "📱"; /* スマホアイコンに変化 */
font-size: 40px;
}
.card-text {
font-size: 14px; /* スマホ向けに文字を少し小さくする */
}
/* テキストの書き換え(疑似表現) */
.card-text strong::after { content: "(スマホモード発動!)"; color: #ff9800; display: block; }
}メディアクエリを利用するとウィンドウ幅に依存するため、ここでは体験用としてコンテナクエリを利用しています。
デスクトップファーストでWebデザインを考慮する場合は@media (max-width: ○○px) { ~ }を活用しましょう。
レスポンシブ対応で多用するメディアクエリの使い方を詳しく知りたい人は「【CSS】メディアクエリの書き方:レスポンシブ対応・ブレイクポイント・複数指定・効かない対策」を一読ください。
分かりやすいようにまとめを記載します。
min-widthはHTML要素の「最小幅(絶対に縮まらない限界サイズ)」を指定するmin-width:セレクタ { min-width: 値&単位; }min-width:「スマホ用デザインをPC用デザインに切り替える時」=モバイルファーストmax-widthはHTML要素の「最大幅(絶対に広がらない限界サイズ)」を指定するmax-width:セレクタ { max-width: 値&単位; }max-width:「PC用デザインをスマホ用デザインに切り替える時」=デスクトップファースト面倒な基本構造やレスポンシブ対応はテーマに任せ、浮いた時間で「あなたにしかできないこだわりの独自カスタマイズ」をとことん追求してみませんか?
「SWELL」の徹底レビュー・詳細を見る