$ npm i styled-components
{
"resolutions": {
"styled-components": "^5"
}
}
tagged template literals라는 ES6문법을 이용하여 js 파일에 작성하므로 별도의 CSS파일 없이 스타일 속성을 지닌 컴포넌트를 만들 수 있습니다.
import styled from "styled-components";
const ComponentName = styled.Tag`
color: tomato;
text-align: center;
`
Styled Components는 스타일 속성을 지닌 컴포넌트를 정의할 때 함수를 전달하고, 그 함수 안에서 props를 사용할 수 있습니다.
const Title = styled.h1`
color: ${(props) => props.color ? props.color : "white"};
text-align: center;
`
const App = ()=>{
return (
<>
<Title color="tomato">Styled Component</Title>
</>
)
}
같은 스타일을 지닌 컴포넌트에서 약간의 변화를 주고 싶을 때 상속하여 새로운 컴포넌트를 만들 수 있습니다.
const Title2 = styled(Title)`
//...Title와 같다.
font-size: 32px;
`
좋은 예시
const Header = styled.header`
// ...
`
const App = ()=>{
return <Header>헤더</Header>
}
나쁜 예시
const App = ()=>{
const Header = styled.header`
// ...
`
return <Header>헤더</Header>
}
&기호를 사용하여 중첩 스타일을 적용할 수 있습니다.
const Header = styled.header`
&:hover {
// ...
}
`
&:hover 가상 클래스 적용& ~ & 형제& + & 인접 형제&.className 인접 클래스
&를 사용하지 않으면 자식 셀렉터에 스타일을 적용할 수 있습니다.
const Header = styled.header`
.className {
...
}
#id{
..
}
`
.className 자식 class#id 자식 id