へっぽこコーダーの備忘録

phpやらjavascriptやら、使った技術をすぐに忘れちゃうから、おぼえがき程度に書いていきまーす
2020.06.08

【CSSでスマホ時のみ改行】レスポンシブでの改行位置を切り分けよう

PCでキレイにデザインを整えたのに、スマホで見たら変なところで改行してしまっている。
こんな時、簡単にPCとスマホでの改行位置を切り分ける方法です。

HTML・CSSの設定

HTML

この文末に改行が欲しい。<br />改行できたよ。
スマホではこの文末に改行が欲しい。<br class="sp" />スマホの時だけ改行できたよ。
さらにPC表示でのみこの文末に改行が欲しい。<br class="pc" />PCの時だけ改行できたよ。

CSS

@media screen and (max-width:640px) {
	.pc {
		display: none;
	}
}
@media screen and (min-width:641px) {
	.sp {
		display: none;
	}
}

このCSSをコピーすればOKです。(メディアクエリの幅は任意で変更してください。)

この例だと、スマホ表示で改行したい場所に

<br class="sp" />

を加えるだけでOKです。

また、PC表示で改行したい場所には

<br class="pc" />

を加えるだけでOKです。

コードの説明

この方法は、CSSにメディアクエリを設定し、そこにスマホ、PC時に使用するクラスを設定するだけなので簡単ですね。

書いてる内容としては、

  • ・スマホ表示の場合は『.pc』を表示しない。
  • ・PC表示の場合は『.sp』を表示しない。

という内容になっています。

ここで注意したいのは、スマホ用のクラスはPC幅のメディアクエリに、PC用のクラスはスマホ幅のメディアクエリに設定している点です。

@media screen and (max-width:640px) {
	.pc {
		display: none;
	}
}
@media screen and (min-width:641px) {
	.sp {
		display: none;
	}
}

この理由は、次項で説明します。

改行以外にもつかえるよ

このクラスはとても便利で、改行以外にも使用することができます。

たとえば、

この文章は<span class="pc">PC</span><span class="sp">スマホ</span>用だよ

としてやれば、PC・スマホ表示で、テキストを切り替えることができます。

このクラスを設定しておいてやるだけで、どんな要素でもPC・スマホ表示を柔軟に切り替えることができるのです。

筆者もこの方法を取り入れてから、細かい表示の切り分けが、とてもスムーズに行えるようになりました。

ここで、前項での『スマホ用のクラスはPC幅のメディアクエリに、PC用のクラスはスマホ幅のメディアクエリに設定している』理由がわかってくるかと思います。

このクラスは、block要素だけでなくinline要素でも使用することができます。

ただ、以下のように、設定するメディアクエリを逆に書くと、inline要素であってもblock要素として表示されるため、表示に崩れが発生する可能性があるのです。

@media screen and (max-width:640px) {
	.sp {
		display: block;
	}
	.pc {
		display: none;
	}
}
@media screen and (min-width:641px) {
	.sp {
		display: none;
	}
	.pc {
		display: block;
	}
}

そのため、筆者は、使用しない場合は非表示にするという書き方を勧めています。

改行以外にもスマホテキストを整える見せ方

スマホ表示を改行で整えても、デザインが整わない場合があります。

そんな時の筆者の対応方法を参考までに。

■HTML

<p class="spCenter">スマホの時だけ改行するようにしてみたものの、<br class="sp" />左詰めのテキストだと、<br class="sp" />右の方に余白が空いてしまって<br class="sp" />見栄えが悪いよ。</p>

■CSS

@media screen and (max-width:640px) {
	.spCenter {
		text-align: center;
	}
}

スマホ表示では、改行が増えるとデバイスの幅によって右余白が広く空いてしまい、整って見えない場合があります。

そんな時は、テキストを中央揃えにしてやると、案外キレイに見える場合があります。

参考になれば幸いです。