Reactでのレスポンシブ対応
Page content
Reactでメディアクエリを設定しレスポンシブ対応。
cssで通常のmedia query
通常レスポンシブ対応は、cssでmediaクエリを設定し、ページ幅に応じて表示するコンテンツを変えることで対応する。
以下の例だと、普段はsmartphone_area
のクラスを持つコンテンツを表示し、pc__area
のクラスを持つコンテンツを非表示とする。
横幅が767px
以上になったら、smartphone_area
のクラスを持つコンテンツを非表示とし、pc__area
のクラスを持つコンテンツを表示する。
.smartphone__area {
display: block;
}
.pc__area {
display: none;
}
@media screen and (min-width: 767px) {
.smartphone_area {
display: none;
}
.pc__area {
display: block;
}
}
これを使って、以下のように書くと、横幅によって一方のdiv
コンテンツだけが表示されるため、幅にあった表示のコンテンツを提供できる。
<div class="smartphone__area">
<SmartPhoneContents />
</div>
<div class="pc__area">
<PCContents />
</div>
Reactでのmedia query
Reactでは、npmのreact-responsive
パッケージを使うことで簡単にレスポンシブの動作を実現できる。
まずpackage-json
のあるディレクトリでreact-responsive
をインストール。
$ npm install react-responsive --save
これでpackage-json
に追加されます。
あとはファイルにimportして、以下のように使うだけ。
import MediaQuery from "react-responsive";
<MediaQuery query="(max-width: 767px)">
<SmartPhoneContents />
</MediaQuery>
<MediaQuery query="(min-width: 767px)">
<PCContents />
</MediaQuery>
実際の動作
プロ野球成績表は、以下のように、スマホから見た場合は、チーム名や選手名で改行して表示するようにしている。