Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialMárcia Estima
6,473 PointsPseudo-class hover on mobile devices?
I'm learning CSS but I didn't figure out yet if the hover pseudo-class works in any way on mobile devices... Any clues?
6 Answers
Sean T. Unwin
28,690 PointsYou may be able to get away with just using CSS, depending on what you're hovering over and it's use-case when clicked, if it is to be clicked.
An easy answer, though maybe not the best depending, again, on UX, would be to simply add :acitve
or :focus
to be included with your :hover
rules. You may or may not need both, :active
and :focus
; perhaps one or the other may suffice.
E.g.
.my-class:hover,
.my-class:active,
.my-class:focus {
...
}
Another way to accomplish this, for elements which would only have a :hover
situation (read: not a click like an anchor) is directly in your HTML markup by attaching the onclick
attribute with a value of void(0)
.
Possibly, a better solution, if using this technique would be, especially on an anchor or other click element would be to use ontouchstart
. With ontouchstart
you can leave the value empty within the quotes. I previously made a Codepen experiment using this technique that you can check.
One caveat to using this approach is the user will have to tap outside of the element in order to lose focus in order to revert the element back to it's original state declared in the CSS.
E.g.
<div class="my-class" onclick="void(0)"></div>
<!-- OR -->
<div class="my-class" ontouchstart=""></div>
Yet another way could be to use Modernizr as it provides .touch
and .no-touch
classes if the device/browser supports touch events or not. Then you could accomodate those users accordingly, such as not displaying/ performing the :hover
effects for users that don't have hover events.
Ayoub AIT IKEN
12,314 PointsHey Marcia, to be brief towrds your question, there is some pseudo-classes that work in mobile devices, like :active, but pseudo-class :hover, is activated when a pointer is hovering the tag to wich is applied, so since the mobile device doesnt have a pointer with a mouse or smthg, it cant be applied to it. i hope this helps ! Ayoub
Márcia Estima
6,473 PointsThanks! So, is there a way to apply an alternative pseudo-class specific on mobile devices with media queries, or something? I was thinking in creating a gallery with images that animates with the hover pseudo-class, but I have to figure out how to adapt this animation on mobile devices...
Ayoub AIT IKEN
12,314 Pointsactually , no idea, but look if you can use your animation by using Javascript !
I hope I ve helped
Márcia Estima
6,473 PointsCool! Thank You!
cabrinha98
10,616 PointsThe pseudo-class hover should @least work for samsung devices with the air-view function. I have encountered some hover`s with my note 4 using air-view combined with the pen =)