CSS3 Transitionプロパティを使いこなして背景色を滑らかに変化させる

2024-04-02

CSSで背景色を滑らかに変化させる

必要な要素

以下の要素は、背景色の遷移を理解する上で重要です。

  • duration: 遷移にかかる時間。秒単位で指定します。
  • timing-function: 遷移のタイミングを制御します。linear は一定速度で変化し、ease-in は徐々に加速し、ease-out は徐々に減速します。
  • delay: 遷移の開始を遅らせる時間。秒単位で指定します。

基本的な例

.element {
  background-color: red;
  transition: background-color 2s ease;
}

.element:hover {
  background-color: blue;
}

上記のコードでは、.element 要素にマウスカーソルを合わせた時に、背景色が2秒間かけて赤から青に変化します。

複数のプロパティを同時に変化させる

.element {
  background-color: red;
  color: white;
  transition: background-color 2s ease, color 2s ease;
}

.element:hover {
  background-color: blue;
  color: black;
}

高度な例

.element {
  background-color: red;
  transition: background-color 2s cubic-bezier(0.42, 0, 0.58, 1);
}

.element:hover {
  background-color: blue;
}

上記のコードでは、cubic-bezier 関数を使って、より複雑なタイミングで背景色を変化させています。

  • transition-property プロパティを使って、遷移させるプロパティを指定できます。

補足

  • 上記のコードはあくまで一例です。目的に合わせて調整してください。
  • 多くのブラウザでサポートされていますが、古いブラウザでは動作しない場合があります。
  • パフォーマンスに影響を与える可能性がありますので、使いすぎには注意が必要です。



基本的な例

<div class="element">
  要素にマウスカーソルを合わせてみてください!
</div>
.element {
  background-color: red;
  width: 200px;
  height: 200px;
  margin: 50px auto;
  text-align: center;
  padding: 20px;
  transition: background-color 2s ease;
}

.element:hover {
  background-color: blue;
}

複数のプロパティを同時に変化させる

<div class="element">
  要素にマウスカーソルを合わせてみてください!
</div>
.element {
  background-color: red;
  color: white;
  width: 200px;
  height: 200px;
  margin: 50px auto;
  text-align: center;
  padding: 20px;
  transition: background-color 2s ease, color 2s ease;
}

.element:hover {
  background-color: blue;
  color: black;
}

このコードを実行すると、画面中央に赤いボックスが表示されます。マウスカーソルをボックスに合わせると、背景色と文字色が同時に2秒間かけて変化します。

高度な例

<div class="element">
  要素にマウスカーソルを合わせてみてください!
</div>
.element {
  background-color: red;
  width: 200px;
  height: 200px;
  margin: 50px auto;
  text-align: center;
  padding: 20px;
  transition: background-color 2s cubic-bezier(0.42, 0, 0.58, 1);
}

.element:hover {
  background-color: blue;
}

上記のコードを参考に、さまざまな効果を試してみてください。




CSSで背景色を滑らかに変化させる他の方法

@keyframes ルールを使う

@keyframes ルールを使ってアニメーションを作成し、animation プロパティを使って要素に適用することができます。

<div class="element"></div>
@keyframes color-change {
  0% {
    background-color: red;
  }
  100% {
    background-color: blue;
  }
}

.element {
  width: 200px;
  height: 200px;
  margin: 50px auto;
  animation: color-change 2s ease infinite;
}

このコードを実行すると、画面中央に赤いボックスが表示され、2秒間かけて青に変化し、再び赤に戻るアニメーションが繰り返されます。

JavaScriptを使って、背景色の変化をプログラムすることができます。

<div id="element"></div>
<script>
const element = document.getElementById("element");

element.addEventListener("mouseover", () => {
  element.style.backgroundColor = "blue";
});

element.addEventListener("mouseout", () => {
  element.style.backgroundColor = "red";
});
</script>

ライブラリを使う

Anime.jsGreenSock Animation Platform などのライブラリを使うと、より複雑なアニメーションを簡単に作成することができます。

<div class="element"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js"></script>

<script>
anime({
  targets: ".element",
  backgroundColor: {
    value: "blue",
    duration: 2000,
    easing: "easeInOutSine"
  }
});
</script>
  • 簡単なアニメーション の場合は、transition プロパティを使うのが最も簡単です。
  • 複雑なアニメーション の場合は、@keyframes ルールや JavaScript を使う必要があります。
  • より多くの機能 が必要な場合は、ライブラリを使うと便利です。

css


もう迷わない!CSS marginとpaddingの省略記法をマスターするための完全ガイド

しかし、省略記法の順番を覚えるのは難しいと感じる人もいるでしょう。そこで、今回は**「CSS marginとpaddingの省略記法を覚えるための記憶術」**をご紹介します。"Top Right Bottom Left" の頭文字を取って TRBL と覚える方法です。これは、marginとpaddingの省略記法で、それぞれ上、右、下、左の順に値を設定することを表しています。...


JavaScriptでヘッダーとフッターの内容を動的に生成する方法

HTML5では、headerとfooter要素がヘッダーとフッターを表示するために用意されています。これらの要素は、すべてのページに表示されます。この例では、header要素にはページタイトル、footer要素には著作権表示が表示されます。...


CSSの高さを柔軟に設定!vh単位、calc関数、JavaScriptなどを駆使したテクニック集

親要素の高さが決まっていないパーセンテージで高さを指定する場合、その要素の親要素の高さを基準に計算されます。親要素の高さが決まっていない場合、パーセンテージ値は適用されません。解決策:親要素の高さを明示的に設定する。min-height や max-height を使って、親要素の最小または最大の高さを設定する。...


初心者でも安心!JavaScriptとjQueryで疑似要素を操るチュートリアル

CSS疑似要素(::before、::after)は、要素の前後にコンテンツを追加する強力なツールです。JavaScriptやjQueryを使って、これらの要素を選択・操作することで、より複雑なデザインやインタラクションを実現できます。JavaScriptで疑似要素を選択するには、以下の2つの方法があります。...


方法2:margin-top、margin-right、margin-bottom、margin-leftプロパティを使用する

HTMLのテーブル構造において、<tr>要素は個々の行を表します。これらの行間に余白を追加することで、テーブル全体のデザインや見やすさを向上させることができます。CSSを使用して<tr>要素にマージンを追加するには、主に以下の2つの方法があります。...