How to set :active style to button in mobile
css
tomoyukikashiro
Outline
How to set :active style to button in mobile ?
if you set touchstart and touchend eventListener and switch class (e.g. .active) to button you are happy :)
I’ll tell you easier way.
CSS
css is normal. you set :hover, :forcus, and :active Pseudo-classes.
.btn {
background-color: blue;
}
.btn:hover {
background-color: red;
}
.btn:focus {
background-color: green;
}
.btn:active {
background-color: gray;
}
Javascript
There are a trick. You should set empty function to touchstart event in body like this.
window.onload = function() {
if(/iP(hone|ad)/.test(window.navigator.userAgent)) {
document.body.addEventListener('touchstart', function() {}, false);
}
}
Demo
Result
There are some difference between browser. These table is summary of style.
| browser | hover | clicking | after click |
|---|---|---|---|
| chrome | :hover | :active | :focus |
| firefox, safari | :hover | :active | :hover |
| mobile safari | :active | :hover | |
| android default browser | :hover | :hover |
please tell me
android chrome result. I don’t have it.
Best plactice
Desktop
match :hover and :focus style.
sass
$hover: red
.btn {
background-color: blue;
}
.btn:hover {
background-color: $hover;
}
.btn:focus {
background-color: $hover;
}
.btn:active {
background-color: gray;
}
mobile
nothing.