레이아웃 css 적용하기

SongNoin·2021년 9월 16일
0
post-thumbnail

레이아웃

  • 레이아웃은 바디영역은 바뀌더라도 다른영역은 그대로 있게( 메뉴, 이미지 등) 해주는 기능

  • 헤더 / 배너 / 네비게이션 / 사이드 / 푸터로 폴더를 나누고
    컴포넌트화 해서 index.txt에 모아준다.

  • 레이아웃 컴포넌트 import 하기
import styled from "@emotion/styled";
import { useRouter } from "next/router";
import LayoutFooter from "./footer/LayoutFooter.container";
import LayoutHeader from "./header/LayoutHeader.container";
import LayoutNavi from "./navi/LayoutNavi.container";
import LayoutBanner from "./banner/LayoutBanner.container";
import LayoutSide from "./side/LayoutSide.container";
  • 컴포넌트들을 return 안에 적어준다.
export default function Layout(props) {
return (
    <Wrapper>
      <LayoutHeader />
      <LayoutBanner />
      <LayoutNavi />
      <SidebarWrapper>
        <LayoutSide/>
        <Body>{props.children}</Body>
      </SidebarWrapper>
      <LayoutFooter />
    </Wrapper>
  );
}
  • pages 안에 있는 _app.js 에 Component 를 만들어 놓은 레이아웃으로 감싸준다.
 return (
    <>
      <Global styles={globalStyles} />
      <ApolloProvider client={client}>
        <Layout>
          <Component {...pageProps} /> 
          // 위의 index.js 의 pros.children 으로 전달해준다
        </Layout>
      </ApolloProvider>
    </>
  );

전체 페이지 css 적용하기

  • emotioncss를 이용해서 globalStyles 를 지정해준다.
  • *{ }를 이용해 전체 페이지에 적용할 css를 입력한다.
import { css } from "@emotion/react";
export const globalStyles = css`
  * {
    margin: 0;
    box-sizing: border-box;
    font-size: 30px;
  }
  @font-face {
    font-family: "myfont"; // 폰트이름
    src: url("/fonts/scifibit.ttf"); // 폰트위치
  }
`;
  • pages 안에 있는 _app.jsimport 해주고 returnglobalStyles 넣어주기
     return (
    <>
      <Global styles={globalStyles} />
      <ApolloProvider client={client}>
        <Layout>
          <Component {...pageProps} />
        </Layout>
      </ApolloProvider>
    </>
  );

0개의 댓글