1. 리액트 스타일링
1) 태그에 직접 지정하기
2) 일반 css파일로 적용하기
3) css모듈로 적용하기
2. css 파일 이름 규칙
- 컴포넌트의 이름을 반드시 포함해서 만듭니다.
ex) App.js - App.css
1] 태그에 직접 디자인을 적용 할 때는 {}로 묶어줍니다
- css 속성 중 - 은 카멜표기법으로 대체됩니다.
style={{css속성: 값, css속성: 값}}
<p style={{color: 'white', textAlign: 'center'}}>안녕하세요!!</p>
2] 일반 CSS 문법으로 디자인을 해주면 되고 import로 가져오면 됩니다.
* App.css
.app_header {
height: 50px;
line-height: 50px;
background-color: #000;
margin: 0;
padding: 0;
}
* App.js
import './css/App.css'; //일반css파일로 디자인
......생략
3] CSS 모듈사용하기
- 파일은 컴포넌트명.module.css 형식으로 만듭니다.
- css파일은 import구문으로 가져옵니다.
- 이 방식은 선택자에 고유한 해시값을 부여함으로 다른파일과 디자인의 중복을 막아줍니다.
- :global 키워드를 이용해서 전역 선택자(이름) 선언이 가능합니다.
* App.module.css 파일
.app_wrap {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
text-align: center;
background-color: #fff;
height: 100vh;
margin: 0;
padding: 0;
}
/* 전역선택자로 이름정하기 */
:global .title {
color: pink;
font-weight: 900;
}
* App.js 파일
- css파일은 특정 이름으로 import합니다.
- style={특정이름.선택자 로} 적용합니다
- :global 키워드는 이름으로 바로 사용하면 됩니다.
import styled from './css/App.module.css'; //css모듈로 디자인
const App = () => {
return (
<Fragment>
<section className={styled.app_wrap}> {/* css모듈 app_wrap적용 */}
<p className="title">CSS모듈로디자인!</p> {/* css모듈의 전역선택자 적용 */}
</section>
</Fragment>
)
}
export default App;
* App.js, App.css, App.module.css
import { Fragment } from "react";
//css파일 경로 링크
import './css/App.css';
//css 모듈 파일 링크
import styled from './css/App.module.css';
const App = () => {
//p.261 - css 스타일링
//직접 스타일링 하기: -은 카멜 표기법으로 변경 됩니다.
const myStyle = {
color: "red",
textAlign: "center"
}
return (
<Fragment>
<header style={{backgroundColor: "black"}} className="app_header">
<p style = {myStyle}>헤더입니다(직접 스타일링)</p>
</header>
<article className="app_article">
css파일로 디자인 하기
</article>
<section className={styled.app_wrap}>
<div className={styled.app_item}>
<p>CSS디자인</p>
<input type = "text" className="input_control" />
<input type = "password" className="input_control"/ >
</div>
</section>
</Fragment>
)
}
export default App;
/* css문법을 적용 */
* {padding: 0; margin: 0;}
.app_header {
height: 50px;
line-height: 50px;
}
.app_article {
height: 100px;
background-color: aqua;
}
.app_wrap {
display: flex;
justify-content: center;
align-content: center;
background-color: aquamarine;
height: 100vh; /* 전체 화면 */
}
.app_wrap .app_item {
flex-basis: 20%;
padding: 20px;
}
/* 전역 선택자- 바로 적용이 가능합니다. */
:global .input_control {
display: block;
width: 100%;
box-sizing: border-box;
color : red;
}
'TIL > React' 카테고리의 다른 글
day71-react (0) | 2023.01.20 |
---|---|
day70-react (0) | 2023.01.19 |
day68-react (0) | 2023.01.18 |
day67-react (0) | 2023.01.17 |
day66-react (0) | 2023.01.16 |