"hover effect"
Bootstrap 3.0.0 Snippet by evarevirus

<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> <script src="//code.jquery.com/jquery-1.11.1.min.js"></script> <!------ Include the above in your HEAD tag ----------> <!DOCTYPE html><html lang='en' class=''> <head><script src='//production-assets.codepen.io/assets/editor/live/console_runner-079c09a0e3b9ff743e39ee2d5637b9216b3545af0de366d4b9aad9dc87e26bfd.js'></script><script src='//production-assets.codepen.io/assets/editor/live/events_runner-73716630c22bbc8cff4bd0f07b135f00a0bdc5d14629260c3ec49e5606f98fdd.js'></script><script src='//production-assets.codepen.io/assets/editor/live/css_live_reload_init-2c0dc5167d60a5af3ee189d570b1835129687ea2a61bee3513dee3a50c115a77.js'></script><meta charset='UTF-8'><meta name="robots" content="noindex"><link rel="shortcut icon" type="image/x-icon" href="//production-assets.codepen.io/assets/favicon/favicon-8ea04875e70c4b0bb41da869e81236e54394d63638a1ef12fa558a4a835f1164.ico" /><link rel="mask-icon" type="" href="//production-assets.codepen.io/assets/favicon/logo-pin-f2d2b6d2c61838f7e76325261b7195c27224080bc099486ddd6dccb469b8e8e6.svg" color="#111" /><link rel="canonical" href="https://codepen.io/m4r1vs/pen/qVReQz" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <style class="cp-pen-styles">/* --------------------------------------------------------- Only this CSS is required for this effect to work This is pure CSS, using SCSS only for other page styles --------------------------------------------------------- */ .applyEffect { transition: fill .13s; fill: transparent; } svg:hover .applyEffect, svg:focus .applyEffect { fill: var(--hover-color); } /* --------------------------------------------------------- Other page styles, nothing to do with the effect --------------------------------------------------------- */ :root { --body-background-color: #2e4369; --box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.3); --font-stack: Helvetica Neue, Helvetica, Arial, sans-serif; } body, html { background: var(--body-background-color); font-family: var(--font-stack); text-align: center; } body { padding: 0 12px; } * { box-sizing: border-box; } a { color: inherit; text-decoration: none; font-weight: bold; } a:hover { text-decoration: underline; } main { background: #fefefe; padding: 16px 8px; margin: 56px auto; max-width: 720px; border-radius: 12px; box-shadow: var(--box-shadow); } main .isSupported { display: none; } main .notSupported { display: block; background: rgba(255, 0, 0, 0.13); padding: 8px 16px; border-radius: 8px; } @supports (--a: 0) { main .isSupported { display: block; } main .notSupported { display: none; } } main h1 { margin: 0 0 8px 0; font-weight: 100; } main p { max-width: 512px; margin: 0 auto 16px; } main svg { height: 112px; margin: 8px; } h2 { color: rgba(255, 255, 255, 0.57); font-size: 18px; font-weight: 100; } h2 svg { height: 20px; position: relative; bottom: -2px; } h2 svg path { stroke: rgba(255, 255, 255, 0.57); } h2 svg:hover .applyEffect { fill: var(--hover-color); } h2 svg:hover path { stroke: #000; } </style></head><body> <main> <h1>Cool CSS hover effect</h1> <p class="notSupported"> Seems like CSS custom properties are not supported by your browser. Check if there's an update or consider switching to <a href="https://caniuse.com/#feat=css-variables">a supported one</a>. </p> <div class="isSupported"> <p> Adding a cool hover/focus effect to icons from the <a href="https://orioniconlibrary.com">Orion Icon Library</a> with the help of CSS custom properties. If you want to see how the effect looks like in a real application check out <a href="https://mnged.me">MNGED</a>, a small PWA I host. </p> <svg tabindex=0 class="hoverEffect" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" aria-labelledby="title" aria-describedby="desc" role="img" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>Coffee</title> <desc>A color styled icon from Orion Library.</desc> <path class="applyEffect" data-name="layer3" fill="#f16262" d="M10 10h44v12H10zm2 0l4-8h32l4 8"></path> <path data-name="opacity" fill="#fff" opacity=".25" d="M47 10l-4-8h-5l3 8v12h8V10h-2z"></path> <path data-name="opacity" fill="#101129" opacity=".25" d="M19.1 10l4-8H16l-4 8h-2v12h7.1V10h2z"></path> <path class="applyEffect" data-name="layer2" fill="#fdefe5" d="M14 22l.4 8h35.2l.4-8M15.2 46l.8 16h32l.8-16"></path> <path class="applyEffect" data-name="layer1" fill="#c59483" d="M49.6 30H14.4l.8 16h33.6l.8-16z"></path> <path data-name="opacity" fill="#101129" opacity=".18" d="M20 22h-6l.4 8h6l-.4-8zm-4.8 24l.8 16h6l-.8-16h-6z"></path> <path data-name="opacity" fill="#101129" opacity=".25" d="M20.4 30h-6l.8 16h6l-.8-16z"></path> <path data-name="stroke" fill="none" stroke="#2f446a" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2" d="M10 10h44v12H10zm2 0l4-8h32l4 8M14 22l.4 8h35.2l.4-8M15.2 46l.8 16h32l.8-16m.8-16H14.4l.8 16h33.6l.8-16z"></path> </svg> <svg tabindex=0 class="hoverEffect" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" aria-labelledby="title" aria-describedby="desc" role="img" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>Glazed Donut</title> <desc>A color styled icon from Orion Library.</desc> <path class="applyEffect" data-name="layer2" d="M32 62a30 30 0 0 0 26.6-16.2C50 42 49.2 50.6 46 50s-4.2-3.3-6-.4-4.7 3-7.9 2.4-3.4.7-6.3 2-7.1-1.2-5.8-6-4.7-5.1-6-2-2.2 5.6-4 5.9h-.4A29.9 29.9 0 0 0 32 62z" fill="#de9d63"></path> <path class="applyEffect" data-name="layer1" d="M32 2A30 30 0 0 0 9.6 52h.4c1.9-.3 2.8-2.8 4-5.9s7.2-2.6 6 2 2.9 7.3 5.8 6 3.1-2.6 6.3-2 6.1.5 7.9-2.4 2.8-.2 6 .4 4-8 12.6-4.2A30 30 0 0 0 32 2zm0 40a10 10 0 1 1 10-10 10 10 0 0 1-10 10z" fill="#f5a4c4"></path> <path data-name="opacity" d="M20 36a10 10 0 0 0 19.7 2.4 10 10 0 0 1-17.4-8.8A10 10 0 0 0 20 36zM32 2A30 30 0 0 0 4.2 20.6a30 30 0 0 1 54.2 25.1h.3A30 30 0 0 0 32 2z" fill="#fff" opacity=".25"></path> <circle data-name="stroke" cx="32" cy="32" r="30" fill="none" stroke="#2f446a" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2"></circle> <circle class="applyEffect" data-name="stroke" cx="32" cy="32" r="10" fill="none" stroke="#2f446a" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2"></circle> <path data-name="stroke" d="M10 51.9c1.9-.3 2.8-2.8 4-5.9s7.2-2.6 6 2 2.9 7.3 5.8 6 3.1-2.6 6.3-2 6.1.5 7.9-2.4 2.8-.2 6 .4 4-8 12.6-4.2M18 14l4 4m-8 8l-4 4m2 8h4m10-28h8m10 4l-4 4m10 6l4 2m-4 8v4" fill="none" stroke="#2f446a" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2"></path> </svg> <svg tabindex=0 class="hoverEffect" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" aria-labelledby="title" aria-describedby="desc" role="img" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>Pizza Slice</title> <desc>A color styled icon from Orion Library.</desc> <path class="applyEffect" fill="#faf287" d="M22.473 9.3L7 54l42.978-18.91C44.833 23.128 34.618 14.087 22.473 9.3z" data-name="layer3"></path> <circle class="applyEffect" fill="#f04848" r="4" cy="23.999" cx="28.999" data-name="layer2"></circle> <circle class="applyEffect" fill="#f04848" r="2" cy="33.999" cx="34.999" data-name="layer2"></circle> <circle class="applyEffect" fill="#f04848" r="2.5" cy="37.499" cx="20.999" data-name="layer2"></circle> <path class="applyEffect" fill="#f6b36d" d="M25 2l-2.527 7.3c12.145 4.787 22.36 13.828 27.507 25.787L57 32C51.011 18.087 39.13 7.567 25 2z" data-name="layer1"></path> <path opacity=".18" fill="#101129" d="M51.981 33.087C46.835 21.128 36.62 12.085 24.475 7.3l1.668-4.818C25.761 2.321 25.384 2.153 25 2l-2.527 7.3c12.145 4.787 22.36 13.828 27.507 25.787L57 32c-.136-.314-.29-.619-.432-.93z" data-name="opacity"></path> <circle stroke-width="2" stroke-linejoin="miter" stroke-linecap="round" stroke="#2f446a" fill="none" r="4" cy="23.999" cx="28.999" data-name="stroke"></circle> <circle stroke-width="2" stroke-linejoin="miter" stroke-linecap="round" stroke="#2f446a" fill="none" r="2" cy="33.999" cx="34.999" data-name="stroke"></circle> <circle stroke-width="2" stroke-linejoin="miter" stroke-linecap="round" stroke="#2f446a" fill="none" r="2.5" cy="37.499" cx="20.999" data-name="stroke"></circle> <path stroke-width="2" stroke-linejoin="miter" stroke-linecap="round" stroke="#2f446a" fill="none" d="M22.473 9.3L7 54l42.978-18.91C44.833 23.128 34.618 14.087 22.473 9.3z" data-name="stroke"></path> <path stroke-width="2" stroke-linejoin="miter" stroke-linecap="round" stroke="#2f446a" fill="none" d="M49.979 35.087L57 32C51.011 18.087 39.13 7.567 25 2l-2.527 7.3m-5.474 40.299v8.4m8-11.92v15.92m16-22.933v12.933" data-name="stroke"></path> </svg> <svg tabindex=0 class="hoverEffect" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" aria-labelledby="title" aria-describedby="desc" role="img" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>Smile Emoji</title> <desc>A color styled icon from Orion Library.</desc> <circle class="applyEffect" data-name="layer3" cx="32" cy="32" r="30" fill="#fc6"></circle> <path data-name="opacity" d="M60 38a36.2 36.2 0 0 1-.5 6A30 30 0 0 0 32 2l-3.8.3A36 36 0 0 1 60 38z" fill="#fff" opacity=".2"></path> <path data-name="opacity" d="M8 28A29.9 29.9 0 0 1 18.5 5.2a30 30 0 1 0 33 49.6A30 30 0 0 1 8 28z" fill="#000064" opacity=".15"></path> <circle class="applyEffect" data-name="layer1" cx="22" cy="26" r="2" fill="#64738f"></circle> <circle class="applyEffect" data-name="layer1" cx="42" cy="26" r="2" fill="#64738f"></circle> <path class="applyEffect" data-name="layer2" d="M14 40c2.2 7.9 9.4 14 18 14s15.8-6.1 18-14z" fill="#fff"></path> <path class="applyEffect" data-name="layer1" d="M16 44a52 52 0 0 0 15 2 78.9 78.9 0 0 0 17-2s-3 10-16 10a17.2 17.2 0 0 1-16-10z" fill="#64738f"></path> <circle data-name="stroke" cx="32" cy="32" r="30" fill="none" stroke="#2e4369" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2"></circle> <circle data-name="stroke" cx="22" cy="26" r="2" fill="none" stroke="#2e4369" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2"></circle> <circle data-name="stroke" cx="42" cy="26" r="2" fill="none" stroke="#2e4369" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2"></circle> <path data-name="stroke" d="M14 40c2.2 7.9 9.4 14 18 14s15.8-6.1 18-14z" fill="none" stroke="#2e4369" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2"></path> </svg> <svg tabindex=0 class="hoverEffect" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" aria-labelledby="title" aria-describedby="desc" role="img" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>Taxi</title> <desc>A color styled icon from Orion Library.</desc> <path class="applyEffect" data-name="layer2" d="M62 52V36.2a5 5 0 0 0-1.3-3.5l-2-2C57.5 29.5 56 28 54 28H10c-2 0-3.5 1.5-4.7 2.7l-2 2A5 5 0 0 0 2 36.2V52z" fill="#fc0"></path> <rect class="applyEffect" data-name="layer4" x="10" y="38" width="10" height="6" rx="2" ry="2" fill="#a0d6ef"></rect> <rect class="applyEffect" data-name="layer4" x="44" y="38" width="10" height="6" rx="2" ry="2" fill="#a0d6ef"></rect> <path class="applyEffect" data-name="layer3" d="M16 52v7a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3v-7zm42 0v7a3 3 0 0 1-3 3h-4a3 3 0 0 1-3-3v-7z" fill="#7b8baf"></path> <path class="applyEffect" data-name="layer2" fill="#fc0" d="M24 2h16v8H24z"></path> <path class="applyEffect" data-name="layer1" d="M54 28a4.3 4.3 0 0 1 2 .5s-1-10.2-1.4-13.2a5.7 5.7 0 0 0-5.5-5.3H14.9a5.7 5.7 0 0 0-5.5 5.3C9 18.3 8 28.5 8 28.5a4.3 4.3 0 0 1 2-.5z" fill="#c3d6e0"></path> <path data-name="opacity" d="M24.9 10L8.1 26.8v1.7H8a4.3 4.3 0 0 1 2-.5h11.1l18-18zm26.4.2L33.5 28h8.8l11.5-11.5-.2-2.1a6.2 6.2 0 0 0-2.3-4.2z" fill="#fff" opacity=".5"></path> <path data-name="opacity" d="M3.3 32.7A5 5 0 0 0 2 36.2V52h60v-2.9H6.9V35c0-2.8 2.5-7 3.1-7-2 0-3.4 1.5-4.7 2.7z" fill="#000064" opacity=".15"></path> <path data-name="opacity" d="M58.7 30.7C57.5 29.5 56 28 54 28H10c-.4 0-1.6 1.8-2.4 3.9h46.7c1.5 0 6 .6 7.2 2a4.2 4.2 0 0 0-.8-1.2z" fill="#fff" opacity=".2"></path> <path data-name="opacity" fill="#000064" opacity=".2" d="M6 52h10v3.94H6zm42 0h10v3.94H48z"></path> <path data-name="stroke" d="M16 52v7a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3v-7m52 0v7a3 3 0 0 1-3 3h-4a3 3 0 0 1-3-3v-7m14 0V36.2a5 5 0 0 0-1.3-3.5l-2-2C57.5 29.5 56 28 54 28H10c-2 0-3.5 1.5-4.7 2.7l-2 2A5 5 0 0 0 2 36.2V52z" fill="none" stroke="#2e4369" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2"></path> <rect data-name="stroke" x="10" y="38" width="10" height="6" rx="2" ry="2" fill="none" stroke="#2e4369" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2"></rect> <rect data-name="stroke" x="44" y="38" width="10" height="6" rx="2" ry="2" fill="none" stroke="#2e4369" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2"></rect> <path data-name="stroke" fill="none" stroke="#2e4369" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2" d="M28 42h8M24 10V2h16v8M8 28.5s1-10.2 1.4-13.2a5.7 5.7 0 0 1 5.5-5.3h34.2a5.7 5.7 0 0 1 5.5 5.3c.4 3 1.4 13.2 1.4 13.2"></path> </svg> </div> </main> <h2><coded /> with <svg class="hoverEffect" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" aria-labelledby="title" aria-describedby="desc" role="img" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>Hearts</title> <desc>A color styled icon from Orion Library.</desc> <path class="applyEffect" data-name="layer2" d="M53 27a9.7 9.7 0 0 0-9 5.9 9.7 9.7 0 0 0-9-5.9 8.9 8.9 0 0 0-9 8.9c0 8.3 6.6 16 18 23.1 11.4-7.1 18-14.8 18-23.1a8.9 8.9 0 0 0-9-8.9z" fill="#f27eb1"></path> <path class="applyEffect" data-name="layer1" d="M35 27c3.9 0 7.9 2.5 9.2 5.9.5-1.4.8-2.7 2.8-3.6a26.4 26.4 0 0 0 3.2-12.1A12.2 12.2 0 0 0 38.1 5c-5.2 0-10.4 3.4-12 8.1C24.4 8.4 19.3 5 14 5A12.1 12.1 0 0 0 2 17.2c0 11.4 8.8 22.2 24 32 1.3-.8 2.5-2.2 3.7-2.2-2.4-4-3.7-7.2-3.7-10.9a9.2 9.2 0 0 1 9-9.1z" fill="#f27e7c"></path> <path data-name="stroke" d="M46.7 29.3A24.5 24.5 0 0 0 50 17.2 12.1 12.1 0 0 0 38 5a12.9 12.9 0 0 0-12 8.1A12.9 12.9 0 0 0 14 5 12.1 12.1 0 0 0 2 17.2c0 11.4 8.8 22 24 31.8l3.7-2.5" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2"></path> <path data-name="stroke" d="M53 27a9.7 9.7 0 0 0-9 5.9 9.7 9.7 0 0 0-9-5.9 8.9 8.9 0 0 0-9 8.9c0 8.3 6.6 16 18 23.1 11.4-7.1 18-14.8 18-23.1a8.9 8.9 0 0 0-9-8.9z" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="miter" stroke-width="2"></path> </svg> and <svg class="hoverEffect" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" aria-labelledby="title" aria-describedby="desc" role="img" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>Coffee Beans</title> <desc>A color styled icon from Orion Library.</desc> <path class="applyEffect" fill="#775958" d="M39.025 36.465c3.352 9.283-1.988 17.943-11.93 19.348-9.94 1.402-20.716-4.985-24.068-14.268-3.351-9.281 1.989-17.943 11.93-19.346 9.94-1.402 20.715 4.985 24.068 14.266z" data-name="layer1"></path> <path class="applyEffect" fill="#775958" d="M40.045 41.996c8.998-.127 17.967-6.125 20.975-14.457 3.35-9.283-1.99-17.945-11.93-19.347-9.94-1.403-20.715 4.986-24.069 14.265a30.93 30.93 0 0 0-.244.725" data-name="layer1"></path> <path stroke-width="2" stroke-linejoin="miter" stroke-linecap="round" stroke="#000" fill="none" d="M9.98 32.002c3.659 4.922 5.946 5.82 12 6 6 .176 9.854 1.584 11.999 6" data-name="stroke"></path> <path stroke-width="2" stroke-linejoin="miter" stroke-linecap="round" stroke="#000" fill="none" d="M38.979 36.46c3.351 9.282-1.989 17.945-11.93 19.347S6.332 50.823 2.98 41.54c-3.35-9.282 1.99-17.944 11.93-19.346 9.94-1.403 20.715 4.984 24.069 14.265z" data-name="stroke"></path> <path stroke-width="2" stroke-linejoin="miter" stroke-linecap="round" stroke="#000" fill="none" d="M53.973 17.996c-3.659 4.92-5.946 5.82-12 5.998-4.424.131-7.682.932-9.95 3.116" data-name="stroke"></path> <path stroke-width="2" stroke-linejoin="miter" stroke-linecap="round" stroke="#000" fill="none" d="M40.037 41.99c8.998-.127 17.928-6.124 20.936-14.457 3.351-9.28-1.989-17.943-11.93-19.345-9.94-1.405-20.715 4.984-24.068 14.263-.086.245-.168.485-.245.727" data-name="stroke"></path> </svg> by <a href="https://maniyt.de">Marius Niveri</a></h2> <script src='//production-assets.codepen.io/assets/common/stopExecutionOnTimeout-b2a7b3fe212eaa732349046d8416e00a9dec26eb7fd347590fbced3ab38af52e.js'></script> <script >/* Gets all elements with class 'applyEffect' and copies fill into CSS3 custom property. A less convenient, but non-javascript, option is to do this by hand like this: <element style="--hover-color: COLOR"></element> */ document.querySelectorAll('.applyEffect').forEach(function(element) { const hoverColor = element.getAttribute("fill"); // get the fill color // set it as a custom property inline if (hoverColor) element.style.setProperty('--hover-color', hoverColor); }); // One liner alternative with ES6 syntax: // document.querySelectorAll('.applyEffect').forEach(el => el.style.setProperty('--hover-color', el.getAttribute('fill')) || '#fff'); //# sourceURL=pen.js </script> </body></html>

Related: See More


Questions / Comments: