Skip to content

BaeInHoo/starbucks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Netlify Status

โ˜• STARBUCKS

์Šคํƒ€๋ฒ…์Šค ๋žœ๋”ฉ ํŽ˜์ด์ง€(ํ™ˆํŽ˜์ด์ง€)๋ฅผ ๋งŒ๋“œ๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.
๊ผญ โฌ‡ ์•„๋ž˜ ๋‚ด์šฉ ๋ชจ๋‘ ์ฝ์–ด๋ณด์‹œ๊ณ , โฌ† ์™„์„ฑ๋œ ์ฝ”๋“œ๋„ ํ™•์ธํ•ด ๋ณด์„ธ์š”!

master ๋ธŒ๋žœ์น˜๋กœ ์ด๋™
signin ๋ธŒ๋žœ์น˜๋กœ ์ด๋™

DEMO
DEMO+signin

Starbucks

๋ฌธ์ž ์ธ์ฝ”๋”ฉ(Character Encoding) ์„ค์ •

๋ฌธ์ž๊ฐ€ ์ธ์ฝ”๋”ฉ๋˜๋Š” ๋ฐฉ์‹์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

<meta charset="UTF-8"/>
  • UTF-8: ์ดˆ์„ฑ, ์ค‘์„ฑ, ์ข…์„ฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋ฌธ์ž๋ฅผ ์ž‘์„ฑ(๊ถŒ์žฅ)
  • EUC-KR: ํ•˜๋‚˜์˜ ์™„์„ฑ๋œ ๊ธ€์ž๋ฅผ ์ธ์‹

๋ทฐํฌํŠธ(Viewport) ๋ Œ๋”๋ง ๋ฐฉ์‹ ์„ค์ •

์›นํŽ˜์ด์ง€๊ฐ€ ํ™”๋ฉด(Viewport)์— ํ‘œํ˜„๋˜๋Š” ๋ฐฉ์‹์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

<meta name="viewport" content="width=device-width, initial-scale=1.0" />
  • width=device-width: ํ™”๋ฉด์˜ ๊ฐ€๋กœ ๋„ˆ๋น„๋ฅผ ๊ฐ ๋””๋ฐ”์ด์Šค(Device)์˜ ๊ฐ€๋กœ ๋„ˆ๋น„์™€ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ
  • initial-scale=1.0: ํ™”๋ฉด์˜ ์ดˆ๊ธฐ ํ™”๋ฉด ๋ฐฐ์œจ(ํ™•๋Œ€ ์ •๋„)์„ ์„ค์ •
  • user-scalable=no: ์‚ฌ์šฉ์ž๊ฐ€ ๋””๋ฐ”์ด์Šค ํ™”๋ฉด์„ ํ™•๋Œ€(yes)/์ถ•์†Œ(no)ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค์ •
  • maximum-scale=1: ์‚ฌ์šฉ์ž๊ฐ€ ํ™”๋ฉด์„ ํ™•๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ“๊ฐ’
  • minimum-scale=1: ์‚ฌ์šฉ์ž๊ฐ€ ํ™”๋ฉด์„ ์ถ•์†Œํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Ÿ๊ฐ’

์˜คํ”ˆ ๊ทธ๋ž˜ํ”„(The Open Graph protocol)

์›นํŽ˜์ด์ง€๊ฐ€ ์†Œ์…œ ๋ฏธ๋””์–ด(ํŽ˜์ด์Šค๋ถ ๋“ฑ)๋กœ ๊ณต์œ ๋  ๋•Œ ์šฐ์„ ์ ์œผ๋กœ ํ™œ์šฉ๋˜๋Š” ์ •๋ณด๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

Slack -

Slack Open Graph example

KakaoTalk -

KakaoTalk Open Graph example

๋” ๋งŽ์€ ์˜คํ”ˆ ๊ทธ๋ž˜ํ”„ ์†์„ฑ ๋ณด๊ธฐ

<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" />
  • og:type: ํŽ˜์ด์ง€์˜ ์œ ํ˜•(E.g, website, video.movie)
  • og:site_name: ์†ํ•œ ์‚ฌ์ดํŠธ์˜ ์ด๋ฆ„
  • og:title: ํŽ˜์ด์ง€์˜ ์ด๋ฆ„(์ œ๋ชฉ)
  • og:description: ํŽ˜์ด์ง€์˜ ๊ฐ„๋‹จํ•œ ์„ค๋ช…
  • og:image: ํŽ˜์ด์ง€์˜ ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ ์ฃผ์†Œ(URL)
  • og:url: ํŽ˜์ด์ง€ ์ฃผ์†Œ(URL)

