스타일이 지정된 구성 요소가 있는 미디어 쿼리
이 문서는 스타일 구성 요소에서 미디어 쿼리를 사용하는 방법에 대한 것입니다.
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.
- Define breakpoints based on application needs.
- Define devices using media query syntax.
- 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!
참조(그리고 큰 감사):
React , React Tutorials Styled Components
Reference
이 문제에 관하여(스타일이 지정된 구성 요소가 있는 미디어 쿼리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mariokandut/media-queries-with-styled-components-cin텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)