スクロールアニメーション

# パターン1

## イメージ
![download-1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54443/f21133f4-9a14-487e-2a25-4e0f6bed12dc.gif)

## HTML
```html:HTML
<a class="scroll" href="#link-about" data-scroll="" aria-label="scroll" title="scroll">
  <div class="scroll__inner">
    <div class="scroll--line"></div>
    <div class="scroll--scroller"></div>
  </div>
</a>
```

## CSS
```css:CSS
.scroll {
  position: absolute;
  right: 6vw;
  bottom: -11%;
  z-index: 1;
  width: 1.5625vw;
  height: 135px;
  overflow: hidden;
}

.scroll__inner {
  position: relative;
  width: 100%;
  height: 100%;
}

.scroll--line {
  position: absolute;
  top: 0;
  left: 0.78vw;
  width: 1px;
  height: 100%;
  background-color: #6c6e73;
}

.scroll--scroller:before {
  position: absolute;
  top: -10px;
  left: 50%;
  display: inline-block;
  width: 8px;
  height: 8px;
  content: "";
  background-color: #6c6e73;
  border-radius: 50%;
  -webkit-animation: loop 2.5s ease 0s infinite normal;
          animation: loop 2.5s ease 0s infinite normal;
}

@-webkit-keyframes loop {

  0% {
    -webkit-transform: translate3d(-50%, 0, 0);
    transform: translate3d(-50%, 0, 0);
  }

  100% {
    -webkit-transform: translate3d(-50%, 145px, 0);
    transform: translate3d(-50%, 145px, 0);
  }
}

@keyframes loop {

  0% {
    -webkit-transform: translate3d(-50%, 0, 0);
    transform: translate3d(-50%, 0, 0);
  }

  100% {
    -webkit-transform: translate3d(-50%, 145px, 0);
    transform: translate3d(-50%, 145px, 0);
  }
}
```

# パターン2
## イメージ
<img width="300" alt="download.gif (773.5 kB)" src="https://img.esa.io/uploads/production/attachments/12996/2021/07/21/64415/309b39ec-9251-45df-866b-6b6494e6a0af.gif">

## HTML
```html:HTML
  <a href="#about" class="scroll__box">
    <p class="scroll__txt">SCROLL</p>
    <div class="scroll" data-scroll="" aria-label="scroll" title="scroll">
      <span class="scroll--line"></span>
    </div>
  </a>
```

## CSS
```css:CSS
.scroll__box {
  position: relative;
  display: inline-block;
  margin-top: 56px;
}

.scroll__txt {
  letter-spacing: 0.1em;
}

.scroll {
  position: absolute;
  top: 34px;
  right: 0;
  left: 0;
  z-index: 1;
  display: inline-block;
  margin: auto;
  overflow: hidden;
}

.scroll--line {
  display: inline-block;
  width: 2px;
  height: 100px;
  background: #fff;
}

.scroll--line::before {
  position: absolute;
  top: -110px;
  right: -2px;
  left: 0;
  z-index: 2;
  width: 2px;
  height: 100%;
  margin: 0 auto;
  content: "";
  background: #565656;
  -webkit-transform: translateY(-100%);
  -ms-transform: translateY(-100%);
  transform: translateY(-100%);
  -webkit-transform-origin: top;
  -ms-transform-origin: top;
  transform-origin: top;
  -webkit-animation: loop 3s cubic-bezier(0.57, 0.05, 0.52, 0.96) infinite;
  animation: loop 3s cubic-bezier(0.57, 0.05, 0.52, 0.96) infinite;
}

@-webkit-keyframes loop {

  0% {
    -webkit-transform: translate3d(-50%, 0, 0);
    transform: translate3d(-50%, 0, 0);
  }

  100% {
    -webkit-transform: translate3d(-50%, 210px, 0);
    transform: translate3d(-50%, 210px, 0);
  }
}

@keyframes loop {

  0% {
    -webkit-transform: translate3d(-50%, 0, 0);
    transform: translate3d(-50%, 0, 0);
  }

  100% {
    -webkit-transform: translate3d(-50%, 210px, 0);
    transform: translate3d(-50%, 210px, 0);
  }
}
```