์ด๋ฒ ์คํ๋ฒ ์ค ๋๋ฉํ์ด์ง(ํํ์ด์ง) ๊ตฌํ์
์ฌ์ฉ๋ ์ ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊ณผ
๋ช ๊ฐ์ง ์ฌ์ดํธ๋ค์ ๋ํด ์ ์ด๋ณด์๋ค.
โฐ(โก-โก)ูโโฎน
.
.
.
Open Graph Protocol
Open Graph Protocol์ ํ์ด์ค๋ถ์์ ๋ง๋ ๋ฉํ ํ๊ทธ๋ก,
์์ ๋ฏธ๋์ด ์๋น์ค(ํ์ด์ค๋ถ, ์นด์นด์คํก ๋ฑ)๋ก ์น ์ฌ์ดํธ๋ฅผ ๊ณต์ ํ ๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ์ญํ ์ ํ๋ค.
โป ๋ณธ ๊ตฌํ์์ Kakaotalk์ Open Graph Protocol์ ์ฌ์ฉํ์๋ค.
<!-- Kakaotalk Open Graph protocol -->
<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" />
ex) Kakaotalk
Twitter Cards
ํธ์ํฐ์๋ Twitter Cards๋ผ๋ ๊ธฐ๋ฅ์ด ์๋ค.
140์์ ํ ์คํธ๋ง ํํํ ์ ์๋ ํธ์ํฐ์ ์ ์ฝ์ ํ์ฅํ ์ ์๋ ๊ธฐ๋ฅ์ผ๋ก
์ถ๊ฐ์ ์ธ ์ด๋ฏธ์ง๋ ๋ด์ฉ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์ฒ๋ผ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค.
โป ๋ณธ ๊ตฌํ์์ ์ฌ์ฉ๋ Twitter Cards ์ฝ๋
<!-- 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" />
ex) Twitter
Reset CSS
Reset CSS๋ ์น ๋ธ๋ผ์ฐ์ ๋ง๋ค ๊ฐ๊ธฐ ๋ค๋ฅธ default ์คํ์ผ์ด ์ง์ ๋์ด ์์ด,
์ด๋ฅผ ์ด๊ธฐํํจ์ผ๋ก์จ ๋ค์ํ ์น๋ธ๋ผ์ฐ์ ์์๋ ๋์ผํ ์คํ์ผ์ด ์ ์ฉ๋๋๋ก ํ๋ ์ค์ ์ด๋ค.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reset-css@5.0.1/reset.min.css" />
https://www.jsdelivr.com/package/npm/reset-css
Google Fonts
Google Fonts๋ ๋ผ์ด์ ์ค์์ ์์ ๋ก์ด 952๊ฐ์ ๊ธ๊ผด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
โป ๋ณธ ๊ตฌํ์์ 'Nanum Gothic' ์ฒด๋ฅผ ์ฌ์ฉํ์๋ค.
Google Material Icons
Google Material Icons๋ ๊ตฌ๊ธ์ด ์ ๊ณตํ๋ ์์ด์ฝ ๋์์ธ ๋ชจ์์ด๋ค.
lodash.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ
lodash ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค์ํ ์ ํธ๋ฆฌํฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
array, object, string ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋๋ก ํด์ค๋ค.
์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ฐ๋ฐํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค ์ค ํ๋๋ผ๊ณ ํ๋ค.
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
https://cdnjs.com/libraries/lodash.js
GSAP ๋ผ์ด๋ธ๋ฌ๋ฆฌ
GSAP์ GreenSock Animation Platform์ ์ฝ์๋ก,
GreenSock์์ ๋ง๋ ํ์๋ผ์ธ ๊ธฐ๋ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ ๋๋ฉ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
์ด GSAP ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด, ๋ณด๋ค ๋ ์ธ๋ฐํ๊ณ ํจ๊ณผ์ ์ธ ์ ๋๋ฉ์ด์ ์ค์ ์ด ๊ฐ๋ฅํด์ง๋ค.
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/gsap.min.js" integrity="sha512-H6cPm97FAsgIKmlBA4s774vqoN24V5gSQL4yBTDOY2su2DeXZVhQPxFK4P6GPdnZqM9fg1G3cMv5wD7e6cFLZQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
https://cdnjs.com/libraries/gsap
ScrollToPlugin
GSAP ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ธฐ๋ฅ๋ณ๋ก js ํ์ผ์ ๋ฐ๋ก๋ฐ๋ก ์ ๊ณตํ๊ธฐ ๋๋ฌธ์,
์ํ๋ ๊ธฐ๋ฅ๋ง ์ ํ์ ์ผ๋ก ๊ณจ๋ผ ์ธ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
๊ทธ์ ๋ํ์ ์ธ ๊ธฐ๋ฅ ์ค์ ScrollToPlugin์ด ์๋ค.
ScrollToPlugin์ ์คํฌ๋กค ์ ๋๋ฉ์ด์ ์ ์ง์ํ๋ GSAP ํ๋ฌ๊ทธ์ธ์ด๋ค.
โป ๋ณธ ๊ตฌํ์์ Scroll To Top ๋ฒํผ์ ๋ง๋ค ๋ ์ด ํ๋ฌ๊ทธ์ธ์ด ์ฌ์ฉ๋์๋ค.
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/ScrollToPlugin.min.js" integrity="sha512-agNfXmEo6F+qcj3WGryaRvl9X9wLMQORbTt5ACS9YVqzKDMzhRxY+xjgO45HCLm61OwHWR1Oblp4QSw/SGh9SA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
https://greensock.com/scrolltoplugin/
Swiper ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Swiper ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋์จ์ด ๊ฐ์ ์ ํ๊ณผ ์ฌ๋ฌ ๊ธฐ๋ณธ ๋์์ ๊ฐ์ถ ํ๋์ ์ธ ์ฌ๋ผ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
<์ฃผ์> Swiper ๋ผ์ด๋ธ๋ฌ๋ฆฌ version์ ๋ฐ๋ผ ์ฝ๊ฐ์ ์ฐจ์ด๊ฐ ์กด์ฌํ๋ค.
*** ๋ณธ ๊ตฌํ์์๋ ๊ฐ์ฅ ์ต๊ทผ ๋ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค๊ฐ ๊ณ์ ์๋ผ์ ์ ๋ฅผ ๋จน์๋ค๋ ์ฌ์ค...ใ
โป ๋ณธ ๊ตฌํ์์ ๊ณต์ง์ฌํญ ์ฌ๋ผ์ด๋ & ํ๋ก๋ชจ์ ์ด๋ฏธ์ง ์ฌ๋ผ์ด๋๋ฅผ ๋ง๋ค ๋ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์๋ค์ด ์ฌ์ฉ๋์๋ค.
<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>
https://swiperjs.com/get-started
ScrollMagic ๋ผ์ด๋ธ๋ฌ๋ฆฌ
ScrollMagic ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์คํฌ๋กค๊ณผ ์์์ ์ํธ ์์ฉ์ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
โป ๋ณธ ๊ตฌํ์์ ์คํฌ๋กค ์์น๋ฅผ ๊ณ์ฐํ์ฌ ์์๋ค์ด ์์ชฝ์์ ๋์ค๋ ์ ๋๋ฉ์ด์ ์ ์ค ๋ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.8/ScrollMagic.min.js" integrity="sha512-8E3KZoPoZCD+1dgfqhPbejQBnQfBXe8FuwL4z/c8sTrgeDMFEnoyTlH3obB4/fV+6Sg0a0XF+L/6xS4Xx1fUEg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
https://cdnjs.com/libraries/ScrollMagic
Youtube IFrame Player API
IFrame Player API๋ฅผ ํตํด ์น์ฌ์ดํธ์ YouTube ๋์์ ํ๋ ์ด์ด๋ฅผ ํผ๊ฐ๊ณ JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ ์ด์ด๋ฅผ ์ ์ดํ ์ ์๋ค.
โป ๋ณธ ๊ตฌํ์ ์ฌ์ฉ๋ youtube.js ์ฝ๋
// 2. This code loads the IFrame Player API code asynchronously.
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads.
function onYouTubeIframeAPIReady() { // ํจ์๋ช
๋ณ๊ฒฝํ๋ฉด X
// <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() // target(ํ์ฌ ์ฌ์๋๊ณ ์๋ ์์) ์์๊ฑฐ
}
}
});
}
https://developers.google.com/youtube/iframe_api_reference?hl=ko#Getting_Started
Netlify
Netlify๋ Web ํ๋ก์ ํธ๋ฅผ ์ ์ ์๋ฒ๋ก ์ฝ๊ฒ ํธ์คํ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์๋น์ค์ด๋ค.
Netlify๋ ๋ฐฐํฌ๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ํ๋๋ก ํด์ฃผ๋ฉด์, GitHub, GitLab, Bitbucket ๋ฑ๊ณผ ์ฐ๋ํ์ฌ ๋ณ๊ฒฝ์ฌํญ๋ ์๋์ผ๋ก ์ ์ฉํด์ค๋ค.
์ด๋ ์น์ฌ์ดํธ์ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ๋์์ค๋ค๋ ์ฅ์ ์ด ์๋ค.
๋๊ธ