ํŠธ์œ„ํ„ฐ ์นด๋“œ(Twitter Cards)

์›นํŽ˜์ด์ง€๊ฐ€ ์†Œ์…œ ๋ฏธ๋””์–ด(ํŠธ์œ„ํ„ฐ)๋กœ ๊ณต์œ ๋  ๋•Œ ์šฐ์„ ์ ์œผ๋กœ ํ™œ์šฉ๋˜๋Š” ์ •๋ณด๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ํŠธ์œ„ํ„ฐ ์นด๋“œ ๋ณด๊ธฐ

<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" />
  • twitter:card: ํŽ˜์ด์ง€(์นด๋“œ)์˜ ์œ ํ˜•(E.g. summary, player)
  • twitter:site: ์†ํ•œ ์‚ฌ์ดํŠธ์˜ ์ด๋ฆ„
  • twitter:title: ํŽ˜์ด์ง€์˜ ์ด๋ฆ„(์ œ๋ชฉ)
  • twitter:description: ํŽ˜์ด์ง€์˜ ๊ฐ„๋‹จํ•œ ์„ค๋ช…
  • twitter:image: ํŽ˜์ด์ง€์˜ ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ ์ฃผ์†Œ(URL)
  • twitter:url: ํŽ˜์ด์ง€ ์ฃผ์†Œ(URL)

Favicon(ํŒŒ๋น„์ฝ˜, favorites icon)

์›นํŽ˜์ด์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์•„์ด์ฝ˜, ์›นํŽ˜์ด์ง€์˜ ๋กœ๊ณ ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ฃจํŠธ ๊ฒฝ๋กœ์— favicon.ico ํŒŒ์ผ์„ ์œ„์น˜ํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋กœ๋”ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— <link /> ๋ฅผ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. favicon.png ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด <link />๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.

ํŒŒ๋น„์ฝ˜ ์ด๋ฏธ์ง€๋Š” ๋ฃจํŠธ ๊ฒฝ๋กœ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!

<!--<link rel="shortcut icon" href="favicon.ico" />-->
<link rel="icon" href="./favicon.png" />
  • favicon.ico 64 x 64 (px) ๋˜๋Š” 32 x 32 ๋˜๋Š” 16 x 16
  • favicon.png 500 x 500 (px)

Starbucks

Starbucks

.ico ํŒŒ์ผ ์ œ์ž‘

์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•˜๋ฉด ์†์‰ฝ๊ฒŒ .ico ํŒŒ์ผ์„ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

iconifier.net

Reset.css

๊ฐ ๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋ณธ ์Šคํƒ€์ผ์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

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

Google Fonts

ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•  '๋‚˜๋ˆ”๊ณ ๋”•' ํฐํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

ํฐํŠธ ๋ผ์ด์„ ์Šค๋ฅผ ๊ผญ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!

Google Fonts์—์„œ ๊ณ ๋ฅธ ํฐํŠธ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

<link rel="preconnect" href="https://fonts.gstatic.com" />
<link href="https://fonts.googleapis.com/css2?family=Nanum+Gothic:wght@400;700&display=swap" rel="stylesheet" />

ํŽ˜์ด์ง€์— ํฐํŠธ๋ฅผ ์ ์šฉ(CSS ์ƒ์†)ํ•ฉ๋‹ˆ๋‹ค.

body {
    font-family: 'Nanum Gothic', sans-serif;
}

Google Material Icons

๊ตฌ๊ธ€์—์„œ ์ œ๊ณตํ•˜๋Š” ๋จธํ„ฐ๋ฆฌ์–ผ ์•„์ด์ฝ˜์„ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Getting started for web

<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<div class="material-icons">upload</div>

GSAP & ScrollToPlugin

GSAP(The GreenSock Animation Platform)์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ œ์–ดํ•˜๋Š” ํƒ€์ž„๋ผ์ธ ๊ธฐ๋ฐ˜์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ScrollToPlugin์€ ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ง€์›ํ•˜๋Š” GSAP ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ง€์‹์ด ๋›ฐ์–ด๋‚˜์ง€ ์•Š์•„๋„ ์ถฉ๋ถ„ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.5.1/gsap.min.js" integrity="sha512-IQLehpLoVS4fNzl7IfH8Iowfm5+RiMGtHykgZJl9AWMgqx0AmJ6cRWcB+GaGVtIsnC4voMfm8f2vwtY+6oPjpQ==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.5.1/ScrollToPlugin.min.js" integrity="sha512-nTHzMQK7lwWt8nL4KF6DhwLHluv6dVq/hNnj2PBN0xMl2KaMm1PM02csx57mmToPAodHmPsipoERRNn4pG7f+Q==" crossorigin="anonymous"></script>

.to() ์‚ฌ์šฉ๋ฒ• GSAP Easing

gsap.to(์š”์†Œ, ์‹œ๊ฐ„, ์˜ต์…˜)
// ๋˜๋Š”
TweenMax.to(์š”์†Œ, ์‹œ๊ฐ„, ์˜ต์…˜)
gsap.to(window, .7, {
  scrollTo: 0
});

Swiper

Swiper๋Š” ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ์ „ํ™˜๊ณผ ์—ฌ๋Ÿฌ ๊ธฐ๋ณธ ๋™์ž‘์„ ๊ฐ–์ถ˜ ํ˜„๋Œ€์ ์ธ ์Šฌ๋ผ์ด๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

Getting Started With Swiper

[2021.08.26 Updated]
๊ฐ•์˜์™€ ๊ฐ™์ด Swiper 6๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
7/8๋ฒ„์ „์˜ ์‚ฌ์šฉ๋ฒ•์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— 6๋ฒ„์ „์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

<!-- in HEAD -->
<link rel="stylesheet" href="https://unpkg.com/swiper@6.8.4/swiper-bundle.min.css" />
<script src="https://unpkg.com/swiper@6.8.4/swiper-bundle.min.js"></script>

<!-- in BODY -->
<div class="swiper-container">
  <div class="swiper-wrapper">
    <div class="swiper-slide">1</div>
    <div class="swiper-slide">2</div>
    <div class="swiper-slide">3</div>
  </div>
</div>

Swiper API(์˜ต์…˜)์„ ํ™•์ธํ•˜์„ธ์š”!

new Swiper(์š”์†Œ, ์˜ต์…˜);
new Swiper('.swiper-container', {
  direction: 'vertical', // ์ˆ˜์ง ์Šฌ๋ผ์ด๋“œ
  autoplay: true, // ์ž๋™ ์žฌ์ƒ ์—ฌ๋ถ€
  loop: true // ๋ฐ˜๋ณต ์žฌ์ƒ ์—ฌ๋ถ€
});

Youtube API

IFrame Player API๋ฅผ ํ†ตํ•ด YouTube ๋™์˜์ƒ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ํŠœ๋ธŒ ์˜์ƒ์ด ์ถœ๋ ฅ๋  ์œ„์น˜์— ์š”์†Œ๋ฅผ ์ง€์ •(์ƒ์„ฑ)ํ•ฉ๋‹ˆ๋‹ค.

<!-- in HEAD -->
<script defer src="./js/youtube.js"></script>

<!-- in BODY -->
<div id="player"></div>

onYouTubePlayerAPIReady ํ•จ์ˆ˜ ์ด๋ฆ„์€ Youtube IFrame Player API์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฆ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅด๊ฒŒ ์ง€์ •ํ•˜๋ฉด ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!
๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜๋Š” ์ „์—ญ(Global) ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!

ํ”Œ๋ ˆ์ด์–ด ๋งค๊ฐœ๋ณ€์ˆ˜(playerVars)์—์„œ ๋” ๋งŽ์€ ์˜ต์…˜์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// Youtube IFrame API๋ฅผ ๋น„๋™๊ธฐ๋กœ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

function onYouTubePlayerAPIReady() {
  // <div id="player"></div>
  new YT.Player('player', {
    videoId: 'An6LvWQuj_8', // ์žฌ์ƒํ•  ์œ ํŠœ๋ธŒ ์˜์ƒ ID
    playerVars: {
      autoplay: true, // ์ž๋™ ์žฌ์ƒ ์œ ๋ฌด
      loop: true, // ๋ฐ˜๋ณต ์žฌ์ƒ ์œ ๋ฌด
      playlist: 'An6LvWQuj_8' // ๋ฐ˜๋ณต ์žฌ์ƒํ•  ์œ ํŠœ๋ธŒ ์˜์ƒ ID ๋ชฉ๋ก
    },
    events: {
      // ์˜์ƒ์ด ์ค€๋น„๋˜์—ˆ์„ ๋•Œ,
      onReady: function (event) {
        event.target.mute(); // ์Œ์†Œ๊ฑฐ!
      }
    }
  });
}

