
패스트캠퍼스 온라인 강의를 통해 만든 ★다방 랜딩페이지 SECTION1의 코드(HTML, CSS, JS)를 review해보자
    <!-- VISUAL -->
    <section class="visual">
      <div class="inner">
        <div class="title fade-in">
          <img src="./images/visual_title.png" alt="STARBUCKS DELITGHTFUL START TO THE YEAR" />
          <a href="javascript:voild(0)" class="btn btn--brown">자세히 보기</a>
        </div>
        <div class="fade-in">
          <img src="./images/visual_cup1.png" alt="NEW OATMEAL LATTEE" class="cup1 image" />
          <img src="./images/visual_cup1_text.png" alt="오트밀 라떼" class="cup1 text" />
        </div>
        <div class="fade-in">
          <img src="./images/visual_cup2.png" alt="NEW STARBUCKS CARAMEL MOCHA" class="cup2 image" />
          <img src="./images/visual_cup2_text.png" alt="스타벅스 카라멜 모카" class="cup2 text" />
        </div>
        <div class="fade-in">
        <img src="./images/visual_spoon.png" alt="Spoon" class="spoon" />
        </div>
      </div>
    </section>
  .visual .inner .title에서 .inner와 같이 계속 반복되는 선택자는 생략 가능
.btn {
    width: 130px;
    padding: 10px;
    border: 2px solid #333;
    border-radius: 4px;
    color: #333;
    font-size: 16px;
    font-weight: 700;
    text-align: center;
    cursor: pointer;
    box-sizing: border-box;
    display: block;
    transition: .4s;
}
.btn:hover {
    background-color: #333;
    color: #fff;
}
.btn.btn--reverse {
    background-color: #333;
    color: #fff;
}
.btn.btn--reverse:hover {
    background-color: transparent;
    color: #333;
}
.btn.btn--brown {
    color: #592B18;
    border-color: #592B18;
}
.btn.btn--brown:hover {
    color: #fff;
    border-color: #592B18;
}
.btn.btn--gold {
    color: #D9AA8A;
    border-color: #D9AA8A;
}
.btn.btn--gold:hover {
    color: #fff;
    border-color: #D9AA8A;
}
.btn.btn--white {
    color: #fff;
    border-color: #fff;
}
.btn.btn--white:hover {
    color: #333;
    border-color: #fff;
}
/* HEADER */
header {
    width: 100%;
    position: fixed;
    top: 0;
    background-color: #f6f5f0;
    border-bottom: 1px solid #c8c8c8;
    z-index: 9;
}
/* VISUAL */
.visual {
    margin-top: 120px;
    background-image: url("../images/visual_bg.jpg");
    background-position: center;
}
.visual .inner {
    height: 646px;
}
.visual .title {
    position: absolute;
    top: 88px;
    left: -10px;
}
.visual .title .btn{
    position: absolute;
    top: 259px;
    left: 173px;
}
.visual .cup1.image {
    position: absolute;
    bottom: 0;
    right: -47px;
}
.visual .cup1.text {
    position: absolute;
    top: 38px;
    right: 171px;
}
.visual .cup2.image {
    position: absolute;
    bottom: 0;
    right: 162px;
}
.visual .cup2.text {
    position: absolute;
    top: 321px;
    right: 416px;
}
.visual .spoon {
    position: absolute;
    bottom: 0;
    right: 275px;
}
.visual .fade-in{
    opacity:0;
}
const fadeEls = document.querySelectorAll('.visual .fade-in');
fadeEls.forEach(function (fadeEl, index) {
    gsap.to(fadeEl, 1, {
        delay: (index + 1) * .7,  // 0.7초 후에 애니메이션 동삭, 1.4, 2.1, 2.7
        opacity: 1
    });
});