S03:スマホサイトのCSS対応
スマホサイトの基本は段組みなしのレイアウト
スマホサイトは画面幅が狭いため、基本的に段組みなしのレイアウトにします。
CSS対応
「display: flex;」で段組みレイアウトしている要素には「flex-direction: column;」を指定して段組みを解除する。
セレクタ { display: flex; flex-direction: column; }
「float: left;」や「float: right;」を使用して画像の回り込みをしている要素は「float: none;」で回り込みを解除する。
セレクタ { float: none; }
スマホサイトは横スクロールバーを表示させない
スマホサイトは横スクロールバーを表示させず、常に縦スクロールのみでコンテンツを表示します。
CSS対応
「width: 960px;」のように幅を数値で指定している要素は「width: auto;」で横スクロールがでない幅に自動計算させる。
セレクタ { width: auto; }
主にbody要素に指定している「min-width: 960px;」のような最小幅指定は「min-width: 0;」で最小幅を解除する。
「min-width: auto;」ではないので注意!※iPhoneで最小幅が解除されない
セレクタ { min-width: 0; }
左右マージンを指定していると横スクロールが表示される原因になるのでなるべく使用しない。
セレクタ { margin-left: 0; margin-right: 0; }
半角英数字のみのURLが改行されないので「word-break: break-all;」で強制改行させる。
a や .url { word-break: break-all; }
テーブルのように横幅があるコンテンツはテーブルのみ横スクロールさせる。
テーブルをdivで囲って「overflow: auto;」
テーブルを囲ったdivのセレクタ { overflow: auto; }
どうしてもはみ出してしまう要素も「overflow: auto;」ではみ出し部分をスクロールさせる。
セレクタ { overflow: auto; }
「PCのみ表示」と「スマホのみ表示」を使い分ける
要素を非表示にする「display: none;」とブロック表示する「display: block;」を使用して「PCのみ表示」と「スマホのみ表示」を使い分けます。
以下のCSSを記述することで、
クラス名「pc」をつけた要素はPC画面幅の時のみ表示されスマホ画面幅では非表示になります。
クラス名「sp」をつけた要素はスマホ画面幅の時のみ表示されPC画面幅では非表示になります。
HTML
<div class="pc">PC表示のみ</div> <div class="sp">スマホ表示のみ</div>
PC表示用CSS内に記述
.pc { display: block; } .sp { display: none; }
スマホ表示用CSS内に記述
.pc { display: none; } .sp { display: block; }
PCファーストのスマホ対応手順
1.head内にviewportのmetaタグ追加
<meta name="viewport" content="width=device-width,initial-scale=1">
2.スマホ用メディアクエリをCSS末尾に追加
/*--------------------------------- スマホのみデザイン ---------------------------------*/ @media screen and (max-width:480px) { }
3.@media内でPC用ヘッダーを「display: none;」で非表示
4.「display: flex;」を抽出
5.「4」で抽出した「display: flex;」を「@media内」にコピペして
「flex-direction: column;」を指定
6.「float: left;」「float: right;」を抽出
7.「6」で抽出した「float」を「@media内」にコピペして「float: none;」を指定
8.「width」を抽出
9.「8」で抽出した「width」を「@media内」にコピペして「width: auto;」を指定
10.「min-width」を抽出
11.「10」で抽出した「min-width」を「@media内」にコピペして「min-width: 0;」を指定
12.検証ツールではみ出ている要素を抽出
13.「12」で抽出した要素セレクタを「@media内」にコピペして
「overflow: auto;」を指定
※テーブルのみ親要素に「overflow: auto;」を指定
14.最後にスマホ用のデザインを@media内に記述して終了