Web白描

Webデザインの勉強 - 演習

Transition[トランジションアニメーション]

Transition[トランジションアニメーション]

  • transitionを使えば、ある状態から別の状態へ滑らかに変化させることができます

transition と animation の違い

  • animation は、連続したアニメーションを作成するためのもの
  • @keyframesで、変化していく形状などを記述する
  • アニメーションがループする回数や、アニメーション終了後の状態など、詳細設定ができる
transitionプロパティ
  • transition-property : アニメーションさせるプロパティを指定
  • transition-duration : 時間(アニメーションが動いている間)
  • transition-timing-function : タイミング
  • transition-delay : 時間(アニメーションが開始するまでの間)

初期値

  • transition-property: none;
  • transition-duration: 0s
  • transition-timing-function: ease;
  • transition-delay: 0s;

transition: none 0s ease 0s;

transition-property
説明
all変化を適用できるプロパティすべてが変化する(初期値)
noneどのプロパティも変化しない
プロパティ名変化させるプロパティ名のリストをカンマ( , )区切りで指定

  • all(background、width、heightのすべてにアニメーションが適応される)
  • widthだけ(widthだけにアニメーションが適応される)

transition-duration
説明
◯s◯秒
◯ms◯ミリ秒(1000ミリ秒 =1秒)

transition-timing-function(イージング)

  • transition-timing-functionは変化速度のパターンを変更するプロパティ

解説
ease加速をつけて、ゆっくりと始まりゆっくりと終わる(初期値)
linear最初から最後まで一定の速度で変化する
ease-inゆっくりと始まり、一定速度で終わる
ease-out一定速度で始まり、ゆっくりと終わる
ease-in-outゆっくりと始まり、ゆっくりと終わる

index.html

<div class="content">
  <h3>transition-timing-function</h3>
  <ul class="timing">
    <li class="circle t01">ease</li>
    <li class="circle t02">linear</li>
    <li class="circle t03">ease-in</li>
    <li class="circle t04">ease-out</li>
    <li class="circle t05">ease-in-out</li>
  </ul>
</div><!-- /.content -->

style.css

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
ul {
  list-style: none;
}
.content {
  margin: 50px;
  padding: 10px;
  border: 1px solid #aaa;
}
h3 {
  margin-bottom: 20px;
}
.circle {
  width: 100px;
  height: 100px;
  margin: 20px;
  background: #197df2;
  border-radius: 50%;
  color: #fff;
  font-weight: bold;
  text-align: center;
  line-height: 100px;
}

/* transition-timing-function */
.timing li{
  position: relative;
  left: 0;
}
.timing:hover li {
  left: 70%;
}
  .t01{
    transition: left 3s ease;
  }
  .t02{
    transition:left 3s linear;
  }
  .t03{
    transition:left 3s ease-in;
  }
  .t04{
    transition:left 3s ease-out;
  }
  .t05{
    transition:left 3s ease-in-out;
  }
マウスホバー時に背景色を変更(3秒間で)

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Transition</title>
<style>
button {
  width: fit-content;
  padding: 10px 40px;
  background-color: #0d96a5;
  border: none;
  color: white;
  font-size: 20px;
  transition-duration: 2s;
}
button:hover {
  background-color: #c9cd0c;
}
</style>
</head>
<body>
<button>css transition</button>
</body>
</html>