HTML / CSS

CSSだけでクリックやホバー時にbackground-colorをピカッとフラッシュさせたい!HTMLとCSSの勉強!

html css

クリックした時に画面をピカッとフラッシュさせたいなと思うことがありました。クリック時だからなんの疑いもなくJavascriptで行おうと思ったのですが、CSSでもできることを知ったので備忘録としてまとめます。

同じCSSを使い回すことでいろいろなシチュエーションに対応できそうです。

背景をフラッシュ

背景をフラッシュさせてみます。

Demo

See the Pen by Nakamoto (@programmerlife) on CodePen.

HTML & CSS

Codepenにも書いてありますが、HTMLとCSSを以下に書き出します。

HTML

<div class="bg flash">

CSS

*{
    margin:0;
}

.bg{
    position: absolute;
    height: 100%;
    width: 100%;
    background-color:#4169e1;
}

.flash {
    position: absolute;
    height: 100%;
    width: 100%;
}
.flash:active {
    animation: flash 50ms;
}
@keyframes flash {
    0% {
        background: black;
        z-index: 100;
    }
    50% {
        background: black;
        z-index: 100;
    }
    50.1% {
        background: white;
        z-index: 100;
    }
    100% {
        background: white;
        z-index: 100;
    }
}

色などはお好みで。

フラッシュアニメーション例2

CSSのキーフレームの他の例です。こちらの方がシンプルでいいかもしれないですね。
keyframesの中身を変えることで好みのフラッシュが作れます。

DEMO

See the Pen by Nakamoto (@programmerlife) on CodePen.

CSS

@keyframes flash {
    0% {
        opacity: 0.5;
    }
    100% {
        opacity: 1;
    }
}

全ての例でも置き換えて使用可能です。

ボタンでフラッシュ

上記のフラッシュを応用するとボタンをクリックすればフラッシュすることも可能です。

DEMO

See the Pen by Nakamoto (@programmerlife) on CodePen.

HTML & CSS

Codepenにも書いてありますが、HTMLとCSSを以下に書き出します。

HTML

<div class="area">
    <a href="#" class="btn btn--blue flash">PUSH</a>
</div>

CSS

*{
    margin:0;
}
.bg{
    position: absolute;
    height: 100%;
    width: 100%;
    background-color:#4169e1;
}
.flash {
    position: absolute;
    height: 100%;
    width: 100%;
}
.flash:active {
    animation: flash 50ms;
}

@keyframes flash {
    0% {
        background: black;
        z-index: 100;
    }
    50% {
        background: black;
        z-index: 100;
    }
    50.1% {
        background: white;
        z-index: 100;
    }
    100% {
        background: white;
        z-index: 100;
    }
}

hoverでフラッシュ

hover時にフラッシュさせてみます。

DEMO

See the Pen by Nakamoto (@programmerlife) on CodePen.

HTML & CSS

Codepenにも書いてありますが、HTMLとCSSを以下に書き出します。

HTML

<div class="area"><div class="bg flash"></div></div>

CSS

* {
  margin: 0;
}

.area {
  display: flex;
  justify-content: center;
}
.bg {
  position: absolute;
  height: 200px;
  width: 300px;
  background-color: #4169e1;
  margin: 10px auto;
}

/* Flashing */
.flash:hover{
  opacity: 1;
  -webkit-animation: flash 50ms;
  animation: flash 50ms;
}


@keyframes flash {
    0% {
        background: black;
        z-index: 100;
    }
    50% {
        background: black;
        z-index: 100;
    }
    50.1% {
        background: white;
        z-index: 100;
    }
    100% {
        background: white;
        z-index: 100;
    }
}

おわり

keyframeを覚えるとなんか面白そうですね。CSSがあればJavascriptなくても結構追い込めるのも驚きでした。

Javascriptを使用してフラッシュさせる方法については以下にまとめています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です