스타일이 지정된 구성 요소가 있는 미디어 쿼리

5361 단어 reactstyledcomponents
스타일이 지정된 구성 요소는 React 앱의 스타일을 지정하는 시각적 기본 요소이며 구성 요소에서 바로 CSS를 작성하는 기능, 복잡성 감소, 더 빠른 로딩, 명확한 범위 및 기타 성능 개선과 같은 많은 훌륭한 기능을 가지고 있습니다.

이 문서는 스타일 구성 요소에서 미디어 쿼리를 사용하는 방법에 대한 것입니다.

MDN의 미디어 쿼리에 대한 빠른 재검토:

Media queries are useful when you want to modify your site or app depending on a device's general type (such as print vs. screen) or specific characteristics and parameters (such as screen resolution or browser viewport width).



미디어 쿼리 구문은 다음과 같습니다@media screen and (max-width: 768px) { SOME CONDITIONAL STYLING }.

좋은 소식이 있습니다. 스타일이 지정된 구성 요소가 있는 미디어 쿼리는 기존 CSS에서와 동일하게 작동합니다.

일부 모범 사례를 고려해야 하지만 스타일이 지정된 구성 요소에서 미디어 쿼리를 작성할 때 코드 변경, 조정 또는 도우미 클래스가 필요하지 않습니다.

스타일이 지정된 구성 요소와 함께 @media 사용

When writing media queries in styled-components I follow these three steps, and I can only recommend this approach.

  1. Define breakpoints based on application needs.
  2. Define devices using media query syntax.
  3. Apply the media query in the styled component.

1. 중단점 정의

The first step should be a definition of the supported screen sizes in your application. As the needs in applications are different, a good starting point are the standard breakpoints in Google Chrome Dev Tools. Add or subtract breakpoints as for your specific need.

Let's create an object which holds the sizes.

const sizes = {
  mobileS: '320px',
  mobileM: '375px',
  mobileL: '425px',
  tablet: '768px',
  laptop: '1024px',
  laptopL: '1440px',
  desktop: '2560px',
};

2. 장치 정의

Based on the sizes we can create a media query for each supported device. We can improve readability of the code, when using ES6 template strings.

export const devices = {
  mobileS: `(min-width: ${sizes.mobileS})`,
  mobileM: `(min-width: ${sizes.mobileM})`,
  mobileL: `(min-width: ${sizes.mobileL})`,
  tablet: `(min-width: ${sizes.tablet})`,
  laptop: `(min-width: ${sizes.laptop})`,
  laptopL: `(min-width: ${sizes.laptopL})`,
  desktop: `(min-width: ${sizes.desktop})`,
};

3. styled-component에 미디어 쿼리 적용

To apply the media query in a styled component just add it to the styling. Let's consider the following application.

const App = () => (
  <ProfilePage>
    <Card>
      <ProfileImg />
      <ProfileText />
    </Card>
  </ProfilePage>
);

This is a pseudo-code of a profile page. The page should be responsive. The ProfilePage should have a different maximum width on laptop and desktop, and the Card should have the ProfileText below the ProfileImage on small devices.

import styled from 'styled-components';
import { device } from './device';

const ProfilePage = styled.div`
  margin: auto;
  text-align: center;

  @media ${device.laptop} {
    max-width: 800px;
  }

  @media ${device.desktop} {
    max-width: 1400px;
  }
`;

For moving the text under the image in the Card component, flex-direction can be of help. When developing a web application starting with the smallest supported screen is always helpful.

const Card = styled.div`
  display: flex;
  flex-direction: column;
  margin: 0.5rem;

  @media ${device.laptop} {
    flex-direction: row;
  }
`;

YaY , 🥳🥳🥳. That's it. Requirements fulfilled.

TL;DR

(4667916)
  • Media queries with styled components just work the same as in good old CSS!
Thanks for reading and if you have any questions , use the comment function or send me a message . If you want to know more about

참조(그리고 큰 감사):

React , React Tutorials Styled Components

좋은 웹페이지 즐겨찾기