Hi, I’m Kang Byeong-hyeon.

..

[카카오 테크 캠퍼스 2기] 1단계 1주차 WIL - 스타벅스 예제 클론하기(1)




1. 스타벅스 예제 시작하기

favicon.ico

프로젝트 루트경로에 favicon.ico있으면 브라우저가 자동으로 인식하여 브라우저 탭의 아이콘으로 설정한다.

스크린샷 2024-04-14 오후 4.02.26.png

스크린샷 2024-04-14 오후 4.03.56.png

reset.css

브라우저의 기본 스타일을 초기화 하기 위한 css코드이다.

reset.css을 구글링하면 다양한 브라우저 초기 스타일링을 제거하는 코드들을 찾아볼 수 있다.

reset-css CDN by jsDelivr - A CDN for npm and GitHub

head 태그 내부에 해당 cdn을 추가하여 기본적인 브라우저 초기 스타일링을 제거한다.

<head>
  <link
    rel="stylesheet"
    href="https://cdn.jsdelivr.net/npm/reset-css@4.0.1/reset.min.css"
  />
</head>

Open Graph

웹 페이지가 소셜 미디어(페이스북 등)에 공유가 될 때 우선적으로 활용되는 정보들을 지정할 수 있다.

추가적인 정보들은 meta 태그를 통해서 정보를 줄 수 있다.

Open Graph

<meta property="og:type" content="website" />
<meta property="og:site_name" content="Starbucks" />
<meta property="og:title" content="Starbucks Coffee Korea" />
<meta
  property="og:description"
  content="스타벅스는 세계에서 가장 큰 다국적 커피 전문점으로, 64개국에서 총 23,187개의 매점을 운영하고 있습니다."
/>
<meta property="og:image" content="./images/starbucks_seo.jpg" />
<meta property="og:url" content="https://starbucks.co.kr" />

Twitter Card

웹 페이지가 소셜 미디어(트위터)로 공유될 때 우선적으로 활용되는 정보를 지정한다.

<meta property="twitter:card" content="summary" />
<meta property="twitter:site" content="Starbucks" />
<meta property="twitter:title" content="Starbucks Coffee Korea" />
<meta
  property="twitter:description"
  content="스타벅스는 세계에서 가장 큰 다국적 커피 전문점으로, 64개국에서 총 23,187개의 매점을 운영하고 있습니다."
/>
<meta property="twitter:image" content="./images/starbucks_seo.jpg" />
<meta property="twitter:url" content="https://starbucks.co.kr" />

Google Fonts

Browse Fonts - Google Fonts

구글에서 제공하는 Google Fonts는 폰트들 중에서 원하는 무료 폰트를 검색하고 임베드해서 사용할 수 있다.

주의할 점은 폰트의 용량이 생각보다 크기때문에 꼭 사용해야할 폰트와 굵기를 잘 명시해서 임베드해야한다.

또한 구글폰트 이외에 다른 폰트들은 저작권이 있을 수 있기 때문에 라이센스를 잘 확인해서 사용해야한다.

스크린샷 2024-04-11 오후 2.34.55.png

먼저 원하는 폰트를 검색한다.

나눔고딕 사용을 위해 위와 같이 검색하였다.

이후 원하는 폰트의 굵기를 설정한 후 Get Font를 클릭한다.

스크린샷 2024-04-11 오후 2.35.25.png

이후 Get embed code를 클릭한다.

스크린샷 2024-04-11 오후 2.35.30.png

웹에서 사용할 것이기 때문에 위에 있는 link 태그들을 복사하고 폰트 적용을 위해 css 파일에 font-family를 설정해준다.

스크린샷 2024-04-11 오후 2.42.03.png

본인은 body 태그 안에 있는 모든 폰트들을 나눔고딕으로 설정할 수 있도록 body를 셀렉터로 하여 모든 폰트를 나눔 고딕으로 설정되도록 작성하였다.

스크린샷 2024-04-11 오후 2.41.36.png

나눔고딕 폰트가 잘 적용된 것을 확인할 수 있다.

Google Material icons

Material Symbols and Icons - Google Fonts

자주 사용하는 아이콘은 디자이너의 요청할 필요 없이 기본적으로 Google material icons에서 제공하고 있다.

