StyledComponents에서 스펀지를 처리하는 방법
StyledComponents에서 회전 스펀지 지원
React와 Next에서 Styled Components를 사용하면 스펀지를 어떻게 대처할 것인가?이런 의문이 생겼다.
조사를 많이 해도 별다른 보도가 없으니 이번에 소개한 방법이 맞는지 모르겠다.
나는 사용하기에 매우 편리하다고 생각한다.
스펀지 대처법
이번 사용 버전 일람
버전에 따라 바뀔 가능성이 있기 때문에 미리 버전을 싣기도 한다.
이번에는 넥스트JS로 구성됐지만 리액트도 마찬가지로 사용할 수 있다.
"next": "12.1.1",
"react": "17.0.2",
"react-dom": "17.0.2",
"styled-components": "^5.3.5"
Theme 작성
the 폴더를 만들고 전체 테마 값 등을 추가합니다.
파일 구성
theme
├── setting
│ ├── breakpoint.ts //ブレイクポイントの設定
│ ├── colors.ts //カラーの設定
│ ├── fonts.ts //フォントの設定
│ └── zindex.ts //zindexの設定
└── theme.ts //全部の設定を一つにまとめる為のファイル
다양한 파일 구성
TailwindCSS를 기반으로 돌파점을 설정했습니다.
이동식 패스트푸드는 640768202421280타스다.
breakpoint.ts
import {
CSSObject,
FlattenSimpleInterpolation,
SimpleInterpolation,
css,
} from 'styled-components';
export const breakpoint = {
base: (
base: CSSObject | TemplateStringsArray,
...interpolations: SimpleInterpolation[]
): FlattenSimpleInterpolation => css`
${css(base, ...interpolations)}
`,
sm: (
sm: CSSObject | TemplateStringsArray,
...interpolations: SimpleInterpolation[]
): FlattenSimpleInterpolation => css`
@media (min-width: 640px) {
${css(sm, ...interpolations)}
}
`,
md: (
md: CSSObject | TemplateStringsArray,
...interpolations: SimpleInterpolation[]
): FlattenSimpleInterpolation => css`
@media (min-width: 768px) {
${css(md, ...interpolations)}
}
`,
lg: (
lg: CSSObject | TemplateStringsArray,
...interpolations: SimpleInterpolation[]
): FlattenSimpleInterpolation => css`
@media (min-width: 1024px) {
${css(lg, ...interpolations)}
}
`,
xl: (
xl: CSSObject | TemplateStringsArray,
...interpolations: SimpleInterpolation[]
): FlattenSimpleInterpolation => css`
@media (min-width: 1280px) {
${css(xl, ...interpolations)}
}
`,
};
이것은 컬러를 저장한 파일입니다.안의 값이 비교적 적당하니 각자의 사이트 주제색을 가입하세요
colors.ts
export const colors = {
// 汎用カラー
black: '#000',
white: '#fff',
//テーマカラー
primary: '#de1671',
secondary: '#090105',
subcolor: '#34051a',
//その他
};
글꼴 패밀리, 크기, 문자 굵기의 수치를 저장합니다.이 역시 TailwindCSS를 참조하여 구성한 것입니다.
fonts.ts
export const fonts = {
family: {
sans: '"Open Sans", sans-serif',
},
size: {
xs: '0.75rem',
sm: '0.875rem',
base: '1rem',
lg: '1.125rem',
xl: '1.25rem',
xl2: '1.5rem',
xl3: '1.875rem',
xl4: '2.25rem',
xl5: '3rem',
xl6: '3.75rem',
xl7: '4.5rem',
},
weight: {
thin: 100,
extralight: 200,
regular: 300,
normal: 400,
medium: 500,
semibold: 600,
bold: 700,
},
};
나는 zidex의 값을 보관할 것이다.사용하지 않는 사람은 필요하지 않을 수도 있지만 수치가 적당해지기 쉬우니 명확히 하고 싶은 사람은 만들어주세요.
zindex.ts
export const zindex = {
modal: 100,
drawer: 50,
floating: 40,
header: 30,
footer: 20,
front: 10,
defalt: 1,
background: -10,
}
모든 설정을 하나로 병합
방금 만든 프로필을 하나로 설정합니다.
만약 또 다른 필요한 설정이 있다면, 여기에 보충하기만 하면 설정할 수 있다.
theme.ts
import { fonts } from './setting/fonts';
import { zindex } from './setting/zindex';
import { colors } from './setting/colors';
import { breakpoint } from './setting/breakpoint';
export const theme = {
breakpoint: breakpoint,
colors: colors,
zindex: zindex,
fonts: fonts,
};
TheemeProvider 설정
만든 theme를 적용하기 위해서 설정
ThemeProvider
을 사용하십시오._app.tsx
에서 를 설정하면 전역으로 설정할 수 있습니다._app.tsx
return (
<ThemeProvider theme={theme}>
<Component {...pageProps} />
</ThemeProvider>
);
사용법
import styled from "styled-components"
export const Title = () => {
return (
<StyleTitle>
Hello Next.js
</StyleTitle>
)
}
const StyleTitle = styled.h1`
${({ theme }) => theme.media.base`
color: ${theme.colors.black};
font-size: ${theme.fonts.size.xs};
`}
${({ theme }) => theme.media.sm`
color: ${theme.colors.white};
font-size: ${theme.fonts.size.sm};
`}
${({ theme }) => theme.media.md`
color: ${theme.colors.primary};
font-size: ${theme.fonts.size.base};
`}
${({ theme }) => theme.media.lg`
color: ${theme.colors.secondary};
font-size: ${theme.fonts.size.lg};
`}
${({ theme }) => theme.media.xl`
color: ${theme.colors.subcolor};
font-size: ${theme.fonts.size.xl};
`}
`
장점과 단점
장점
결점
참고 자료
Reference
이 문제에 관하여(StyledComponents에서 스펀지를 처리하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/jpn_asane/articles/56522eb129538b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)