ScrollMagic

ScrollMagic์€ ์Šคํฌ๋กค๊ณผ ์š”์†Œ์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.
๋Œ€ํ‘œ์ ์œผ๋กœ ์–ด๋–ค ์š”์†Œ๊ฐ€ ํ˜„์žฌ ํ™”๋ฉด์— ๋ณด์ด๋Š” ์ƒํƒœ์ธ์ง€๋ฅผ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ScrollMagic API

<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.8/ScrollMagic.min.js"></script>
new ScrollMagic
  .Scene({ // ๊ฐ์‹œํ•  ์žฅ๋ฉด(Scene)์„ ์ถ”๊ฐ€
    triggerElement: spyEl, // ๋ณด์—ฌ์ง ์—ฌ๋ถ€๋ฅผ ๊ฐ์‹œํ•  ์š”์†Œ๋ฅผ ์ง€์ •
    triggerHook: .8 // ํ™”๋ฉด์˜ 80% ์ง€์ ์—์„œ ๋ณด์—ฌ์ง ์—ฌ๋ถ€ ๊ฐ์‹œ
  })
  .setClassToggle(spyEl, 'show') // ์š”์†Œ๊ฐ€ ํ™”๋ฉด์— ๋ณด์ด๋ฉด show ํด๋ž˜์Šค ์ถ”๊ฐ€
  .addTo(new ScrollMagic.Controller()) // ์ปจํŠธ๋กค๋Ÿฌ์— ์žฅ๋ฉด์„ ํ• ๋‹น(ํ•„์ˆ˜!)

Lodash

Lodash๋Š” ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

Lodash API
Lodash throttle

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js" integrity="sha512-90vH1Z83AJY9DmlWa8WkjkV79yfS2n2Oxhsi2dZbIv0nC4E6m5AbH8Nh156kkM7JePmqD6tcZsfad1ueoaovww==" crossorigin="anonymous"></script>

JS Strict Mode

JavaScript๋ฅผ '์—„๊ฒฉ ๋ชจ๋“œ'๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
ํŒŒ์ผ ํ˜น์€ ํ•จ์ˆ˜์˜ ์ตœ์ƒ๋‹จ์— ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

'use strict';

'Strict Mode'๋Š” ECMAScript 5 ๋ฒ„์ „์— ์žˆ๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์œผ๋กœ์จ, ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์—„๊ฒฉํ•œ ์šด์šฉ ์ฝ˜ํ…์ŠคํŠธ ์•ˆ์—์„œ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ๋” ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—„๊ฒฉํ•œ ์ฝ˜ํ…์ŠคํŠธ๋Š” ๋ช‡๊ฐ€์ง€ ์•ก์…˜๋“ค์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋„๋ก ํ•˜๋ฉฐ, ์ข€ ๋” ๋งŽ์€ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

์—„๊ฒฉ ๋ชจ๋“œ์˜ ์žฅ์ 

  • ์ผ๋ฐ˜์ ์ธ ์ฝ”๋”ฉ ์‹ค์ˆ˜์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
  • ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์•ก์…˜์— ๋Œ€ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ (ex: ์ „์—ญ ๊ฐ์ฒด๋กœ ์ ‘๊ทผ)
  • ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฑฐ๋‚˜ ์ œ๋Œ€๋กœ ๊ณ ๋ ค๋˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋น„ํ™œ์„ฑํ™”

๋žœ๋คํ•œ ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜

// ๋ฒ”์œ„ ๋žœ๋ค ํ•จ์ˆ˜(์†Œ์ˆ˜์  2์ž๋ฆฌ๊นŒ์ง€)
function random(min, max) {
  // `.toFixed()`๋ฅผ ํ†ตํ•ด ๋ฐ˜ํ™˜๋œ ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋ฅผ,
  // `parseFloat()`์„ ํ†ตํ•ด ์†Œ์ˆ˜์ ์„ ๊ฐ€์ง€๋Š” ์ˆซ์ž ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜
  return parseFloat((Math.random() * (max - min) + min).toFixed(2))
}

Main menu in Header

