@import url("https://fonts.googleapis.com/css?family=Raleway:300"); :root { --btn-border: 1px solid rgba(255, 255, 255, 0.2); --btn-bg: transparent; --btn-shadow: 1px 1px 25px 10px rgba(255, 255, 255, 0.5); --btn-text-color: #f4f4f4; --shine-degree: 120deg; --shine-color: rgba(255, 255, 255, 0.2); --shine-effect: linear-gradient( var(--shine-degree), transparent, var(--shine-color), transparent ); --shine-transition: all 0.65s ease-in-out; } .btn { position: relative; overflow: hidden; font-size: 1.1rem; padding: 1rem 3rem; border-radius: 4px; text-decoration: none; border: var(--btn-border); color: var(--btn-text-color); background: var(--btn-bg); } .btn:not(:last-child) { margin-bottom: 3rem; } .btn::before { content: ""; position: absolute; top: 0; width: 100%; height: 100%; background: var(--shine-effect); } .btn-hover::before { left: -100%; transition: var(--shine-transition); } .btn-hover:hover { box-shadow: var(--btn-shadow); } .btn-hover:hover::before { left: 100%; } .btn-anim::before { animation: shine 5s ease-in-out infinite; } @keyframes shine { 0% { left: -100%; transition-property: left; } 45%, 100% { left: 100%; transition-property: left; } } .btn-alt { display: inline-flex; align-items: center; justify-content: center; width: 250px; height: 60px; font-size: 1.1rem; position: relative; overflow: hidden; border-radius: 4px; text-decoration: none; border: var(--btn-border); color: var(--btn-text-color); background: var(--btn-bg); } .btn-alt:not(:last-child) { margin-bottom: 3rem; } .btn-alt::before, .btn-alt::after { content: ""; display: block; position: absolute; height: 100%; top: 0; } .btn-alt::before { background: rgba(255, 255, 255, 0.5); width: 60px; left: 0; filter: blur(30px); animation: shine-alt1 5s ease-in-out infinite; } .btn-alt::after { background: rgba(255, 255, 255, 0.2); width: 30px; left: 30px; filter: blur(5px); animation: shine-alt2 5s ease-in-out infinite; } @keyframes shine-alt1 { 0% { opacity: 0.5; transform: translateX(-100px) skewX(-15deg); transition-property: opacity, transform; } 45%, 100% { opacity: 0.6; transform: translateX(300px) skewX(-15deg); transition-property: opacity, transform; } } @keyframes shine-alt2 { 0% { opacity: 0; transform: translateX(-100px) skewX(-15deg); transition-property: opacity, transform; } 45%, 100% { opacity: 1; transform: translateX(300px) skewX(-15deg); transition-property: opacity, transform; } }