반응형
HTML을 CSS에서 (여기에서는 styled-components에서)
선택해서 스타일링 할 수 있다.
1. input, div와 같이 Element를 선택하려면 다음과 같이 선택하고,
input { }
div { }
Element그자체 { }
2. Element에 부여한 props 중, className을 기준으로 선택하려면 다음과 같이 선택할 수 있고,
.head-title { }
.footer-email { }
.부여한className { }
3. Element에 부여한 props 중, id를 기준으로 선택하려면 다음과 같이 선택할 수 있다.
#sidebar { }
#body { }
#부여한id { }
import React from 'react'
import styled, { css } from 'styled-components'
// # 반복적으로 사용할 것 같은 속성들은 Common이라는 변수에 담아서,
// # 언제든지 재활용할 수 있다.
const Common = css`
border-radius: 5px;
padding-top: 5px;
`
const Container = styled.div`
display: grid;
height: 100vh;
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-template-rows: .2fr 1.5fr 1.2fr 0.8fr;
grid-template-areas:
"nav nav nav nav"
"sidebar main main main"
"sidebar content1 content2 content3"
"sidebar footer footer footer"
;
grid-gap: 0.2rem;
padding: 5px;
font-family: "Inter", sans-serif;
font-weight: 800;
text-transform: uppercase;
font-size: 12px;
color: #004d40;
text-align: center;
nav {
background-color: #a7ffeb;
grid-area: nav;
// # Common 변수를 재활용하는 모습
${Common};
}
main {
background-color: #84ffff;
grid-area: main;
${Common};
}
#sidebar {
background-color: #18ffff;
grid-area: sidebar;
${Common};
}
#content1 {
background-color: #6fffd2;
grid-area: content1;
${Common};
}
#content2 {
background-color: #64ffda;
grid-area: content2;
${Common};
}
#content3 {
background-color: #74ffba;
grid-area: content3;
${Common};
}
footer {
background-color: #1de9b6;
grid-area: footer;
${Common};
}
@media only screen and (max-width: 550px) {
grid-template-columns: 1fr;
grid-template-rows: .4fr .4fr 2.2fr 1.2fr 1.2fr 1.2fr 1fr;
grid-template-areas:
"nav"
"main"
"sidebar"
"content1"
"content2"
"content3"
"footer"
;
}
`
결국 자기 맘대로 코딩하면 그만이지만,
대체로 Grid-Layout를 적용할 때 반복적으로 보이는 패턴이 있다.
* Container에는 {
grid-template-columns: ...;
grid-template-rows: ...;
grid-template-areas: "..."; // 요기는 Items의 grid-area에 적은 이름을 넣으면, 그대로 화면을 쪼개(?)줌
}
* Items에는 {
grid-area: ...;
}
function 홈() {
return (
<Container>
<nav>Navbar</nav>
<main>Main</main>
<div id="sidebar">Sidebar</div>
<div id="content1">Content1</div>
<div id="content2">Content2</div>
<div id="content3">Content3</div>
<footer>Footer</footer>
</Container>
)
}
export default 홈
반응형
'React 입문자 꼬리표 떼기 > Frontend Setup' 카테고리의 다른 글
Emotion 도입하기 (0) | 2023.06.15 |
---|---|
Next.js Project Init (0) | 2022.03.13 |
6. Grid Layout #1 (0) | 2022.02.14 |
5. Apply Styled-Components (1) | 2022.02.12 |
4. TypeScript - Object (객체) (1) | 2022.02.12 |
댓글