HTML/CSS 실습 #1. 무지성! 네이버 메인 페이지 클론

코딩/Frontend|2022. 5. 14. 15:32

HTML/CSS 1독을 마치고 JS로 넘어가려다가

내가 그래서 과연 아는 것이 무엇인가? 의문이 들어 실습을 한번 해보고 넘어가기로 했다. 

얼마나 걸릴지는 모르겠지만 한번 천천히 해보자.

네이버 메인 페이지를

빨간색 박스로 크게 나누면 다음과 같은 구조를 갖음을 알 수 있다. 

해당 소스를 무지성으로 큰 줄기만 나누어 작성해보면,

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>NAVER</title>
  <style>
    header, nav, section, aside, footer {
      border: red 2px solid;
      margin: 5px 0px;
    }
    div {
      border: orange 2px solid;
      margin: 5px 0px;
    }
  </style>
</head>
<body>
  <header>
    <div class="logo">NAVER image</div>
    <div class="searchbar">검색창</div>
    <div class="set_homepage">네이버를 시작페이지로 쥬니어네이버 해피빈</div>
  </header>
  <nav>
    이미지 메일 카페 블로그 지식iN 쇼핑 쇼핑LIVE Pay 이미지 TV 사전 뉴스 증권 부동산 지도 VIBE 책 웹툰 더보기
  </nav>
  <section></section>
    <div class="news_ticker">연합뉴스>푸틴 군홧발에...  뉴스홈 연예 스포츠 지방선거</div>
    <div class="news_stand">뉴스스탠드> 구독한 언론사 * 전체언론사</div>
    <div class="todays_article">오늘 읽을만한 글
      <div class="news_article">뉴스들</div>
      <div class="news_video">뉴스 동영상들</div>
      <div class="news_article">뉴스들</div>
      <div class="news_video">뉴스 동영상들</div>
    </div>
  <aside>
    <div class="login">로그인 창</div>
    <div class="issue">이슈</div>
    <div class="trend_shopping">트렌드쇼핑
      <div class="shopping_top">쇼핑 1</div>
      <div class="play_fun">PLAY FUN</div>
      <div class="today_special">오늘의 특가ZONE</div>
      <div class="onepldeal">원쁠딜 전 상품 무료배송!</div>
    </div>
  </aside>
  <footer>
    <div class="notice">공지사항 서비스 전체보기</div>
    <div class="CPD">
      <div class="creators">크리에이터 스몰비즈니스</div>
      <div class="partners">SME 풀케어 시스템 비즈니스 광고 스토어 개설 지역업체 등록 엑스퍼트 등록</div>
      <div class="developers">네이버 개발자 센터 오픈 API 오픈소스 네이버 D2 네이버D2SF 네이버 랩스</div>
    </div>
    <div class="bottom_list">
      회사소개 인재채용 제휴제안 이용약관 개인정보처리방침 청소년보호정책 네이버 정책 고객센터 cNAVER Corp.
    </div>
  </footer>
</body>
</html>

그 결과는 다음과 같이 나온다.

페이지의 전체적인 layout을 맞춰주기 위해 여기서 한가지 고민을 할 수밖에 없다.

layout을 설정하는 데에 있어

1) float 속성을 사용하는 것이 나은가?

2) Flex box를 사용하는가?

3) Grid를 사용하는가?

 

1) section과 aside에 float: left; 속성을 적용해보면 다음과 같이 aside 요소 오른쪽으로 공백이 남는다.

이를 section, aside의 width 조정으로 해결할 수 있긴 하겠지만 뭔가 깔끔하지는 않다.

3) grid를 사용해보자.

body의 여러 요소들을 감싸는 wrapper division을 설정하여 grid를 이용하였다. 

네이버 pc 웹사이트는 반응형이 아니므로 넓이는 고정한다.

2 columns 4 rows grid로 생성하고 각 요소들을 배치해준다. 

또한 section과 aside의 넓이 비율은 3:1 정도로 사용하고 (필요 시 수정), 각 영역의 height는 대략 설정한다.

 

다음과 같이 요소의 배열이 잘 설정되었다. 

 

Header 부분을 따라서 만들어 보자.

1) Naver 로고로 이뤄진 hyperlink -> 이미지는 캡쳐하여 해결한다.

2) 검색창 -> form 태그를 이용한다. input과 button을 이용하여..

3) 시작페이지로 어쩌구..

  또한 마우스를 가져다 대면

대충 만들어보면 이런 식으로 밑줄이 쳐지거나 색상이 바뀌는 효과가 있다. 

시작페이지 설정 태그는 구글링하면 많이 나오니까 일단 여기서는 생략하고 naver 홈페이지로 링크로 대체하자.

 

대충 만들어보면 이런 식이 된다. 

여기서 또 한가지 고민

grid 내에서 가로 배열을 float으로 할 것인가? 아니면 또다른 grid로 할 것인가?

아니면 positioning을 이용할 것인가?

 

positioning을 이용하는 것이 합리적일 것 같다. 

positioning의 기준은 header로 잡고 각 요소들을 배치해보자.

대략적인 배치는 끝났으니

배치를 조금 더 정확하게 수정하고

검색창 디자인을 비슷하게 바꾸고

우측 상단 링크 또한 hover 효과를 주자

 

오늘은 여기까지..

'코딩 > Frontend' 카테고리의 다른 글

CSS #3. flex box, grid  (0) 2022.05.13
CSS #2. selector  (0) 2022.05.12
CSS #1. display, float  (0) 2022.05.12

댓글()