npm i styled-components
import styled from "styled-components";
const 변수명 = styled.html요소`display:flex;`;
render(
<변수명 />
//컴포넌트처럼 쓰면 된다!
)
❗ 클래스명은 랜덤으로 만들어진다.
bgColor
를 설정합니다. const App = () => (
<Wrapper>
<Box bgColor="red" />
<Box bgColor="green" />
</Wrapper>
);
${(props) => props.bgColor};
처럼 사용하면 됩니다.const Box = styled.div`
width: 100px;
height: 100px;
background-color: ${(props) => props.bgColor};
`;
<결과>
sass의 상속과 같은 의미입니다^^
styled(Box)
- Box 컴포넌트의 스타일을 가져옵니다.const Circle = styled(Box)`
border-radius: 50%;
`;
<결과>
styled.button
의 button
부분만 바꿔서 적용하고 싶을 때 as를 사용합니다.const Button = styled.button`
(...)
`;
<컴포넌트명 as="html태그" />
<Button>Normal Button</Button>
<Button as="a" href="#">
Link with Button styles
</Button>
<결과>
styled.html태그.attrs()
<Input required />
<Input required />
<Input required />
👇👇👇
const Input = styled.input.attrs({required:true})//JS스타일로!
`
(...)
`
{keyframes}
importimport styled,{keyframes} from "styled-components";
const animation = keyframes`
일반 css처럼 쓰면 됨
`;
const Box = styled.div`
width: 100px;
height: 100px;
background-color: red;
animation: ${animation} 5s linear infinite;
`;
&
를 사용하여 중첩const Thing = styled.div`
color: blue;
//컴포넌트 중첩
${Emoji} {
&:hover {
font-size: 100px;
}
}
//태그 중첩
& > span {
color: red;
}