단순하게 코드를 통해서 아이콘을 삽입할 수 있기 때문에 매우 간편하다.

스크린샷 2024-04-11 오후 2.50.31.png

스타벅스 클론 예제에서 업로드 아이콘을 사용할 것이기 때문에 “upload”를 검색하였다.

스크린샷 2024-04-11 오후 2.51.50.png

upload 아이콘을 클릭하면 Google Fonts와 마찬가지로 임베드코드가 표시되며 아이콘 사용을 위한 위한 태그가 제공된다.

스크린샷 2024-04-11 오후 2.58.19.png

임베드 코드를 head 태그 내부에 작성하고 아이콘 사용을 위해 body 태그 내부에 span 태그를 통해 클래스를 지정하고 upload을 텍스트로 작성하여 upload아이콘을 출력하였다.

만약 upload가 아닌 다른 아이콘을 사용할 경우, 텍스트 부분에 원하는 아이콘의 이름을 작성하면 해당 아이콘이 출력되는 것도 확인할 수 있었다.

스크린샷 2024-04-11 오후 2.58.42.png

upload와 search 아이콘이 잘 나오는 것을 확인할 수 있었다.




2. 헤더와 드롭메뉴 - 로고

header 태그의 사용 & a 태그를 통한 페이지 이동

<header>
  <div class="inner">
    <a href="/" class="logo">
      <img src="./images/starbucks_logo.png" alt="STARTBUCKS" />
    </a>
  </div>
</header>

공통 부분 스타일링

가로, 수직을 기준으로 중앙 배치하기

/* COMMON */
body {
  color: #333;
  font-family: "Nanum Gothic", sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.4;
}

img {
  display: block;
}

header .inner {
  position: relative;
  width: 1100px;
  height: 120px;
  margin: 0 auto;
  background-color: orange;
}

header .logo {
  height: 75px;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  margin: auto;
}

결과

스크린샷 2024-04-11 오후 3.31.00.png




3. 헤더와 드롭메뉴 - 서브 메뉴

페이지 이동 임시로 막기

<header>
  <div class="inner">
    <a href="/" class="logo">
      <img src="./images/starbucks_logo.png" alt="STARTBUCKS" />
    </a>
    <div class="sub-menu">
      <ul class="menu">
        <li><a href="/signin">Sign In</a></li>
        <li><a href="javascript:void(0)">My Starbucks</a></li>
        <li><a href="javascript:void(0)">Customer Service & Ideas</a></li>
        <li><a href="javascript:void(0)">Find a Store</a></li>
      </ul>
      <div class="search">
        <input type="text" />
        <span class="material-symbols-outlined"> search </span>
      </div>
    </div>
  </div>
</header>

스타일링 안전성 챙기기

각 서브메뉴 구분선 넣기

서브메뉴 UX 고려하기

header .sub-menu ul.menu {
  font-family: Arial, sans-serif;
  display: flex;
}

header .sub-menu ul.menu li {
  position: relative;
}

/* 각 서브메뉴 마다 구분선을 추가한다. */
header .sub-menu ul.menu li::before {
  content: "";
  /* display: block; */
  width: 1px;
  height: 12px;
  background-color: #e5e5e5;
  position: absolute;
  top: 0;
  bottom: 0;
  margin: auto;
}

/* 첫번째 서브메뉴의 구분선을 제거한다. */
header .sub-menu ul.menu li:first-child::before {
  display: none;
}

header .sub-menu ul.menu li a {
  display: block;
  font-size: 12px;
  padding: 11px 16px;
  color: #656565;
}

header .sub-menu ul.menu li a:hover {
  color: #000;
}

결과

스크린샷 2024-04-13 오후 8.23.14.png




4. 소감

이전에 독학하면서 배웠던 내용들을 다시 되새기는 느낌이었다.

전체적으로 어려운 부분은 없었지만, position: absolute를 이용한 수직 중앙 배치 부분에서 어려움을 겪었다.

요소의 너비를 명시하고 top, bottom, right, left로 지점을 설정하여 margin 속성을 통해 상하좌우에 대한 여백을 설정하면 수직, 수평을 기준으로 배치가 가능하다는 것을 알게 되었다.