【CSS】animationを使って流れるテキストとかを作ってみる

きのこさん
CSSだけで流れるテキストって作れますかー?
きのこさん
できますよー。animationを使ってやってみましょうー。

流れるテキスト

animationを使う。
動きの速度調整が少し難しい。
幅は指定する。
全体幅も明記してもいいが、しなくてもオッケー。
全体幅は6000pxぐらいになると大きなモニターで見ても問題ないかなと。
ウルトラワイドモニター対策が必要だったりする。
こんな感じでしょうか。

コードを見る(HTML・CSS)

HTML

<div class="loop-wrap">
  <ul class="loop-area">
    <li class="content">流れるテキスト</li>
    <li class="content">流れるテキスト</li>
    <li class="content">流れるテキスト</li>
    <li class="content">流れるテキスト</li>
  </ul>
  <ul class="loop-area">
    <li class="content">流れるテキスト</li>
    <li class="content">流れるテキスト</li>
    <li class="content">流れるテキスト</li>
    <li class="content">流れるテキスト</li>
  </ul>
  <ul class="loop-area">
    <li class="content">流れるテキスト</li>
    <li class="content">流れるテキスト</li>
    <li class="content">流れるテキスト</li>
    <li class="content">流れるテキスト</li>
  </ul>
</div>

CSS

/* ---------- 01 流れるテキスト ---------- */
.loop-wrap {
  display: flex;
  align-items: center;
  overflow: hidden;
  height: 50px;
  background: #e8dc6a;
  color: #2b2a27;
}
.loop-area {
  display: flex;
  animation: loop-slide 20s infinite linear 1s both;
  list-style: none;
  margin: 0;
  padding: 0;
}
.loop-area .content {
  width: 500px;
}
@keyframes loop-slide {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-100%);
  }
}

/* 動きを減らす設定のとき */
@media (prefers-reduced-motion: reduce) {
  .loop-area { animation: none; }
}

背景をループにしたアニメーション

background-imgだとrepeatが使えるので簡単ですね。

コードを見る(HTML・CSS)

HTML

<div class="loop-wrap-bg">
  <div class="loop-area-bg"></div>
</div>

CSS

/* ---------- 02 背景をループにする ---------- */
.loop-wrap-bg {
  display: flex;
  align-items: center;
  overflow: hidden;
  height: 130px;
}
.loop-area-bg {
  background: url(https://125naroom.com/wp/wp-content/themes/design125naroom/img/kinoko_pan.png) repeat-x;
  background-size: 130px 130px;
  width: 100%;
  height: 130px;
  animation: loop-slide-bg 1.5s infinite linear;
}
@keyframes loop-slide-bg {
  from {
    background-position: 0 0;
  }
  to {
    background-position: -130px 0;
  }
}

/* 動きを減らす設定のとき */
@media (prefers-reduced-motion: reduce) {
  .loop-area-bg { animation: none; }
}

対応ブラウザ

『animation』の対応ブラウザは下記サイトで確認できます。
IE対応は不要なので、『animation』は問題なく使えますね。

さいごに

きのこさん
これですー
きのこさん
何事もトライですー

デザコトauthor

あ、いいな、と思うWebデザインを紹介しています。デザインの参考に。やさしいデザインが多いです。Webデザインギャラリー『デザインのこと - Web design gallery』を運営しています。