[React, Nextjs] nextjs 에 emotion 설치 (react cra 동일)
728x90
반응형
설치 설치
yarn add @emotion/react @emotion/styled
yarn add --dev @emotion/babel-plugin
.babelrc 파일 생성 및 내용 추가
{
"presets": [
[
"next/babel",
{
"preset-react": {
"runtime": "automatic",
"importSource": "@emotion/react"
}
}
]
],
"plugins": ["@emotion/babel-plugin"]
}
글로벌 스타일 적용 및 스타일 적용 예제
style.js 파일 생성 (이름은 상관없음)
import { css, Global, keyframes } from '@emotion/react'
import styled from '@emotion/styled'
export const globalStyles = (
<Global
styles={css`
html,
body {
padding: 3rem 1rem;
margin: 0;
background: papayawhip;
min-height: 100%;
font-family: Helvetica, Arial, sans-serif;
font-size: 24px;
}
`}
/>
)
export const basicStyles = css`
background-color: white;
color: cornflowerblue;
border: 1px solid lightgreen;
border-right: none;
border-bottom: none;
box-shadow: 5px 5px 0 0 lightgreen, 10px 10px 0 0 lightyellow;
transition: all 0.1s linear;
margin: 3rem 0;
padding: 1rem 0.5rem;
`
export const hoverStyles = css`
&:hover {
color: white;
background-color: lightgray;
border-color: aqua;
box-shadow: -15px -15px 0 0 aqua, -30px -30px 0 0 cornflowerblue;
}
`
export const bounce = keyframes`
from {
transform: scale(1.01);
}
to {
transform: scale(0.99);
}
`
export const Basic = styled.div`
${basicStyles};
`
export const Combined = styled.div`
${basicStyles};
${hoverStyles};
& code {
background-color: linen;
}
`
export const Animated = styled.div`
${basicStyles};
${hoverStyles};
& code {
background-color: linen;
}
animation: ${({ animation }) => animation} 0.2s infinite ease-in-out alternate;
`
global 스타일 적용
: _app.js혹은 _app.tsx 파일에 import로 style.js 파일을 가져와서 가장 위에 {} 형태로 넣어주면 된다.
cra나 next가 아닌 경우 가장 상위 컴포넌트에 스타일을 적용시켜주면 된다.
// import 'styles/globals.css'
import { globalStyles } from 'styles/styles';
import { AppProps } from 'next/app';
function MyApp({ Component, pageProps }: AppProps) {
return (
<>
{globalStyles}
<Component {...pageProps} />
</>
);
}
export default MyApp;
728x90
반응형
'React공부' 카테고리의 다른 글
[React, NextJS] Module parse failed: Unexpected character '' (1:0) 에러 수정 및 Next에서 이미지 import 되도록 설정 (0) | 2021.02.21 |
---|---|
[React, Nextjs] Next typescript 인텔리센스 안보이는 문제 해결 (0) | 2021.02.20 |
[React, NextJS] tsconfig.json 절대경로 설정과 폴더구조 고찰 (0) | 2021.02.19 |
[Next.js 설정] Next에 Typescript 도입하기 (0) | 2021.02.19 |
[React] hooks 만든 동기, 사용하는 이유 요약 (0) | 2021.01.04 |
TAGS.