<ul class="main-menu">
  <li class="item">
    <div class="item__name">COFFEE</div>
    <div class="item__contents">
      <div class="contents__menu">
        <ul class="inner">
          <li>
            <h4>์ปคํ”ผ</h4>
            <ul>
              <li>์Šคํƒ€๋ฒ…์Šค ์›๋‘</li>
              <li>์Šคํƒ€๋ฒ…์Šค ๋น„์•„</li>
              <li>์Šคํƒ€๋ฒ…์Šค ์˜ค๋ฆฌ๊ฐ€๋ฏธ</li>
            </ul>
          </li>
          <li>
            <h4>์—์Šคํ”„๋ ˆ์†Œ ์Œ๋ฃŒ</h4>
            <ul>
              <li>๋„ํ”ผ์˜ค</li>
              <li>์—์Šคํ”„๋ ˆ์†Œ ๋งˆํ‚ค์•„๋˜</li>
              <li>์•„๋ฉ”๋ฆฌ์นด๋…ธ</li>
              <li>๋งˆํ‚ค์•„๋˜</li>
              <li>์นดํ‘ธ์น˜๋…ธ</li>
              <li>๋ผ๋–ผ</li>
              <li>๋ชจ์นด</li>
              <li>๋ฆฌ์ŠคํŠธ๋ ˆ๋˜ ๋น„์•ˆ์ฝ”</li>
            </ul>
          </li>
          <li>
            <h4>์ปคํ”ผ ์ด์•ผ๊ธฐ</h4>
            <ul>
              <li>์Šคํƒ€๋ฒ…์Šค ๋กœ์ŠคํŠธ ์ŠคํŒฉํŠธ๋Ÿผ</li>
              <li>์ตœ์ƒ์˜ ์•„๋ผ๋น„์นด ์›๋‘</li>
              <li>ํ•œ ์ž”์˜ ์ปคํ”ผ๊ฐ€ ์™„์„ฑ๋˜๊ธฐ๊นŒ์ง€</li>
              <li>ํด๋กœ๋ฒ„ยฎ ์ปคํ”ผ ์ถ”์ถœ ์‹œ์Šคํ…œ</li>
            </ul>
          </li>
          <li>
            <h4>์ตœ์ƒ์˜ ์ปคํ”ผ๋ฅผ ์ฆ๊ธฐ๋Š” ๋ฒ•</h4>
            <ul>
              <li>์ปคํ”ผ ํ”„๋ ˆ์Šค</li>
              <li>ํ‘ธ์–ด ์˜ค๋ฒ„</li>
              <li>์•„์ด์Šค ํ‘ธ์–ด ์˜ค๋ฒ„</li>
              <li>์ปคํ”ผ ๋ฉ”์ด์ปค</li>
              <li>๋ฆฌ์ €๋ธŒ๋ฅผ ๋งค์žฅ์—์„œ ๋‹ค์–‘ํ•˜๊ฒŒ ์ฆ๊ธฐ๋Š” ๋ฒ•</li>
            </ul>
          </li>
        </ul>
      </div>
      <div class="contents__texture">
        <div class="inner">
          <h4>๋‚˜์™€ ์–ด์šธ๋ฆฌ๋Š” ์ปคํ”ผ ์ฐพ๊ธฐ</h4>
          <p>์Šคํƒ€๋ฒ…์Šค๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์–ด์šธ๋ฆฌ๋Š” ์ปคํ”ผ๋ฅผ ์ฐพ์•„๋“œ๋ฆฝ๋‹ˆ๋‹ค.</p>
          <h4>์ตœ์ƒ์˜ ์ปคํ”ผ๋ฅผ ์ฆ๊ธฐ๋Š” ๋ฒ•</h4>
          <p>์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ํ’๋ฏธ์˜ ์ปคํ”ผ๋ฅผ ์ฆ๊ฒจ๋ณด์„ธ์š”.</p>
        </div>
      </div>
    </div>
  </li>
  <li class="item">
    <div class="item__name">MENU</div>
    <div class="item__contents">
      <div class="contents__menu">
        <ul class="inner">
          <li>
            <h4>์Œ๋ฃŒ</h4>
            <ul>
              <li>์ฝœ๋“œ ๋ธŒ๋ฃจ</li>
              <li>๋ธŒ๋ฃจ๋“œ ์ปคํ”ผ</li>
              <li>์—์Šคํ”„๋ ˆ์†Œ</li>
              <li>ํ”„๋ผํ‘ธ์น˜๋…ธ</li>
              <li>๋ธ”๋ Œ๋””๋“œ ์Œ๋ฃŒ</li>
              <li>์Šคํƒ€๋ฒ…์Šค ํ”ผ์ง€์˜ค</li>
              <li>ํ‹ฐ(ํ‹ฐ๋ฐ”๋‚˜)</li>
              <li>๊ธฐํƒ€ ์ œ์กฐ ์Œ๋ฃŒ</li>
              <li>์Šคํƒ€๋ฒ…์Šค ์ฃผ์Šค(๋ณ‘์Œ๋ฃŒ)</li>
            </ul>
          </li>
          <li>
            <h4>ํ‘ธ๋“œ</h4>
            <ul>
              <li>๋ฒ ์ด์ปค๋ฆฌ</li>
              <li>์ผ€์ต</li>
              <li>์ƒŒ๋“œ์œ„์น˜ & ์ƒ๋Ÿฌ๋“œ</li>
              <li>๋”ฐ๋œปํ•œ ํ‘ธ๋“œ</li>
              <li>๊ณผ์ผ & ์š”๊ฑฐํŠธ</li>
              <li>์Šค๋‚ต & ๋ฏธ๋‹ˆ ๋””์ €ํŠธ</li>
              <li>์•„์ด์Šคํฌ๋ฆผ</li>
            </ul>
          </li>
          <li>
            <h4>์ƒํ’ˆ</h4>
            <ul>
              <li>๋จธ๊ทธ</li>
              <li>๊ธ€๋ผ์Šค</li>
              <li>ํ”Œ๋ผ์Šคํ‹ฑ ํ…€๋ธ”๋Ÿฌ</li>
              <li>์Šคํ…Œ์ธ๋ฆฌ์Šค ํ…€๋ธ”๋Ÿฌ</li>
              <li>๋ณด์˜จ๋ณ‘</li>
              <li>์•ก์„ธ์„œ๋ฆฌ</li>
              <li>์ปคํ”ผ ์šฉํ’ˆ</li>
              <li>ํŒจํ‚ค์ง€ ํ‹ฐ(ํ‹ฐ๋ฐ”๋‚˜)</li>
            </ul>
          </li>
          <li>
            <h4>์นด๋“œ</h4>
            <ul>
              <li>์‹ค๋ฌผ์นด๋“œ</li>
              <li>e-Gift ์นด๋“œ</li>
            </ul>
          </li>
          <li>
            <h4>๋ฉ”๋‰ด ์ด์•ผ๊ธฐ</h4>
            <ul>
              <li>์ฝœ๋“œ ๋ธŒ๋ฃจ</li>
              <li>์Šคํƒ€๋ฒ…์Šค ํ‹ฐ๋ฐ”๋‚˜</li>
            </ul>
          </li>
        </ul>
      </div>
      <div class="contents__texture">
        <div class="inner">
          <h4 class="new">์Šคํƒ€๋ฒ…์Šค ํ‹ฐ๋ฐ”๋‚˜</h4>
          <p>๋‹ค์–‘ํ•œ ์ฐป์žŽ๊ณผ ํ–ฅ์‹ ๋ฃŒ ๋“ฑ ๊ฐœ์„ฑ์žˆ๋Š” ์žฌ๋ฃŒ๋กœ ์ƒˆ๋กœ์šด ๋ง›๊ณผ ํ–ฅ์˜ ํ‹ฐ๋ฅผ ์„ ๋ณด์ž…๋‹ˆ๋‹ค.</p>
        </div>
      </div>
    </div>
  </li>
  <li class="item">
    <div class="item__name">STORE</div>
    <div class="item__contents">
      <div class="contents__menu">
        <ul class="inner">
          <li>
            <h4>๋งค์žฅ ์ฐพ๊ธฐ</h4>
            <ul>
              <li>ํ€ต ๊ฒ€์ƒ‰</li>
              <li>์ง€์—ญ ๊ฒ€์ƒ‰</li>
              <li>My ๋งค์žฅ</li>
            </ul>
          </li>
          <li>
            <h4>๋งค์žฅ ์ด์•ผ๊ธฐ</h4>
            <ul>
              <li>์ฒญ๋‹ด์Šคํƒ€</li>
              <li>ํ‹ฐ๋ฐ”๋‚˜ ์ธ์ŠคํŒŒ์ด์–ด๋“œ ๋งค์žฅ</li>
              <li>ํŒŒ๋ฏธ์—ํŒŒํฌ</li>
            </ul>
          </li>
        </ul>
      </div>
      <div class="contents__texture">
        <div class="inner">
          <h4>๋งค์žฅ ์ฐพ๊ธฐ</h4>
          <p>๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ๋งค์žฅ์„ ์ฐพ์•„๋ณด์„ธ์š”.</p>
          <h4 class="new">์ฒญ๋‹ด์Šคํƒ€</h4>
          <p>์Šคํƒ€๋ฒ…์Šค 1,000ํ˜ธ์ ์ธ ์ฒญ๋‹ด์Šคํƒ€์ ์„ ๋งŒ๋‚˜๋ณด์„ธ์š”.</p>
        </div>
      </div>
    </div>
  </li>
  <li class="item">
    <div class="item__name">RESPONSIBILITY</div>
    <div class="item__contents">
      <div class="contents__menu">
        <ul class="inner">
          <li>
            <h4>์ง€์—ญ ์‚ฌํšŒ ์ฐธ์—ฌ ํ™œ๋™</h4>
            <ul>
              <li>ํšŒ๋ง๋ฐฐ๋‹ฌ ์บ ํŽ˜์ธ</li>
              <li>์žฌ๋Šฅ๊ธฐ๋ถ€ ์นดํŽ˜ ์†Œ์‹</li>
              <li>์ปค๋ฎค๋‹ˆํ‹ฐ ์Šคํ† ์–ด</li>
              <li>์ฒญ๋…„์ธ์žฌ ์–‘์„ฑ</li>
              <li>์šฐ๋ฆฌ ๋†์‚ฐ๋ฌผ ์‚ฌ๋ž‘ ์บ ํŽ˜์ธ</li>
              <li>์šฐ๋ฆฌ ๋ฌธํ™” ์ง€ํ‚ค๊ธฐ</li>
            </ul>
          </li>
          <li>
            <h4>ํ™˜๊ฒฝ๋ณดํ˜ธ ํ™œ๋™</h4>
            <ul>
              <li>ํ™˜๊ฒฝ ๋ฐœ์ž๊ตญ ์ค„์ด๊ธฐ</li>
              <li>์ผํšŒ์šฉ ์ปต ์—†๋Š” ๋งค์žฅ</li>
              <li>์ปคํ”ผ ์›๋‘ ์žฌํ™œ์šฉ</li>
            </ul>
          </li>
          <li>
            <h4>์œค๋ฆฌ ๊ตฌ๋งค</h4>
            <ul>
              <li>์œค๋ฆฌ์  ์›๋‘ ๊ตฌ๋งค</li>
              <li>๊ณต์ •๋ฌด์—ญ ์ธ์ฆ</li>
              <li>์ปคํ”ผ ๋†๊ฐ€ ์ง€์› ํ™œ๋™</li>
            </ul>
          </li>
          <li>
            <h4>๊ธ€๋กœ๋ฒŒ ์‚ฌํšŒ ๊ณตํ—Œ</h4>
            <ul>
              <li>์œค๋ฆฌ๊ฒฝ์˜ ๋ณด๊ณ ์„œ</li>
              <li>์Šคํƒ€๋ฒ…์Šค ์žฌ๋‹จ</li>
              <li>์ง€๊ตฌ์ดŒ ๋ด‰์‚ฌ์˜ ๋‹ฌ</li>
            </ul>
          </li>
        </ul>
      </div>
      <div class="contents__texture">
        <div class="inner">
          <h4>์ปคํ”ผ์›๋‘ ์žฌํ™œ์šฉ</h4>
          <p>์Šคํƒ€๋ฒ…์Šค ์ปคํ”ผ ์›๋‘๋ฅผ ์žฌํ™œ์šฉ ํ•ด๋ณด์„ธ์š”.</p>
        </div>
      </div>
    </div>
  </li>
  <li class="item">
    <div class="item__name">MY STARBUCKS REWARDS</div>
    <div class="item__contents">
      <div class="contents__menu">
        <ul class="inner">
          <li>
            <h4>๋งˆ์ด ์Šคํƒ€๋ฒ…์Šค ๋ฆฌ์›Œ๋“œ</h4>
            <ul>
              <li>๋งˆ์ด ์Šคํƒ€๋ฒ…์Šค ๋ฆฌ์›Œ๋“œ ์†Œ๊ฐœ</li>
              <li>๋“ฑ๊ธ‰ ๋ฐ ํ˜œํƒ</li>
              <li>์Šคํƒ€๋ฒ…์Šค ๋ณ„</li>
              <li>์ž์ฃผํ•˜๋Š” ์งˆ๋ฌธ</li>
            </ul>
          </li>
          <li>
            <h4>์Šคํƒ€๋ฒ…์Šค ์นด๋“œ</h4>
            <ul>
              <li>์Šคํƒ€๋ฒ…์Šค ์นด๋“œ ์†Œ๊ฐœ</li>
              <li>์Šคํƒ€๋ฒ…์Šค ์นด๋“œ ๊ฐค๋Ÿฌ๋ฆฌ</li>
              <li>๋“ฑ๋ก ๋ฐ ์กฐํšŒ</li>
              <li>์ถฉ์ „ ๋ฐ ์ด์šฉ์•ˆ๋‚ด</li>
              <li>๋ถ„์‹ค์‹ ๊ณ /ํ™˜๋ถˆ์‹ ์ฒญ</li>
              <li>์ž์ฃผํ•˜๋Š” ์งˆ๋ฌธ</li>
            </ul>
          </li>
          <li>
            <h4>์Šคํƒ€๋ฒ…์Šค ์นด๋“œ e-Gift</h4>
            <ul>
              <li>์Šคํƒ€๋ฒ…์Šค ์นด๋“œ e-Gift ์†Œ๊ฐœ</li>
              <li>์ด์šฉ์•ˆ๋‚ด</li>
              <li>์„ ๋ฌผํ•˜๊ธฐ</li>
              <li>์ž์ฃผํ•˜๋Š” ์งˆ๋ฌธ</li>
            </ul>
          </li>
        </ul>
      </div>
      <div class="contents__texture">
        <div class="inner">
          <h4>์Šคํƒ€๋ฒ…์Šค ์นด๋“œ ๋“ฑ๋กํ•˜๊ธฐ</h4>
          <p>์นด๋“œ ๋“ฑ๋ก ํ›„ ๋ฆฌ์›Œ๋“œ ์„œ๋น„์Šค๋ฅผ ๋ˆ„๋ฆฌ๊ณ  ์‚ฌ์šฉ๋‚ด์—ญ๋„ ์กฐํšŒํ•ด๋ณด์„ธ์š”.</p>
        </div>
      </div>
    </div>
  </li>
  <li class="item">
    <div class="item__name">WHAT'S NEW</div>
    <div class="item__contents">
      <div class="contents__menu">
        <ul class="inner">
          <li>
            <h4>ํ”„๋กœ๋ชจ์…˜ & ์ด๋ฒคํŠธ</h4>
            <ul>
              <li>์ „์ฒด</li>
              <li>์Šคํƒ€๋ฒ…์Šค ์นด๋“œ</li>
              <li>๋งˆ์ด ์Šคํƒ€๋ฒ…์Šค ๋ฆฌ์›Œ๋“œ</li>
              <li>์˜จ๋ผ์ธ</li>
              <li>2017 ์Šคํƒ€๋ฒ…์Šค ํ”Œ๋ž˜๋„ˆ</li>
            </ul>
          </li>
          <li>
            <h4>์ƒˆ์†Œ์‹</h4>
            <ul>
              <li>์ „์ฒด</li>
              <li>์ƒํ’ˆ ์ถœ์‹œ</li>
              <li>์Šคํƒ€๋ฒ…์Šค์˜ ๋ฌธํ™”</li>
              <li>์Šคํƒ€๋ฒ…์Šค ์‚ฌํšŒ๊ณตํ—Œ</li>
              <li>์Šคํƒ€๋ฒ…์Šค ์นด๋“œ์ถœ์‹œ</li>
            </ul>
          </li>
          <li>
            <h4>๋งค์žฅ๋ณ„ ์ด๋ฒคํŠธ</h4>
            <ul>
              <li>์ผ๋ฐ˜ ๋งค์žฅ</li>
              <li>์‹ ๊ทœ ๋งค์žฅ</li>
            </ul>
          </li>
        </ul>
      </div>
      <div class="contents__texture">
        <div class="inner">
          <h4>๋งค์žฅ๋ณ„ ์ด๋ฒคํŠธ</h4>
          <p>์Šคํƒ€๋ฒ…์Šค์˜ ๋งค์žฅ ์ด๋ฒคํŠธ ์ •๋ณด๋ฅผ ํ™•์ธ ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</p>
          <h4>์†Œ์…œ ์Šคํƒ€๋ฒ…์Šค</h4>
          <p>๋‹ค์–‘ํ•œ ์Šคํƒ€๋ฒ…์Šค SNS ์ฑ„๋„์„ ํ†ตํ•ด ์Šคํƒ€๋ฒ…์Šค๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!</p>
        </div>
      </div>
    </div>
  </li>
</ul>

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published