CSSだけでクリックイベントを実装する

CSS3の「:checked」疑似クラスをinputタグに使うことで、JavaScriptを使わずにクリックイベントを実装します。今回はクリックで画像をグレースケールにするサンプルコードを記述しています。
環境
- OS windows10 64bit
- chrome 86.0.4240.198
クリックイベントを実装
inputタグと結びついたlabel をクリックすることで、inputタグの直後に隣接するdivへのイベントを実行しています。
/*クリックイベントのcss*/
#clickdemo label{
cursor: pointer;
}
#clickdemo input{
display: none;
}
#clickdemo input+div{
/*イベント前の状態*/
}
#clickdemo input:checked+div{
/*クリックした際のアクション*/
}
サンプルコード
以下はクリックした際に、下の画像をグレースケールにするサンプルコードを記述しています。
<section>
<style>
#clickdemo label{
cursor: pointer;
font-weight: bold;
background: #efefef;
border: 1px solid #dcdcdc;
padding: 0.5em 1em;
color: #3db70f;
display: inline-block;
margin-bottom: 15px;
}
#clickdemo input{
display: none;
}
#clickdemo input+div{
filter: none;
}
#clickdemo input:checked+div{
filter: grayscale(100%);
}
</style>
<div id="clickdemo">
<label for="clicktoggle">ここをクリックしてください</label>
<input type="checkbox" id="clicktoggle">
<div>
<img src="https://mebee.info/wp-content/uploads/2021/01/neko.jpg" alt="neko" style="width: 100%; max-width: 300px;"/>
</div>
</div>
</section>
ブラウザ上で表示した結果

-
前の記事
rails6 webpackerでmaterial-iconsを使う 2021.01.19
-
次の記事
php 複数の連想配列の差分を取得する 2021.01.19
コメントを書く