애플 스크롤 UI

devyoon99·2021년 12월 12일
0

UI

목록 보기
27/29
post-thumbnail

UI / 애플 스크롤 UI

스크롤을 내리면, 일정위치에서 이미지가 멈추다가, 밑의 이미지와 겹치기 시작하면, 점점 투명해지고, 크기가 작아진다.

html 코드

<div class="card-background">
  <div class="card-box img1">
    <img src="img/phone-card1.png" alt="" />
  </div>
  <div class="card-box">
    <img src="img/phone-card2.png" alt="" />
  </div>
  <div class="card-box">
    <img src="img/phone-card3.png" alt="" />
  </div>
</div>

css 코드

  • position: sticky; top: 400px;
    • 이미지가 올라가다가 top: 400px; 지점에서 멈춘다.
.card-background {
  height: 3000px;
  margin-top: 800px;
  margin-bottom: 1600px;
}

.card-box {
  position: sticky;
  top: 400px;
  margin-top: 200px;
  transition: all 0.2s;
}

.card-box img {
  display: block;
  margin: auto;
  max-width: 80%;
}

js 코드

  • 스크롤 이벤트 감지
  • 0번째 카드 박스를 들고 와서 css()css 직접 변경하여, 투명도와 크기를 조절하였음
  • 투명도 변경
    • 0번째 사진과 1번째 사진이 경계선에서 겹치는 지점의 스크롤탑 값을 구한다.
      • $(window).scrollTop()
      • 이때의 스크롤 탑에서는 투명도가 1이 되어야한다.
    • 0번째 사진과 1번째 사진이 완전히 겹치는 지점의 스크롤 탑 값을 구한다.
      • 이때의 스크롤 탑에서는 투명도가 0이 되어야한다.
    • 스크롤 탑이 650에서 1150으로 바뀔때, 투명도는 연속적으로 1에서 0으로 바뀌어야한다
      • 두개의 좌표 (650,1), (1150,0)을 아는 상태이므로 스크롤에 따른 투명도 일차함수를 구할 수 있다.
      • 일차함수 let opacity1 = (-1 / 500) * $(window).scrollTop() + 115 / 50;
    • css 직접 변경 할 때, key값에 일차함수의 y값을 대입한다.
$(window).on("scroll", function () {
  let opacity1 = (-1 / 500) * $(window).scrollTop() + 115 / 50;
  $(".card-box").eq(0).css("opacity", opacity1);

  if ($(window).scrollTop() >= 650 && $(window).scrollTop() <= 1150) {
    let scale1 = -0.0002 * $(window).scrollTop() + 1.13;
    $(".card-box").eq(0).css("transform", `scale(${scale1})`);
  }
});

문제점

  • 윈도우 창의 크기에 따라, 이미지가 겹칠 때의 스크롤 탑의 값이 달라져서, 이미지가 완전히 겹쳐지지 않은 경우에도, 이미지가 사라지는 경우에 발생한다.

0개의 댓글