当サイトは、アフィリエイト広告を利用しています
最近ではPCよりもスマホでホームページを見ることが多くなってきている。
googleアナリティクスを見ると、当ブログの観覧車は90%以上はデスクトップから
なのだが、スマホでもちゃんと表示できるように対応した。
※まだちゃんとできていないところはあるかも...
ホームページが開かれている端末によって表示を変更するにはライブラリの
を使うことで対応したのでその使い方をメモっておく。
react-device-detectはUserAgentが何かを判定してくれる
メソッドを持っているライブラリ。
具体的には下記のような関数が用意されている
ブラウザの種類でも判定できる。 詳しくはreact-device-detect参照
react-device-detectをインストールする
yarn add react-device-detect
npmの場合は
npm install react-device-detect --save
isMobileを使ってモバイル判定をしてみる
/** @jsxImportSource @emotion/react */import { css } from "@emotion/react";import { isMobile } from "react-device-detect";export const StrStyle = () => [css`color: red;`];export default function App() {return (<div>{/* mobileの場合は赤になる */}<div css={[isMobile && StrStyle]}><h1>Mobile</h1></div>{/* mobile以外は赤になる */}<div css={[isMobile || StrStyle]}><h1>Not Mobile</h1></div></div>);}
サンプルを作ったので載せます!
スマホで見てる場合は上が赤色。スマホ以外で見てる場合は
下が赤になっています
Emotionの使い方については下記記事で紹介しています。
MobileViewを使えばモバイルから表示する時のみ
ビューを表示させることができる。
/** @jsxImportSource @emotion/react */import { BrowserView, MobileView } from "react-device-detect";export default function App() {return (<div>{/* mobileの時のみ表示 */}<MobileView><h1>Mobile</h1></MobileView>{/* browserの時のみは赤になる */}<BrowserView><h1>browser</h1></BrowserView></div>);}
サンプル載せときます!
Mobileはスマホから表示時、browserはブラウザから表示しか表示されないようになります
UserAgentの判定は自分で実装しようとすると結構つらいので
react-device-detectを使うのがよさそう。
また別の方法としてはEmotionのメディアクエリー(@media)を
を使って画面のwidthのサイズで判定する方法もある。