반응형 그리드 사용을 위해 antd에서 Row 와 Col 컴포넌트를 가져와서 적용해준다.
보통 반응형 작업을 할 때에는 모바일 → 태블릿 → 데스크탑 순서로 맞춰주는 것이 바람직하다. 데스크탑을 먼저 작업하고 이후 태블릿과 모바일을 최적화하면 브레이크 포인트 설정이 복잡해져서 업무 난이도가 올라간다.
또한 반응형을 잡을 때에는 가로(Row)부터 잡은 후 세로(Col)를 잡아주는 순서로 진행한다.
// AppLayout.js
import PropTypes from "prop-types";
import Link from "next/link";
import { Menu, Input, Row, Col } from "antd";
const AppLayout = ({ children }) => {
return (
<div>
<Menu mode="horizontal">
<Menu.Item>
<Link href="/">
<a>노드버드</a>
</Link>
</Menu.Item>
<Menu.Item>
<Link href="/profile">
<a>프로필</a>
</Link>
</Menu.Item>
<Menu.Item>
<Input.Search enterButton style={{ verticalAlign: "middle" }} />
</Menu.Item>
<Menu.Item>
<Link href="/signup">
<a>회원가입</a>
</Link>
</Menu.Item>
</Menu>
{/* 1. gutter: 간격 */}
<Row gutter={8}>
{/* 2. Col 프로퍼티 */}
<Col xs={24} md={6}>
왼쪽 메뉴
</Col>
<Col xs={24} md={12}>
{children}
</Col>
<Col xs={24} md={6}>
{/* 3. _blank 시 rel 프로퍼티 */}
<a
href="<https://www.notion.so/fongfing/Vicky-s-FE-Engineering-Wiki-d7e660205c0047118a78d664b07418fd>"
target="_blank"
rel="noreferrer noopener"
>
Made by Vicky
</a>
</Col>
</Row>
</div>
);
};
AppLayout.propTypes = {
children: PropTypes.node.isRequired,
};
export default AppLayout;