๐จโ๐ป HTML CSS ๋ฐ JS๋ฅผ ์ฌ์ฉํ์ฌ ์๋ต ๋ก๊ทธ์ธ ํ์ด์ง ๋ง๋ค๊ธฐ๐ฅ
๐ ์๋ ํ์ธ์, ์ฌ๋ํ๋ ๊ฐ๋ฐ์ ์ฌ๋ฌ๋ถ.๐ฉโ๐ป๐จโ๐ป, ์ค๋ ์ฐ๋ฆฌ๋ HTML, CSS, JS, ๊ทธ๋ฆฌ๊ณ GreenSock ์ ๋๋ฉ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ค๋ฅธ ์๋ต ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ์ฝ๊ฒ ๋ง๋ค์ด์ ์ ๋๋ฉ์ด์ ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ณผ ์ ์์ต๋๋ค.
HTML๊ณผ CSS๋ก ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ๋ง๋๋ ๊ฒ์ ๋งค์ฐ ๊ฐ๋จํ ์์ ์ด์ง๋ง, ๋ฌด์์ด ์ฐ๋ฆฌ์ ๋๊ธ์ ๋์ฑ ์ฌ๋ฏธ์๊ฒ ํ๋์ง ์์ญ๋๊น!๋ค, ์ ๊ฐ ํ ๋ก ํด ๋ณด๊ฒ ์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ ์ ์ ์ฝ๋ ํํ ๋ฆฌ์ผ์ ์๋ฒ์ ์ดํด๋ณด์.๋๋ ์๋์ ๋์์์ ๋ณผ ์ ์๋ค.
์ฝ๋ ์์ต์
If you want to see more web design tutorials just like theseย ! Please consider subscribing to our Youtube Channel.
์ด ๊ธ์ ์๋ณธ ์ฝ๋๋ Github์์ ์ฐพ์ ์ ์์ผ๋ฉฐ, ๋ชจ๋ ๊ทธ๋ฆผ๊ณผ ๋ ๋ง์ ๋ด์ฉ์ ํฌํจํ๋ฏ๋ก, ์๋์ ์ ์๋ ๋งํฌ๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ์๋ณธ ์ฝ๋๋ฅผ ์ป์ผ์ญ์์ค
๋ฐ๋ผ์ ์ด ์ธ์ฝ๋ฉ ๋ธ๋ก๊ทธ ๊ธ์์ ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ง ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํ๋ ๊ตฌ์กฐ ๊ตฌ์ถ ์์คํ , ์ฆ CSS Flexbox์ CSS Grid๋ฅผ ์๊ฐํ ๊ฒ์ด๋ค.
๋๋ ์ด ๋ ์ฌ๋์ ์ฃผ์ ์ฐจ์ด๊ฐ ๋ฌด์์ธ์ง ์๋?
๋ง์ฝ ๊ทธ๋ ๋ค๋ฉด ๋น์ ์ ์ ๋์ ์ธ ์ฒ์ฌ์ด์ง๋ง, ๊ทธ๋ ์ง ์๋ค๋ฉด, ๊ฐ๋จํ๊ฒ ์ค๋ช ํ์๋ฉด, CSS Flexbox๋ 1์ฐจ์ ๋ ์ด์์ ์์คํ ์ด๊ณ , CSS grid๋ 2์ฐจ์ ๋ ์ด์์ ์์คํ ์ด๋ค.
ํ ์ ์๋ค๐, ์ง๊ธ ์ด๋๋ก!์ธ์ฝ๋ฉ ๋ถ๋ถ์ผ๋ก ๋ค์ด๊ฐ์๋ค, ์ฌ๊ธฐ ์์ต๋๋ค!!!
์ฐ์ ํ๋ก์ ํธ ํด๋ ๊ตฌ์กฐ๋ถํฐ ์์ํฉ๋๋ค๐
ย
์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋ 4๊ฐ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๊ทธ ์ค์์๐
๋ฐ๋ผ์ ์ด ํ์ผ๋ค์ ๋ง๋ ํ์ ๊ฐ์ฅ ์ข์ํ๋ ์ฝ๋ ํธ์ง๊ธฐ๋ก ์ด๋ํฉ๋๋ค.
์ฐ์ , ๋ฃจํธ, HTML, ๋ณ์ ๋ฆฌ์ ์ ํฌํจํ CSS ํ์ผ์์ ๊ธฐ๋ณธ์ ์ธ ๋ณ๊ฒฝ์ ํ ๊ฒ์ ๋๋ค.
ํ๊ฒฉcss
/* ==== "Inter" FONT-FAMILY FROM FONTS.GOOGLE.COM ==== */
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap");
/* ==== ROOT RESET ==== */
* {
ย margin: 0;
ย padding: 0;
ย box-sizing: border-box;
ย font-family: "Inter", sans-serif;
}
*,
*::before,
*::after {
ย box-sizing: border-box;
}
/* ==== CSS VARIABLES ==== */
:root {
โ-โprimary-color: #335eea;
โ-โlink-color: #506690;
โ-โbtn-hover-color: #2b50c7;
โ-โlg-heading: #161c2d;
โ-โtext-content: #869ab8;
โ-โfixed-header-height: 4.5rem;
}
/* ==== RESET HTML ==== */
body {
ย width: 100%;
ย height: 100vh;
ย overflow-x: hidden;
ย background-color: #fafbfb;
}
ul li {
ย list-style-type: none;
}
a {
ย text-decoration: none;
}
button {
ย background-color: transparent;
ย border: none;
ย outline: none;
ย cursor: pointer;
}
์ข์, ์ข์!๋ผ๋, ์ฆ HTML์ ์ถ๊ฐํฉ๋๋ค.๊ทธ๋ฌ๋ ์ ํฌ ์์ธ์ ๋ค์ด์ค์ธ์.html ํ์ผ๋ก ๊ธฐ๋ณธ ํ๊ทธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์์ธhtml
<!DOCTYPE html>
<html lang="en">
ย <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>Responsive Landing Page using HTML, CSS & Javascript</title>
<!โ-โ==== STYLE.CSS ==== โ
ย <link rel="stylesheet" href="./css/style.css" />
<!โ-โ==== REMIXICON CDN ==== โ
ย <link href="https://cdn.jsdelivr.net/npm/[email protected]/fonts/remixicon.css" rel="stylesheet" />
<!โ-โ==== ANIMATE ON SCROLL CSS CDN ==== โ
ย <link href="https://unpkg.com/[email protected]/dist/aos.css" rel="stylesheet" />
ย </head>
ย <body>
ย <!โ-โ==== ANIMATE ON SCROLL JS CDN โ
ย <script src="https://unpkg.com/[email protected]/dist/aos.js"></script>
ย <!โ-โ==== GSAP CDN ==== โ
ย <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.8.0/gsap.min.js"></script>
ย <!โ-โ==== SCRIPT.JS ==== โ
ย <script src="./script.js" defer></script>
ย </body>
</html>
์์ฃผ ์ข์์!์ด์ ์กฐ๊ธ ๋ ๋ค๋น๊ฒ์ด์
์ ๋ง๋ค์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.๋ ๊ทธ๊ฑฐ ์์?ํ์ ๋ชจ์์ ๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์ผ๋ถ๋ก์ ๋ฐฉ๋ฌธ์๊ฐ ์ ๋ณด์ ์ก์ธ์คํ ์ ์๋๋ก ๋์์ค๋๋ค.
ย
ํ ์ ์๋ค๐, ํ์ฌ, ์์ธ์navbar์ ํ๊ทธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.html ํ์ผ
์์ธhtml
<!DOCTYPE html>
<html lang="en">
ย <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>Responsive Landing Page using HTML, CSS & Javascript</title>
<!โ-โ==== STYLE.CSS ==== โ
ย <link rel="stylesheet" href="./css/style.css" />
<!โ-โ==== REMIXICON CDN ==== โ
ย <link
ย href="https://cdn.jsdelivr.net/npm/[email protected]/fonts/remixicon.css" rel="stylesheet" />
<!โ-โ==== ANIMATE ON SCROLL CSS CDN ==== โ
ย <link href="https://unpkg.com/[email protected]/dist/aos.css" rel="stylesheet" />
ย </head>
ย <body>
ย <!โ-โ==== HEADER ==== โ
ย <header class="container header">
ย <!โ-โ==== NAVBAR ==== โ
ย <nav class="nav">
ย <div class="logo">
ย <h2>Devkit.</h2>
ย </div>
<div class="nav_menu" id="nav_menu">
ย <button class="close_btn" id="close_btn">
ย <i class="ri-close-fill"></i>
ย </button>
<ul class="nav_menu_list">
ย <li class="nav_menu_item">
ย <a href="#" class="nav_menu_link">account</a>
ย </li>
ย <li class="nav_menu_item">
ย <a href="#" class="nav_menu_link">about</a>
ย </li>
ย <li class="nav_menu_item">
ย <a href="#" class="nav_menu_link">service</a>
ย </li>
ย <li class="nav_menu_item">
ย <a href="#" class="nav_menu_link">contact</a>
ย </li>
ย </ul>
ย </div>
<button class="toggle_btn" id="toggle_btn">
ย <i class="ri-menu-line"></i>
ย </button>
ย </nav>
ย </header>
<!โ-โ==== ANIMATE ON SCROLL JS CDN โ
ย <script src="https://unpkg.com/[email protected]/dist/aos.js"></script>
ย <!โ-โ==== GSAP CDN ==== โ
ย <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.8.0/gsap.min.js"></script>
ย <!โ-โ==== SCRIPT.JS ==== โ
ย <script src="./script.js" defer></script>
ย </body>
</html>
๋ ๋ณด๊ธฐ ์ข๊ฒ ์์ ์คํ์ผ์ ์ถ๊ฐํฉ์๋ค.
ํ๊ฒฉcss
/* ==== CONTAINER ==== */
.container {
ย width: 100%;
}
@media screen and (min-width: 1040px) {
ย .container {
ย width: 1040px;
ย margin: 0 auto;
ย }
}
/* ==== HEADER ==== */
.header {
ย height: var(โ-โfixed-header-height);
ย padding: 0 1.7rem;
}
/* ==== NAV ==== */
.nav {
ย width: 100%;
ย height: 100%;
ย display: flex;
ย align-items: center;
ย justify-content: space-between;
}
/* ==== LOGO ==== */
.logo h2 {
ย font-size: 28px;
ย color: var(โ-โprimary-color);
}
/* ==== NAV-MENU ==== */
.nav_menu_list {
ย display: flex;
ย align-items: center;
}
.nav_menu_listย .nav_menu_item {
ย margin: 0 2rem;
}
.nav_menu_itemย .nav_menu_link {
ย font-size: 16.5px;
ย line-height: 27px;
ย color: var(โ-โlink-color);
ย text-transform: capitalize;
ย letter-spacing: 0.5px;
}
.nav_menu_link:hover {
ย color: var(โ-โprimary-color);
}
.toggle_btn {
ย font-size: 20px;
ย font-weight: 600;
ย color: var(โ-โlg-heading);
ย z-index: 4;
}
.nav_menu,
.close_btn {
ย display: none;
}
.show {
ย right: 3%ย !important;
}
๊ฒฐ์ค
์ด์ ๋๋ฐ์ด์ค์ ์ฐจ์ด์ ์๋ตํ ์ ์๋ ๋ง์ง๋ง ๋จ๊ณ์ ๋๋ค.
๋ฐ๋ผ์ ์ด๋ฅผ ์คํํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ๋ด๋น๊ฒ์ด์ ํ์์ค์ ๋ฏธ๋์ด ์กฐํ๋ฅผ ์ถ๊ฐํ์ฌ ์ฐ๋ฆฌ์ ์คํ์ผ๋ก ๋ค์ด๊ฐ์ผ ํ๋ค.css ํ์ผ์ ๋ณ๊ฒฝํฉ๋๋ค.
ํ๊ฒฉcss
/* ==== MEDIA QURIES FOR RESPONSIVE DESIGN ==== */
@media screen and (min-width: 768px) {
ย .toggle_btn {
ย display: none;
ย }
ย .nav_menu {
ย display: block;
ย }
}
@media screen and (max-width: 768px) {
ย .logo h2 {
ย font-size: 23px;
ย }
ย .nav_menu {
ย position: fixed;
ย width: 93%;
ย height: 100%;
ย display: block;
ย top: 2.5%;
ย right: -100%;
ย background-color: #fff;
ย padding: 3rem;
ย border-radius: 10px;
ย box-shadow: 0 0.5rem 1.5rem rgba(22, 28, 45, 0.1);
ย z-index: 50;
ย transition: 0.4s;
ย }
ย .nav_menu_list {
ย flex-direction: column;
ย align-items: flex-start;
ย margin-top: 4rem;
ย }
ย .nav_menu_listย .nav_menu_item {
ย margin: 1rem 0;
ย }
ย .nav_menu_itemย .nav_menu_link {
ย font-size: 18px;
ย }
}
ย ย
์ฌ๊ธฐ์์, ์ฐ๋ฆฌ๋ ๋ค๋น๊ฒ์ด์ ๋งํฌ๊ฐ ์ด๋ ํ๋ฉด์ ์จ๊ฒจ์ ธ ์๊ณ , ๋ฐ์คํฌํฑ ํ๋ฉด์์ ๋ณผ ์ ์๋ค๋ ๊ฒ์ ๊ด์ฐฐํ๋ค.๊ทธ๋์ ์ฌ๊ธฐ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํด์ ๋ด๋น๊ฒ์ด์ ๋งํฌ๋ฅผ ๋ฉ๋ด ์ ํ ๋จ์ถ๋ฅผ ๋๋ฅด๋ฉด ๋ณผ ์ ์๋๋ก ํฉ๋๋ค
์ด์ ์ฐ๋ฆฌ ๊ฐ๋ณธ์ผ๋ก ๋ค์ด๊ฐ.๋ ผ๋ฆฌ์ js ํ์ผ ์ถ๊ฐ๐ง
๊ฐ๋ณธjs
const navId = document.getElementById("nav_menu"),
ย ToggleBtnId = document.getElementById("toggle_btn"),
ย CloseBtnId = document.getElementById("close_btn");
// ==== SHOW MENU ==== //
ToggleBtnId.addEventListener("click", () => {
ย navId.classList.add("show");
});
// ==== HIDE MENU ==== //
CloseBtnId.addEventListener("click", () => {
ย navId.classList.remove("show");
});
GIF ํ์ ์์ฑ
"์์ "๋ถ๋ถ์ ํ์ธต ๋ ์ ์ํ๊ณ , ์ด ๋ถ๋ถ์ ๊ท์ฌ์ ์ ํ์ ๋ํ ์ผ๋ณ์ ์ ์ํฉ๋๋ค.
์์ธhtml
<!DOCTYPE html>
<html lang="en">
ย <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>Responsive Landing Page using HTML, CSS & Javascript</title>
<!โ-โ==== STYLE.CSS ==== โ
ย <link rel="stylesheet" href="./css/style.css" />
<!โ-โ==== REMIXICON CDN ==== โ
ย <link
ย href="https://cdn.jsdelivr.net/npm/[email protected]/fonts/remixicon.css"
ย rel="stylesheet"
ย />
<!โ-โ==== ANIMATE ON SCROLL CSS CDN ==== โ
ย <link href="https://unpkg.com/[email protected]/dist/aos.css" rel="stylesheet" />
ย </head>
ย <body>
ย <!โ-โ==== HEADER ==== โ
ย <header class="container header">
ย <!โ-โ==== NAVBAR ==== โ
ย <nav class="nav">
ย <div class="logo">
ย <h2>Devkit.</h2>
ย </div>
<div class="nav_menu" id="nav_menu">
ย <button class="close_btn" id="close_btn">
ย <i class="ri-close-fill"></i>
ย </button>
<ul class="nav_menu_list">
ย <li class="nav_menu_item">
ย <a href="#" class="nav_menu_link">account</a>
ย </li>
ย <li class="nav_menu_item">
ย <a href="#" class="nav_menu_link">about</a>
ย </li>
ย <li class="nav_menu_item">
ย <a href="#" class="nav_menu_link">service</a>
ย </li>
ย <li class="nav_menu_item">
ย <a href="#" class="nav_menu_link">contact</a>
ย </li>
ย </ul>
ย </div>
<button class="toggle_btn" id="toggle_btn">
ย <i class="ri-menu-line"></i>
ย </button>
ย </nav>
ย </header>
<!โ-โ==== HERO ==== โ
ย <section class="wrapper">
ย <div class="container">
ย <div class="grid-cols-2">
ย <div class="grid-item-1">
ย <h1 class="main-heading">
ย Welcome to <span>Devkit.</span>
ย <br />
ย Develop anything.
ย </h1>
ย <p class="info-text">
ย Build a beautiful, modern website with flexible components built
ย from scratch.
ย </p>
<div class="btn_wrapper">
ย <button class="btn view_more_btn">
ย view all pages <i class="ri-arrow-right-line"></i>
ย </button>
<button class="btn documentation_btn">documentation</button>
ย </div>
ย </div>
ย <div class="grid-item-2">
ย <div class="team_img_wrapper">
ย <img src="./img/team.svg" alt="team-img" />
ย </div>
ย </div>
ย </div>
ย </div>
ย </section>
<!โ-โ==== ANIMATE ON SCROLL JS CDN โ
ย <script src="https://unpkg.com/[email protected]/dist/aos.js"></script>
ย <!โ-โ==== GSAP CDN ==== โ
ย <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.8.0/gsap.min.js"></script>
ย <!โ-โ==== SCRIPT.JS ==== โ
ย <script src="./script.js" defer></script>
ํ๊ฒฉcss
/* ==== WRAPPER ==== */
.wrapper {
ย width: 100%;
ย padding-left: 1.7rem;
ย padding-right: 1.7rem;
ย padding-top: 5rem;
ย margin-bottom: 5rem;
}
.grid-cols-2 {
ย width: 100%;
ย height: 100%;
ย display: grid;
ย grid-template-columns: repeat(2, 1fr);
ย gap: 4rem;
}
.grid-item-1 {
ย padding-top: 5rem;
ย padding-left: 1.5rem;
}
.main-heading {
ย font-weight: 300;
ย font-size: 40px;
ย line-height: 55px;
}
.main-heading span {
ย color: var(โ-โprimary-color);
}
.info-text {
ย margin-top: 1.5rem;
ย font-size: 19px;
ย line-height: 28px;
ย color: #334157;
}
.btn_wrapper {
ย margin-top: 3.5rem;
ย display: flex;
ย width: 100%;
}
.btn {
ย width: 110px;
ย height: 50px;
ย background-color: var(โ-โprimary-color);
ย display: block;
ย font-size: 16px;
ย color: #fff;
ย text-transform: capitalize;
ย border-radius: 7px;
ย letter-spacing: 1px;
ย transition: 0.4s;
}
.btn:hover {
ย transform: translateY(-3px);
ย background-color: var(โ-โbtn-hover-color);
}
.view_more_btn {
ย width: 180px;
ย height: 55px;
ย display: flex;
ย align-items: center;
ย justify-content: center;
ย font-size: 16px;
ย letter-spacing: 0;
ย color: #fff;
ย font-weight: 500;
ย margin-right: 10px;
ย box-shadow: 0 0.5rem 1.5rem rgba(22, 28, 45, 0.1);
}
.view_more_btn i {
ย margin-left: 0.7rem;
}
.view_more_btn:hover {
ย transition: box-shadow 0.25s ease, transform 0.25s ease;
}
.documentation_btn {
ย width: 150px;
ย height: 55px;
ย font-size: 16px;
ย font-weight: 500;
ย color: #fff;
ย letter-spacing: 0;
ย background-color: #e1e7fc;
ย color: #0e2a86;
ย box-shadow: 0 0.5rem 1.5rem rgba(22, 28, 45, 0.1);
}
.documentation_btn:hover {
ย background-color: #d7ddf1;
ย transition: box-shadow 0.25s ease, transform 0.25s ease;
}
.grid-item-2 {
ย width: 100%;
ย height: 100%;
}
.team_img_wrapper {
ย width: 500px;
ย max-width: 100%;
ย height: 440px;
}
.team_img_wrapper img {
ย width: 100%;
ย height: 100%;
ย object-fit: contain;
}
@media screen and (max-width: 768px) {
ย .logo h2 {
ย font-size: 23px;
ย }
ย .nav_menu {
ย position: fixed;
ย width: 93%;
ย height: 100%;
ย display: block;
ย top: 2.5%;
ย right: -100%;
ย background-color: #fff;
ย padding: 3rem;
ย border-radius: 10px;
ย box-shadow: 0 0.5rem 1.5rem rgba(22, 28, 45, 0.1);
ย z-index: 50;
ย transition: 0.4s;
ย }
ย .nav_menu_list {
ย flex-direction: column;
ย align-items: flex-start;
ย margin-top: 4rem;
ย }
ย .nav_menu_listย .nav_menu_item {
ย margin: 1rem 0;
ย }
ย .nav_menu_itemย .nav_menu_link {
ย font-size: 18px;
ย }
ย .close_btn {
ย display: block;
ย position: absolute;
ย right: 10%;
ย font-size: 25px;
ย color: #50689e;
ย }
ย .close_btn:hover {
ย color: #000;
ย }
.wrapper {
ย padding: 0 0.7rem;
ย }
ย .grid-item-1 {
ย padding-left: 0rem;
ย }
ย .main-heading {
ย font-size: 35px;
ย }
ย .view_more_btn {
ย width: 140px;
ย height: 55px;
ย font-size: 13.5px;
ย margin-right: 1rem;
ย }
}
@media screen and (max-width: 991px) {
ย .wrapper {
ย padding-top: 3rem;
ย }
ย .grid-cols-2 {
ย grid-template-columns: repeat(auto-fit, minmax(100%, 1fr));
ย }
ย .grid-item-1 {
ย order: 2;
ย display: flex;
ย flex-direction: column;
ย align-items: center;
ย justify-content: center;
ย padding-top: 0;
ย }
ย .main-heading {
ย font-size: 32px;
ย text-align: center;
ย line-height: 40px;
ย }
ย .info-text {
ย font-size: 16px;
ย text-align: center;
ย padding: 0.7rem;
ย }
ย .btn_wrapper {
ย width: 100%;
ย display: flex;
ย align-items: center;
ย justify-content: center;
ย }
ย .grid-item-2 {
ย order: 1;
ย display: flex;
ย flex-direction: column;
ย align-items: center;
ย justify-content: center;
ย }
ย .team_img_wrapper {
ย width: 350px;
ย height: 350px;
ย }
}
๊ฒฐ์ค
์ข์ต๋๋ค. ์ฐ๋ฆฌ๋ ํฐ ์ง์ ์ ๊ฑฐ๋๊ณ ์์ต๋๋ค. ์ด์ ๋ง์ง๋ง ๊ตฌ์ฑ ๋ถ๋ถ์ผ๋ก ๋ค์ด๊ฐ๋๋ค. ์ด๊ฒ์ ํน์ ์๋ ์ ๋ณด์ ํ์ด์ง์ ๋๋ถ๋ถ์ ๋๋ค.
์์ธhtml
<!โ-โ==== NAVBAR ==== โ
ย <!โ-โ==== HERO ==== โ
<section class="wrapper">
ย <div class="container">
ย <div class="grid-cols-3">
ย <div class="grid-col-item">
ย <div class="icon">
ย <svg
ย xmlns="http://www.w3.org/2000/svg"
ย fill="none"
ย viewBox="0 0 24 24"
ย stroke="currentColor"
ย >
ย <path
ย stroke-linecap="round"
ย stroke-linejoin="round"
ย stroke-width="2"
ย d="M9.75 17L9 20l-1 1h8l-1โ1-.75โ3M3 13h18M5 17h14a2 2 0 002โ2V5a2 2 0 00โ2โ2H5a2 2 0 00โ2 2v10a2 2 0 002 2z"
ย />
ย </svg>
ย </div>
ย <div class="featured_info">
ย <span>Built for developers </span>
ย <p>
ย Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempore
ย ratione facilis animi voluptas exercitationem molestiae.
ย </p>
ย </div>
ย </div>
ย <div class="grid-col-item">
ย <div class="icon">
ย <svg
ย xmlns="http://www.w3.org/2000/svg"
ย fill="none"
ย viewBox="0 0 24 24"
ย stroke="currentColor"
ย >
ย <path
ย stroke-linecap="round"
ย stroke-linejoin="round"
ย stroke-width="2"
ย d="M17 14v6m-3โ3h6M6 10h2a2 2 0 002โ2V6a2 2 0 00โ2โ2H6a2 2 0 00โ2 2v2a2 2 0 002 2zm10 0h2a2 2 0 002โ2V6a2 2 0 00โ2โ2h-2a2 2 0 00โ2 2v2a2 2 0 002 2zM6 20h2a2 2 0 002โ2v-2a2 2 0 00โ2โ2H6a2 2 0 00โ2 2v2a2 2 0 002 2z"
ย />
ย </svg>
ย </div>
ย <div class="featured_info">
ย <span>Designed to be modern</span>
ย <p>
ย Lorem ipsum dolor sit amet consectetur adipisicing elit. Ut
ย ipsum esse corrupti. Quo, labore debitis!
ย </p>
ย </div>
ย </div>
<div class="grid-col-item">
ย <div class="icon">
ย <svg
ย xmlns="http://www.w3.org/2000/svg"
ย fill="none"
ย viewBox="0 0 24 24"
ย stroke="currentColor"
ย >
ย <path
ย stroke-linecap="round"
ย stroke-linejoin="round"
ย stroke-width="2"
ย d="M10 20l4โ16m4 4l4 4โ4 4M6 16l-4โ4 4โ4"
ย />
ย </svg>
ย </div>
ย <div class="featured_info">
ย <span>Documentation for everything</span>
ย <p>
ย Lorem ipsum dolor sit amet consectetur adipisicing elit. Non
ย nostrum voluptate totam ipsa corrupti vero!
ย </p>
ย </div>
ย </div>
ย </div>
ย </div>
ย </section>
<footer></footer>
ํ๊ฒฉcss
/* ==== RESET CSS ==== */
/* ==== Navbar ==== */
/* ==== Hero Section ==== */
/*
.
.
.
.
.
*/
.grid-cols-3 {
ย width: 100%;
ย height: 100%;
ย display: grid;
ย grid-template-columns: repeat(3, 1fr);
ย column-gap: 3rem;
ย row-gap: 2rem;
ย padding: 1rem;
}
.grid-col-item {
ย height: 100%;
}
.icon {
ย width: 100%;
ย line-height: 40px;
}
.icon svg {
ย width: 30px;
ย height: 30px;
ย color: #6b85d8;
}
.featured_info {
ย width: 100%;
}
.featured_info span {
ย width: 100%;
ย display: block;
ย font-size: 21px;
ย line-height: 33px;
ย color: var(โ-โlg-heading);
}
.featured_info p {
ย display: block;
ย width: 100%;
ย margin-top: 7px;
ย font-weight: 400;
ย color: #334157;
ย line-height: 25px;
ย font-size: 15.5px;
}
footer {
ย width: 100%;
ย background-color: var(โ-โprimary-color);
ย height: 12px;
ย margin-top: 8rem;
}
@media screen and (max-width: 768px) {
ย .grid-cols-3 {
ย grid-template-columns: repeat(auto-fit, minmax(100%, 1fr));
ย }
ย .featured_info p {
ย line-height: 23px;
ย font-size: 14px;
ย }
}
@media screen and (max-width: 991px) {
ย .featured_info span {
ย font-size: 19px;
ย }
}
๊ฒฐ์ค
์ด์ ์ด ๊ธ์ ๋๋ด๊ณ ์ ๋๋ฉ์ด์ ์ ์คํฌ๋กค ์์ฑ์ ์ถ๊ฐํฉ๋๋ค. ์ด ์์ฑ์ ์ถ๊ฐํ๊ธฐ ์ํด์๋ HTML ํ์ผ์
data-
์์ฑ์ ์ถ๊ฐํ ๋ค์ ์คํฌ๋ฆฝํธ js์์ ์ด๊ธฐํํด์ผ ํฉ๋๋ค.์ฐ๋ฆฌ ์ ํน์ ๋ถ๋ถ ์ ์กฐ๊ธ ๋ฐ๊พธ์. ๋ฐ๋ก๐
<section class="wrapper">
ย <!โ-โ==== ADDITION OF data- attribute ==== โ
ย <div class="container" data-aos="fade-up" data-aos-duration="1000">
ย <div class="grid-cols-3">
ย <div class="grid-col-item">
ย <div class="icon">
ย <svg
ย xmlns="http://www.w3.org/2000/svg"
ย fill="none"
ย viewBox="0 0 24 24"
ย stroke="currentColor"
ย >
ย <path
ย stroke-linecap="round"
ย stroke-linejoin="round"
ย stroke-width="2"
ย d="M9.75 17L9 20l-1 1h8l-1โ1-.75โ3M3 13h18M5 17h14a2 2 0 002โ2V5a2 2 0 00โ2โ2H5a2 2 0 00โ2 2v10a2 2 0 002 2z"
ย />
ย </svg>
ย </div>
ย <div class="featured_info">
ย <span>Built for developers </span>
ย <p>
ย Lorem ipsum dolor sit amet consectetur adipisicing elit. Tempore
ย ratione facilis animi voluptas exercitationem molestiae.
ย </p>
ย </div>
ย </div>
ย <div class="grid-col-item">
ย <div class="icon">
ย <svg
ย xmlns="http://www.w3.org/2000/svg"
ย fill="none"
ย viewBox="0 0 24 24"
ย stroke="currentColor"
ย >
ย <path
ย stroke-linecap="round"
ย stroke-linejoin="round"
ย stroke-width="2"
ย d="M17 14v6m-3โ3h6M6 10h2a2 2 0 002โ2V6a2 2 0 00โ2โ2H6a2 2 0 00โ2 2v2a2 2 0 002 2zm10 0h2a2 2 0 002โ2V6a2 2 0 00โ2โ2h-2a2 2 0 00โ2 2v2a2 2 0 002 2zM6 20h2a2 2 0 002โ2v-2a2 2 0 00โ2โ2H6a2 2 0 00โ2 2v2a2 2 0 002 2z"
ย />
ย </svg>
ย </div>
ย <div class="featured_info">
ย <span>Designed to be modern</span>
ย <p>
ย Lorem ipsum dolor sit amet consectetur adipisicing elit. Ut
ย ipsum esse corrupti. Quo, labore debitis!
ย </p>
ย </div>
ย </div>
<div class="grid-col-item">
ย <div class="icon">
ย <svg
ย xmlns="http://www.w3.org/2000/svg"
ย fill="none"
ย viewBox="0 0 24 24"
ย stroke="currentColor"
ย >
ย <path
ย stroke-linecap="round"
ย stroke-linejoin="round"
ย stroke-width="2"
ย d="M10 20l4โ16m4 4l4 4โ4 4M6 16l-4โ4 4โ4"
ย />
ย </svg>
ย </div>
ย <div class="featured_info">
ย <span>Documentation for everything</span>
ย <p>
ย Lorem ipsum dolor sit amet consectetur adipisicing elit. Non
ย nostrum voluptate totam ipsa corrupti vero!
ย </p>
ย </div>
ย </div>
ย </div>
ย </div>
ย </section>
๊ฐ๋ณธjs
// ==== Animate on Scroll Initialize ==== //
AOS.init();
js ํ์ผ์ ๋ฐ์ดํฐ-attribute์ initialize AOS๋ฅผ ์ถ๊ฐํ๋ฉด ์์ ํ์ด๋ ํจ๊ณผ๋ฅผ ์ค๋๋ค.์ ๋๋ค!ํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ GSAP ์ ๋๋ฉ์ด์ ์ ์ถ๊ฐํด์ ํ๋ก์ ํธ๋ฅผ ๋๋ ๋๋ค.
๊ฐ๋ณธjs
// ==== GSAP Animations ==== //
// ==== LOGO ==== //
gsap.from(".logo", {
ย opacity: 0,
ย y: -10,
ย delay: 1,
ย duration: 0.5,
});
// ==== NAV-MENU ==== //
gsap.from(".nav_menu_listย .nav_menu_item", {
ย opacity: 0,
ย y: -10,
ย delay: 1.4,
ย duration: 0.5,
ย stagger: 0.3,
});
// ==== TOGGLE BTN ==== //
gsap.from(".toggle_btn", {
ย opacity: 0,
ย y: -10,
ย delay: 1.4,
ย duration: 0.5,
});
// ==== MAIN HEADING ==== //
gsap.from(".main-heading", {
ย opacity: 0,
ย y: 20,
ย delay: 2.4,
ย duration: 1,
});
// ==== INFO TEXT ==== //
gsap.from(".info-text", {
ย opacity: 0,
ย y: 20,
ย delay: 2.8,
ย duration: 1,
});
// ==== CTA BUTTONS ==== //
gsap.from(".btn_wrapper",ย
ย opacity: 0,
ย y: 20,
ย delay: 2.8,
ย duration: 1,
});
// ==== TEAM IMAGE ==== //
gsap.from(".team_img_wrapper img", {
ย opacity: 0,
ย y: 20,
ย delay: 3,
ย duration: 1,
});
ย And that's it guys here we end our project! Thank you so much for reading the post till the endย !!! Please Make sure you check out my Youtube Channel where I post this kind of coding tutorial.
๊ฐ์ฌํฉ๋๋ค!์ฆ๊ฑฐ์ ์ฝ๋
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐จโ๐ป HTML CSS ๋ฐ JS๋ฅผ ์ฌ์ฉํ์ฌ ์๋ต ๋ก๊ทธ์ธ ํ์ด์ง ๋ง๋ค๊ธฐ๐ฅ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/ananiket/create-a-responsive-landing-page-using-html-css-js-b7mํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค