728x90
๋ฐ์ํ
๐ก ์ค์ต ํฌ์ธํธ!
๐ ์ผํ๋ชฐ ๋ ์ด์์ PC ํ๋ฉด
๐ ์ผํ๋ชฐ ๋ ์ด์์ ๋ชจ๋ฐ์ผ ํ๋ฉด
๐ Navbar ๋ง๋ค์ด๋ณด๊ธฐ
๐ค React Bootstrap ์์ Navbar Components ๊ฒ์ํ๊ธฐ
- React Bootstrap ๊ณต์์ฌ์ดํธ๋ก ๋ค์ด๊ฐ์ Components ๋ฉ๋ด์์ navbar ๋ผ๊ณ ๊ฒ์ํ๋ฉด ์ํ๋ค์ด ๋ง์ด ๋์จ๋ค.
- ๊ทธ๋ฌ๋ฉด ๋ง์์ ๋๋ navbar ์ HTML ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ JavaScript ํ์ผ์ ๋ถ์ฌ๋ฃ์ด์ฃผ๋ฉด ๋์์ธ์ ๋!
- ์ธ๋ถ ๋ด์ฉ์ด๋ ๋์์ธ๋ง ์๋ณด๋ฉด ์์ Navbar ๋ฅผ ๋ง๋ค ์ ์๋ค.
๐ค ์ํ๋ ๋์์ธ์ Navbar HTML ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ
function App() {
return (
<div className="App">
<Navbar bg="light" expand="lg">
<Container>
<Navbar.Brand href="#home">Shoes shop</Navbar.Brand>
<Navbar.Toggle aria-controls="basic-navbar-nav" />
<Navbar.Collapse id="basic-navbar-nav">
<Nav className="me-auto">
<Nav.Link href="#home">Home</Nav.Link>
<Nav.Link href="#link">Link</Nav.Link>
<NavDropdown title="Dropdown" id="basic-nav-dropdown">
<NavDropdown.Item href="#action/3.1">Action</NavDropdown.Item>
<NavDropdown.Item href="#action/3.2">Another action</NavDropdown.Item>
<NavDropdown.Item href="#action/3.3">Something</NavDropdown.Item>
<NavDropdown.Divider />
<NavDropdown.Item href="#action/3.4">Separated link</NavDropdown.Item>
</NavDropdown>
</Nav>
</Navbar.Collapse>
</Container>
</Navbar>
</div>
);
}
- ๋๋ React Bootstrap ์์ Navbar ๊ฒ์ ์ ๋งจ ์ฒ์์ ๋์ค๋ HTML ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ App.js ํ์ผ ๋ด ์ํ๋ ์์น์ ๋ถ์ฌ๋ฃ์ด์ฃผ์๋ค.
๐ค Navbar Component import ํ๊ธฐ
import {Navbar, Container, Nav, NavDropdown} from 'react-bootstrap';
- ์ด ๋ ์ค์ํ ์ ์ ๋ถ์ฌ๋ฃ์ Component ๋ฅผ JavaScript ํ์ผ ์๋จ์ import ํด์ฃผ์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
- import ํด์ค ๋์๋ <Navbar /> ๋ง๊ณ ๋ ํ์์ ํฌํจ๋์ด์๋ <Nav />, <Container /> ๋ฑ์ Component ๋ import ํด์ฃผ์ด์ผ ํ๋ค.
๐ค ๋ธ๋ผ์ฐ์ ์์ Navbar ์ ์ฉ ์ฌ๋ถ ํ์ธํ๊ธฐ
- ์ด์ ๋ธ๋ผ์ฐ์ ์์ ์ฌํํ Navbar ๊ฐ ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๐ ๋๋ฌธ Jumbotron ๋ง๋ค๊ธฐ
- Jumbotron ์ด๋ผ๊ณ ํด์ ๋๋ฌธ ์ด๋ฏธ์ง๋ React Bootstrap ์ ์ด์ฉํ์ฌ ๋ง๋ค ์ ์๋ค.
- ํ์ง๋ง bootstrap5, React Bootstrap 2 ๋ฒ์ ์ด์์์๋ Jumbotron ์ด๋ผ๋ ํญ๋ชฉ์ด ๊ฒ์๋์ง ์๋๋ค.
- ๊ทธ๋ฅ ํ๋ฒ ๋ง๋ค์ด๋ณด๋ ๊ฒ๋ ์ฌ๋ฏธ์์ ๊ฑฐ ๊ฐ์์ ์ง์ ๋ง๋ค์ด๋ณด์๋ค.
๐ค HTML
<div className="main-visual">
<h2>Welcome to visit SHOES.COM!</h2>
<hr/>
<h1>20% Season Off</h1>
<button>SHOP THIS DEAL</button>
</div>
- ์ ์ด๋ฏธ์ง์ ๊ฐ์ ๋๋ฌธ์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ค์ํ๋ค.
- ์ฒ์์๋ div ํ๊ทธ ์์ ์ด๋ฏธ์ง ๋งํฌ๋ฅผ ๋ด์ img ํ๊ทธ์ ๋ด์ฉ์ด ๋ค์ด์๋ div ํ๊ทธ๋ฅผ ๋ฃ์ด์ค ํ, position: absolute ์์ฑ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ์์ ๊ธ์ด ํ๊ฐ์ด๋ฐ์ ์ค๋๋ก ์กฐ์ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ง๋ค์ด๋ณด์๋ค.
- ๊ทธ๋ฌ๊ณ ๋์ ๋๋ฒ์งธ ๋ฐฉ๋ฒ์ผ๋ก ์ html ์ฝ๋์ ๊ฐ์ด main-visual ์ด๋ผ๋ className ์ ๊ฐ์ง div ํ๊ทธ๋ฅผ ๋ง๋ค์ด ๊ทธ ์์ ๋ด์ฉ์ ๋ชจ๋ ๋ด์์ฃผ๊ณ ๋ฐฐ๊ฒฝ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ฃ์ด๋ณด์๋ค.
๐ค CSS
.main-visual {
background-image: url("../src/img/shoes.jpg");
background-size: cover;
background-position: center;
color: white;
padding: 20px 30px;
min-height: 300px;
}
.main-visual h2 {
margin: 30px 0;
}
.main-visual button {
margin-top: 20px;
border: none;
border-radius: 5px;
padding: 10px 20px;
background: red;
color: white;
font-weight: bold;
font-size: 14px;
}
.main-visual button:hover {
color: red;
background: white;
transition: all 0.5s;
transform: scale(1.05);
}
- ์ด๋ฏธ์ง๋ฅผ ๋ฐฐ๊ฒฝ์ผ๋ก ๋ฃ์ ๋ ์ ์ฉํ css ์์ฑ๋ค์ด ๋ช ๊ฐ ์๋ค.
- background-image : url('์ด๋ฏธ์ง ๊ฒฝ๋ก') ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐฐ๊ฒฝ์ผ๋ก ๋ฃ์ ๋ ์ฌ์ฉํ๋ ์์ฑ์ผ๋ก ์ด๋ฏธ์ง ๊ฒฝ๋ก๋ฅผ ๋ฐ์ดํ ์์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
- background-size : cover ๋ ๋ฐฐ๊ฒฝ์ผ๋ก ์ฌ์ฉํ๋ ์ด๋ฏธ์ง๋ฅผ ํ๊ทธ ์์ ๊ฝ ์ฐจ๊ฒ ๋ง๋ค์ด์ฃผ๋ ์์ฑ์ด๋ค.
- background-position : center ๋ ๋ธ๋ผ์ฐ์ ์ ๋๋น๋ฅผ ์กฐ์ ํ ๋ ์ด๋ฏธ์ง์ ์ค์๋ถ๊ฐ ๊ฐ์ด๋ฐ์ ์ค๋๋ก ํด์ฃผ๋ ์์ฑ์ด๋ค.
๐ค ๋ธ๋ผ์ฐ์ ์์ Navbar ์ ์ฉ ์ฌ๋ถ ํ์ธํ๊ธฐ
๐ ์ํ ๋ ์ด์์ ๋ง๋ค๊ธฐ
- ์ํ ์ด๋ฏธ์ง๋ฅผ ์ง์ดํ๋ ๋ ์ด์์์ ๋ง๋ค ๋์๋ Bootstrap ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋น ๋ฅด๊ฒ ๋์์ธ์ด ๊ฐ๋ฅํ๋ค.
๐ค HTML
<div className="container">
<div className="row">
<div className="col-md-4 grid">
<img src="https://codingapple1.github.io/shop/shoes1.jpg" />
<h5>White and Black</h5>
<p>120000</p>
</div>
<div className="col-md-4 grid">
<img src="https://codingapple1.github.io/shop/shoes2.jpg" />
<h5>Red Knit</h5>
<p>110000</p>
</div>
<div className="col-md-4 grid">
<img src="https://codingapple1.github.io/shop/shoes3.jpg" />
<h5>Grey Yordan</h5>
<p>130000</p>
</div>
</div>
</div>
- container, row, col-md-4 ๋ผ๋ className ์ Bootstrap ๋ฌธ๋ฒ์ ํด๋นํ๋ค.
- ๋ฐ๋ผ์, ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ณ๋์ css ์์ฑ์ ์ ์ํ์ง ์๊ณ ๋ ๊ฐ๋ก 1์ค์ ๋์ผํ ํฌ๊ธฐ๋ก 3๋ถํ ํด์ฃผ๊ณ ๋ชจ๋ฐ์ผ์์๋ ์ธ๋ก 1์ค์ ๋์ผํ ํฌ๊ธฐ๋ก 3๋ถํ ํด์ค๋ค.
๐ค CSS
.grid img {
width: 100%;
}
- ๋ธ๋ผ์ฐ์ ๋ก ๋ถ๋ฌ์จ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ์ปค์ width ๋ฅผ 100% ๋ก ๋ง์ถ์ด ๊ฐ ์์ญํฌ๊ธฐ์ ๊ฝ ์ฐจ๋๋ก css ๋ฅผ ์์ ํด์ฃผ์๋ค.
๐ค ๋ธ๋ผ์ฐ์ ์์ ์ํ ๋ ์ด์์ ์ ์ฉ ์ฌ๋ถ ํ์ธํ๊ธฐ
728x90
๋ฐ์ํ
'[๊ฐ๋ฐ] Practice > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] ์ํ๋ชฉ๋ก Component ๋ก ๋ง๋ค์ด ๋ฐ๋ณต๋ฌธ ๋๋ฆฌ๊ธฐ (0) | 2022.03.23 |
---|---|
[React] import/export ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2022.03.23 |
[React] yarn ๊ณผ React Bootstrap ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นํ๊ธฐ (0) | 2022.03.22 |
[React] ๋ธ๋ก๊ทธ ๊ธ๋ฐํ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ (0) | 2022.03.22 |
[React] ์ถ์ฒ ๋ฒํผ ๊ธฐ๋ฅ ์ค๋ฅ ์์ ํ๊ธฐ (0) | 2022.03.22 |