calc()関数とhsl()カラーモデルで色を変化させる

2024-04-02

CSSで色を動的に明るく・暗くする

calc() 関数を使うと、パーセンテージで色を調整することができます。

.box {
  background-color: #f00;
  width: 100px;
  height: 100px;
}

.box:hover {
  background-color: calc(#f00 + 10%); /* 10%明るくする */
}

この例では、.box 要素の背景色は、デフォルトで赤 (#f00) です。マウスホバーすると、背景色が 10% 明るくなります。

calc() 関数は、加算だけでなく減算も可能です。

.box {
  background-color: #f00;
  width: 100px;
  height: 100px;
}

.box:hover {
  background-color: calc(#f00 - 10%); /* 10%暗くする */
}

hsl() カラーモデルを使うと、色相、彩度、明度を個別に調整することができます。

.box {
  background-color: hsl(0, 100%, 50%); /* 色相: 0, 彩度: 100%, 明度: 50% */
  width: 100px;
  height: 100px;
}

.box:hover {
  background-color: hsl(0, 100%, calc(50% + 10%)); /* 明度を10%上げる */
}

この例では、.box 要素の背景色は、デフォルトで HSL カラーモデルの 0 度 (赤)、100% の彩度、50% の明度です。マウスホバーすると、明度が 10% 上がります。

.box {
  background-color: hsl(0, 100%, 50%); /* 色相: 0, 彩度: 100%, 明度: 50% */
  width: 100px;
  height: 100px;
}

.box:hover {
  background-color: hsl(calc(0 + 30), 100%, 50%); /* 色相を30度上げる */
}

CSSで色を動的に明るく・暗くするには、calc() 関数と hsl() カラーモデルを使うことができます。これらの方法を組み合わせることで、さまざまな色の変化を表現することができます。




HTML

<div class="box"></div>

CSS

.box {
  background-color: #f00;
  width: 100px;
  height: 100px;
}

.box:hover {
  background-color: calc(#f00 + 10%); /* 10%明るくする */
}

/* hsl() カラーモデルを使った例 */

.box {
  background-color: hsl(0, 100%, 50%); /* 色相: 0, 彩度: 100%, 明度: 50% */
  width: 100px;
  height: 100px;
}

.box:hover {
  background-color: hsl(0, 100%, calc(50% + 10%)); /* 明度を10%上げる */
}

このコードを HTML ファイルに保存してブラウザで開くと、.box 要素の色がマウスホバー時に変化することを確認できます。

  • 色相を変化させる
.box:hover {
  background-color: hsl(calc(0 + 30), 100%, 50%); /* 色相を30度上げる */
}
.box:hover {
  background-color: hsl(0, calc(100% - 20%), 50%); /* 彩度を20%下げる */
}
  • 明度と彩度を同時に変化させる
.box:hover {
  background-color: hsl(0, calc(100% - 20%), calc(50% + 10%)); /* 彩度を20%下げ、明度を10%上げる */
}

これらのサンプルコードを参考に、さまざまな色の変化を表現してみてください。




CSSで色を動的に明るく・暗くするその他の方法

filter プロパティを使うと、さまざまなフィルター効果を要素に適用することができます。其中には、色を明るく・暗くする効果もあります。

.box {
  background-color: #f00;
  width: 100px;
  height: 100px;
}

.box:hover {
  filter: brightness(110%); /* 10%明るくする */
}

brightness() 関数以外にも、contrast()saturate() などの関数を使って、色のコントラストや彩度を調整することができます。

@media クエリを使うと、デバイスや画面のサイズに合わせてスタイルを調整することができます。例えば、モバイルデバイスでは色を明るく、デスクトップでは色を暗くするといった設定ができます。

@media (max-width: 768px) {
  .box {
    background-color: #f00;
  }
}

@media (min-width: 769px) {
  .box {
    background-color: #ccc;
  }
}

この例では、画面幅が 768px 以下の場合は .box 要素の背景色が赤 (#f00)、769px 以上の場合は灰色 (#ccc) になります。

JavaScriptを使うと、より複雑な色の変化を表現することができます。例えば、スクロールに合わせて色を変化させたり、ボタンをクリックした時に色をアニメーションさせたりすることができます。

const box = document.querySelector('.box');

window.addEventListener('scroll', () => {
  const scrollTop = window.pageYOffset;
  const brightness = Math.min(100, scrollTop / 100);
  box.style.backgroundColor = `hsl(0, 100%, ${brightness}%)`;
});

この例では、スクロールに合わせて .box 要素の背景色の明度が変化します。


css colors


属性なしの要素の選び方を知れば、あなたのCSSスキルが劇的に向上する!

属性を持たない要素を選択するには、以下の3つの方法があります。要素名のみを使用する最も簡単な方法は、要素名のみを使用することです。例えば、div要素を選択するには、以下のセレクターを使用します。ユニバーサルセレクター * は、すべての要素にマッチします。属性を持たない要素だけでなく、すべての要素にスタイルを適用したい場合に便利です。...


CSSで色を変数として定義する方法とメリット

メリットコードの可読性と保守性が向上します。同じ色値を何度も記述する必要がなくなり、コードが読みやすくなり、変更も簡単になります。テーマ変更が容易になります。変数の値を変更することで、サイト全体の配色を簡単に変更できます。一貫性を保ちやすくなります。変数を使用することで、サイト全体の配色の一貫性を保ちやすくなります。...


「inline-block」要素のはみ出しを防ぐ!overflowプロパティと解決策を完全網羅

この文章では、CSSにおける「overflow」プロパティと「inline-block」要素がどのように相互作用し、要素が下に押し込まれる現象を引き起こすのかについて、詳細に解説します。「inline-block」要素は、インライン要素とブロック要素の特性を兼ね備えた特殊な要素です。具体的には、以下の特徴を持ちます。...


HTMLとCSSで画像のアスペクト比を維持する方法

HTMLでは、imgタグを使用して画像を挿入します。アスペクト比を維持するには、widthとheight属性を適切に設定する必要があります。以下の例では、幅を100%に設定し、高さを自動調整することで、画像のアスペクト比を維持しています。CSSを使用して、画像のアスペクト比をさらに制御することができます。以下のプロパティが役立ちます。...


CSSとJavaScriptを駆使したレスポンシブデザイン:$(window).width()とメディアクエリの連携技

Webデザインにおいて、様々なデバイスで快適に閲覧できるよう、レスポンシブデザインは必須となっています。その際に、要素の表示やスタイルを画面サイズに応じて調整するために用いられるのが、CSSメディアクエリとJavaScriptの $(window).width() メソッドです。...