배경색에 따라 문자색이 바뀌는 흐르는 문자의 CSS 애니메이션 실현 방법

소개



이런 느낌을 실현하기 위한 코드입니다.


코드



index.html
<!DOCTYPE html>
<html lang="ja">
  <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>流れる単語</title>
    <link rel="stylesheet" href="./index.css" />
  </head>
  <body>
    <div class="color-area">
      <div class="scroll-string scroll-string-white">流れる単語</div>
    </div>
    <div class="scroll-string scroll-string-blue">流れる単語</div>
  </body>
</html>

index.css
html {
  height: 100%;
}
body {
  height: 100%;
}
.color-area {
  width: 100%;
  height: 200px;
  top: 100px;
  position: relative;
  overflow: hidden;
  background-color: darkblue;
  z-index: 2;
}
.scroll-string {
  font-size: 30px;
  visibility: hidden;
  text-align: center;
  height: 50px;
  width: 100%;
  position: absolute;
  left: 0;
  right: 0;
  margin: auto;
}
.scroll-string-white {
  color: white;
  top: 0;
  animation: scroll-white 5s linear 0s 1 forwards;
  -webkit-animation: scroll-white 5s linear 0s 1 forwards;
  z-index: 3;
}
.scroll-string-blue {
  color: darkblue;
  top: 100;
  animation: scroll-blue 5s linear 0s 1 forwards;
  -webkit-animation: scroll-blue 5s linear 0s 1 forwards;
  z-index: 1;
}
@keyframes scroll-white {
  0% {
    transform: translateY(-100px);
    visibility: visible;
  }
  100% {
    transform: translateY(300px);
  }
}
@keyframes scroll-blue {
  0% {
    transform: translateY(-200px);
    visibility: visible;
    opacity: 0;
  }
  10% {
    opacity: 1;
  }
  90% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translateY(200px);
  }
}

포인트



흰 문자와 파란색 문자를 겹쳐 동시에 애니메이션 시키고 있습니다. 레이어 구조는 위에서부터 순서대로
  • 흰색 문자
  • 파란색 배경
  • 파란 문자
  • 흰색 배경

  • 되어 있습니다. 이 때 파란색 배경을 overflow: hidden로 설정하면 흰색 문자가 파란색 배경 위에만 표시됩니다.

    결론



    더 효율적이고 좋은 글을 쓸 수 있습니다.

    좋은 웹페이지 즐겨찾기