styled component는 js 파일 안에 직접 css 스타일을 적용 할 수 있는 모듈이다. yarn 이나 npm을 통해서 설치가 가능하다.
$ yarn add styled-component
import styled from 'styled-components
import styled from 'styled-components
render(
<Wrapper>
<Title>
Hello World!
</Title>
</Wrapper>
);
const Wrapper = styled.div`
padding: 4rem;
background: black;
`;
const Title = styled.h1`
font-size: 1.5em;
text-align: center;
color: palevioletred;
`;
사용할 태그를 스타일링하고 변수에 저장하면 스탕일링된 태그를 컴포넌트처럼 사용할 수 있게 된다
-styled-component의 장점은 javascript를 통해 props를 주고받으며 동적인 스타일을 지정하기 편하다는 것이다.
render(
<div>
<Button>Normal</Button>
<Button primary width="100">Primary</Button>
</div>
);
// 만약 Button 컴포넌트에 전달된 props(width)가 200 미만(조건)이면
// 삼항연산자 true : "palevioletred"
// 삼항연산자 false : "white"
const Button = styled.button`
background: ${props => props.width < 200 ? "palevioletred" : "white"};
color: ${props => props.primary ? "white" : "palevioletred"};
font-size: 1em;
margin: 1em;
padding: 0.25em 1em;
border: 2px solid palevioletred;
border-radius: 3px;
`;
const Button = styled.button`
display: inline-block;
color: palevioletred;
font-size: 1em;
margin: 1em;
padding: 0.25em 1em;
`;
const TomatoButton = styled(Button)`
color: tomato;
border-color: tomato;
`;