WEB/REACT
[REACT] styled components 심화 사용법
자바칩 프라푸치노
2021. 9. 12. 23:22
오늘은 그동안 styled components를 사용하면서 사용해보지 않았던 기능들에 대해서 공부를 해보자
1. GlobalStyle
createGrobalStyle을 import해와서 사용할 수 있다.
지금 이 스타일은 html body태그 전체에 회색으로 색지정을 해주고 있다.
import React from 'react';
import { createGlobalStyle } from 'styled-components';
const GlobalStyle = createGlobalStyle`
body {
background: #e9ecef;
}
`;
function App() {
return (
<>
<GlobalStyle />
<div>안녕하세요</div>
</>
);
}
export default App;
2. CSS Selector
컴포넌트를 하나하나 따로 만들지 않고 classname을 줘서 하나의 컴포넌트 안에서 자식 요소들에게 css를 주었다.
기능적으로 큰 의미가 없다면 이렇게 해도 무방하다.
import React from 'react';
import styled from 'styled-components';
const TodoHeadBlock = styled.div`
padding-top: 48px;
padding-left: 32px;
padding-right: 32px;
padding-bottom: 24px;
border-bottom: 1px solid #e9ecef;
h1 {
margin: 0;
font-size: 36px;
color: #343a40;
}
.day {
margin-top: 4px;
color: #868e96;
font-size: 21px;
}
.tasks-left {
color: #20c997;
font-size: 18px;
margin-top: 40px;
font-weight: bold;
}
`;
function TodoHead() {
return (
<TodoHeadBlock>
<h1>2019년 7월 10일</h1>
<div className="day">수요일</div>
<div className="tasks-left">할 일 2개 남음</div>
</TodoHeadBlock>
);
}
export default TodoHead;
3. Component Selector
const TodoItemBlock = styled.div`
display: flex;
align-items: center;
padding-top: 12px;
padding-bottom: 12px;
&:hover {
${Remove} {
display: initial;
}
}
`;
여기서 hover부분이 좀 생소하다
Remove라는 컴포넌트를 select하는 건데,
TodoItemBlock 컴포넌트가 hover될때 Remove컴포넌트의 display를 initial로 바꿔라는 뜻이다.
4. props 사용
const CircleButton = styled.button`
...
${props =>
props.open &&
css`
background: #ff6b6b;
&:hover {
background: #ff8787;
}
&:active {
background: #fa5252;
}
transform: translate(-50%, 50%) rotate(45deg);
`}
`;
이 CircleButton 컴포넌트가 props로 open을 받아왔는데 그게true일때 css를 바꿔준다.
728x90