
By kjSage
Makes use of tabindex, z-index/opacity and :focus-within for a hover that is responsive on mobile and accessible to screen readers and keyboard users. Add your own styling to the .container and .hover classes.
Aside from typical hover usage, the hover can be tabbed onto (for keyboard/screen reader users) and the content will remain showing until tabbed out of. Clicking inside the hover area will produce the same effect, and allow you to move the cursor on or off the hover area without losing sight of what's contained within.
Working, more styled version on my codepen, here.
Hover paragraph
<style> /* Hover Container and main background - the stuff that surrounds your hover */ .container { width: 300px; height: 400px; margin: 10px auto; padding: 15px; background: #232323; background: url('https://placehold.it/300x4600.png') center no-repeat; background-size: cover; border: 2px solid #252D34; z-index: 1; } /* Your styles for the inner div that shows when hovered go here. Opacity and z-index keep everything hidden properly */ .hover { background: #111; color: #a0a0a0; width: 100%; height: 100%; overflow: auto; padding: 10px; opacity: 0; z-index: 0; transition: all ease-in-out .2s; } /* The hover state of the container. Notice that there's an added focus-within, this is what allows keyboards to access the hover, and like tabindex="0" must remain in the css for this to work */ .container:hover .hover, .container:focus-within .hover { opacity: 1; z-index: 1; } /* Eliminates the hover on small screens, resets width and height */ @media (max-width: 1000px) { .container, .hover {width: 100%; height: unset; z-index: 1; opacity: 1; visibility: visible;} } </style> <div class="container"> <div class="hover" tabindex="0"><h1>Hover Heading</h1> <p>Hover paragraph</p> </div> </div>
By kjSage
By using this site, you agree to our Terms of Use, Guidelines and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.