PCでは表示するけど、SP(スマホ)では表示しないみたいな出し分けをしたい
2025.03.23
PCとSPでコンテンツを出し分けたいときの方法
Webサイトのデザインでは、PCとスマートフォン(SP)で異なるナビゲーションバーやコンテンツを表示したい場合があります。この記事では、HTMLとCSSを使ってその方法を解説します。
コンテンツの出し分け
PCとSPでコンテンツを切り替えるには、以下のコードを参考にしてください。
<div class="sp-only">
SPの時に表示したいコンテンツ
</div>
<div class="pc-only">
PCの時に表示したいコンテンツ
</div>/* PC用のコンテンツはdisplay: noneで隠しておきます */
.pc-only {
display: none;
}
@media screen and (min-width: 768px) { /* メディアクエリは作成しているサイトのものを使ってください */
/* PC用のコンテンツをdisplay: blockで表示し、SP用を逆に隠します */
.sp-only {
display: none;
}
.pc-only {
display: block;
}
}注意点
- 多用しない:表示されていないコンテンツが存在することになるため、使いすぎには注意しましょう。
- 情報の独占禁止:この手法を使って、PC(あるいはSP)でしか見られない重要な情報を配置するのは避けましょう。すべてのユーザーが等しく情報にアクセスできるようにすることが大切です。
画像を出し分けたい
PCとSPで表示する画像の大きさを変えたいときなどは、下記のように<picture>要素を使いましょう。
まず、前提として、SP用とPC用の画像をそれぞれ用意してください。
<picture>要素の中に<source>要素を置きます。<source>要素のmedia属性はCSSのメディアクエリと同じ役割です。srcset属性では、<img>要素のsrc属性と同じように画像を指定します。
↓では横幅768px以上でPC用の画像が表示されるような設定になっています(<source>要素を複数使えば、さらに画像を切り替えられます)。<img>要素を使って横幅768px未満の時に表示されるSP用画像を指定します。
<picture>
<source media="(min-width: 768px)" srcset="images/image.jpg"> <!-- PC用の画像 -->
<img src="images/image-sp.jpg" alt="Altテキストを書きます"> <!-- SP用の画像 -->
</picture>ポイント
- alt属性には画像の代替テキストを記述し、アクセシビリティの向上に努めましょう。
この方法を活用することで、デバイスごとに最適なレイアウトや画像を効率的に管理できます。