ハッキングされていない純粋なCSSソリューションはどうですか?
.page {
position: fixed;
top: 0;
bottom: 0;
right: 0;
left: 0;
background-color: #121519;
color: whitesmoke;
}
.controls {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
width: 100%;
}
.arrow {
cursor: pointer;
transition: filter 0.3s ease 0.3s;
}
.arrow:active {
filter: drop-shadow(0 0 0 steelblue);
transition: filter 0s;
}
<body class="page">
<div class="controls">
<div class="arrow">
<img src="https://i.imgur.com/JGUoNfS.png" />
</div>
</div>
</body>
@TylerHは素晴らしい応答をしますが、それはかなり複雑なソリューションです。私は、余分な要素のない純粋なcssを使用した単純な「オンクリック」効果が必要なユーザーのためのソリューションを用意しています。
単純にcssトランジションを使用します。おそらくアニメーションでも同様のことができます。
トリックは、ユーザーがクリックしたときに続くように、遷移の遅延を変更することです。
.arrowDownContainer:active,
.arrowDownContainer.clicked {
filter: drop-shadow(0px 0px 0px steelblue);
transition: filter 0s;
}
ここでは、「クリックされた」クラスも追加して、JavaScriptが必要に応じて効果を提供できるようにします。私の場合、この方法で指定された透明なグラフィックを青で強調表示するため、0pxドロップシャドウフィルターを使用します。
効果が出ないように、ここに0のフィルターがあります。エフェクトが解放されたら、トランジションを遅延して追加し、「クリックされた」エフェクトを提供できます。
.arrowDownContainer {
cursor: pointer;
position: absolute;
bottom: 0px;
top: 490px;
left: 108px;
height: 222px;
width: 495px;
z-index: 3;
transition: filter 0.3s ease 0.3s;
}
これにより、ユーザーがボタンをクリックすると青くハイライト表示され、ゆっくりとフェードアウトするように設定できます(もちろん、他のエフェクトも使用できます)。
ハイライトするアニメーションが瞬時であるという意味でここでは制限がありますが、それでも望ましい効果が得られます。アニメーションでこのトリックを使用すると、全体的な遷移がよりスムーズになります。
:active
マウスがダウンしているときに動作します。何をしようとしているのかに応じて、CSS4疑似クラスを使用して機能させることができる場合があります:target
。