Back
Tutorial on how to create a beautiful email contact button that transforms from ",@" sign to whole email address on hover - CSS only.
<div class="button"> <span>info</span> <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M16 12a4 4 0 10-8 0 4 4 0 008 0zm0 0v1.5a2.5 2.5 0 005 0V12a9 9 0 10-9 9m4.5-1.206a8.959 8.959 0 01-4.5 1.207" /> </svg> <span>designyff.com</span> </div>
.button { display: flex; justify-content: start; align-items: center; cursor: pointer; width: 50px; position: relative; background-color: rgb(69, 165, 249); color: #fff; box-shadow: 0 0 40px #777; border: 1px solid #fff; padding: 10px; border-radius: 100px; transition: .5s; }On hover, we'll increase the width from 50 to 100px and add transition.
.button:hover { width: 180px; transition: .5s; }Text elements inside a button will have the width of 0 and overflow hidden with a little transition.
span { width: 0px; overflow: hidden; transition: .5s; }On hover, first text element (with "info" text) will become 28 pixels wide and we'll add a little transition so that this width change is smooth.
.button:hover span:first-child { width: 28px; transition: .5s; }The second text element (with "designyff.com" text) will become 100 px wide, and with transition, this change will look nice and smooth.
.button:hover span:last-child { width: 100px; transition: .5s; }And that is it.
<div class="button"> <span>info</span> <svg xmlns="http://www.w3.org/2000/svg" width="50" height="50" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> <path stroke-linecap="round" stroke-linejoin="round" d="M16 12a4 4 0 10-8 0 4 4 0 008 0zm0 0v1.5a2.5 2.5 0 005 0V12a9 9 0 10-9 9m4.5-1.206a8.959 8.959 0 01-4.5 1.207" /> </svg> <span>designyff.com</span> </div> <style> .button { display: flex; justify-content: start; align-items: center; cursor: pointer; width: 50px; position: relative; background-color: rgb(69, 165, 249); color: #fff; box-shadow: 0 0 40px #777; border: 1px solid #fff; padding: 10px; border-radius: 100px; transition: .5s; } .button:hover { width: 180px; transition: .5s; } span { width: 0px; overflow: hidden; transition: .5s; } .button:hover span:first-child { width: 28px; transition: .5s; } .button:hover span:last-child { width: 100px; transition: .5s; } </style>Thank you for reading this article.