CSS Click Event : Using CSS for Click Events
CSS doesn’t provide any official way to handle a click event in CSS. But there are some very interesting tricks that we can use to “detect” a click using CSS only, without a single line of JavaScript, and this is what we are going to talk about today.
How ot Works ?
The HTML
1
2
| <input type="checkbox"><p class="to-be-changed">I'm going to be red! It's gonna be legen... Wait for it...</p> |
The CSS
1
2
3
4
5
6
7
| .to-be-changed { color: black;}input[type=checkbox]:checked ~ .to-be-changed { color: red;} |
As you can see, it relies on the :checked pseudo-class and on the general sibling selector
~. Please note that it also works like a charm with the adjacent sibling selector +. Basically, it says “if the checkbox is checked, then the following elements with the .to-be-changed class will be red”.
Okay, a checkbox isn’t very sexy, but you can totally make something nicer by hiding the checkbox and binding a label to it. Something like this maybe:
1
2
3
| <input type="checkbox" id="toggle"><label for="toggle">Click me!</label><p class="to-be-changed">I'm going to be red! It's gonna be legen... Wait for it...</p> |
So we hide the checkbox and use the label to trigger the click event.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| input[type=checkbox] { position: absolute; top: -9999px; left: -9999px;}label { display: block; background: #08C; padding: 5px; border: 1px solid rgba(0,0,0,.1); border-radius: 2px; color: white; font-weight: bold;}input[type=checkbox]:checked ~ .to-be-changed { color: red;} |
This way, you have some kind of button triggering the color change on the paragraph. Isn’t that cool? Re-clicking on the button is switching the color back to black of course.
(Note that there are different possibilities for hiding the checkbox, the most obvious of all being
display:none.)
Comments
Post a Comment
Do Not Spam