react+vue
[react] styled-components
h-yujin
2022. 9. 23. 14:36
기존 스타일 적용 방법
function App() {
const a = {
backgroundColor: "red"
};
return (
<div style={ a}>안녕</div>
);
}
- 단점 : 자동완성이 안된다.
- 주의 사항: style을 만들때는 함수안에 만들지 말것. 정적 코드이기 때문에 UI가 reload될 때마다 읽어지는 것을 방지한다.
css파일 만들기
src폴더 우클릭→새파일→<파일이름>.css
- App.css
.box-style{
background-color: pink;
}
- App.js
import './App.css';
function App() {
const a = {
backgroundColor: "red"
};
return (
<div>
<div style={a}>안녕</div>
<div className = "box-style">css파일로 적용</div>
</div>
);
}
export default App;
styled-components
- 다운로드
npm install --save styled-components
package.json의 dependencies에 추가되었다.
확장프로그램에서 vscode-styled-components를 설치해준다(자동완성 기능)
const Title = styled.h1`
font-size: 1.5em;
text-align: center;
color: palevioletred;
`;
styled-components 홈페이지에 있는 예제
자바스크립트로 다시 쓰면
const t = document.createElement("h1");
t.style = {
fontSize: "1.5em",
textAlign: "center",
color: "palevioletred"
};
styled-components를 사용하는 것이 훨씬 편하다 자동완성도 되고, 문자열 형식을 지키지 않아도 된다.
import './App.css';
import styled from 'styled-components';
const Title = styled.h1`
font-size: 1.5em;
text-align: center;
color: palevioletred;
`;
function App() {
const a = {
backgroundColor: "red"
};
return (
<div>
<div style={a}>안녕</div>
<div className="box-style">css파일로 적용</div>
<Title>styled-components 적용</Title>
</div>
);
}
export default App;
적용할때는 <Title>내용</Title>으로 적용한다.
장점은 css파일 없이 하나의 javascript파일로 관리할 수 있고 자동완성을 지원한다. 추가로 css문법과 유사하다.
단점은 css파일을 재사용할 수 없다.
styled-components로 header파일 만들기
src폴더에 header.js라는 파일을 만들어준다.
- header.js
import styled from 'styled-components';
const HeaderStyle= styled.div`
background-color: blue;
font-size: 2rem;
margin: 0 auto;
`;
function Header() {
return (
<HeaderStyle>헤더입니다.</HeaderStyle>
);
}
export default Header;
default로 Header함수를 export시켜준다.
- App.js
import './App.css';
import styled from 'styled-components';
import Header from './header';
const Title = styled.h1`
font-size: 1.5em;
text-align: center;
color: palevioletred;
`;
function App() {
const a = {
backgroundColor: "red"
};
return (
<div>
<Header/>
<div style={a}>안녕</div>
<div className="box-style">css파일로 적용</div>
<Title>styled-components 적용</Title>
</div>
);
}
export default App;
header.js의 Header를 import한다.
App()에 <Header/>를 반환시킨다.
상단에 헤더가 노출된다.