3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【React】styled-componentsにstyled-media-queryを適用する

Posted at

導入

まず、前提としてstyled-componentsをインストールしていることとします。もししていない場合は、下記でインストールしましょう。
yarn
yarn add styled-components

npmを使うなら下記コマンドを実行して、インストールします。

npm
npm install styled-media-query

yarnを使うなら下記コマンドを実行します。

yarn
yarn add styled-media-query

これでインストールは完了です。

実装

実装は下記のようにできます。(公式より引用) styled-componentsで通常通り、backgroud-colorを黒で指定し、styled-media-queryで各画面サイズごとにスタイルをそれぞれ適用しています。
styled-media-query
import styled from "styled-components"; // You need this as well
import media from "styled-media-query";

const Box = styled.div`
  background: black;

  ${media.lessThan("medium")`
    /* screen width is less than 768px (medium) */
    background: red;
  `}

  ${media.between("medium", "large")`
    /* screen width is between 768px (medium) and 1170px (large) */
    background: green;
  `}

  ${media.greaterThan("large")`
    /* screen width is greater than 1170px (large) */
    background: blue;
  `}
`;

ちなみに、それぞれのブレイクポイントのデフォルトサイズは下記のように設定されています。
このサイズはカスタム可能です(方法については今回割愛)

size
{
  huge: '1440px',
  large: '1170px',
  medium: '768px',
  small: '450px',
}

lessThan

指定されたブレークポイントまたはサイズよりも小さい画面サイズのスタイルを追加できます。
lessThan
media.lessThan('medium')`
  /* styles ... */
`

greaterThan

このメソッドでは、指定されたブレークポイントまたはサイズより大きい画面サイズのスタイルを追加できます。
greaterThan
media.greaterThan('small')`
  /* styles ... */
`

between

このメソッドでは、指定された2つのブレークポイントまたはサイズの間に画面サイズのスタイルを追加できます。
between
media.between('small', 'medium')`
  /* styles ... */
`

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?