.button { float: left; min-width: 150px; max-width: 250px; display: block; padding: 10px 20px; letter-spacing: 2px; text-transform: uppercase; font-weight: 600; font-size: 13px; text-align: center; border: 2px solid; background: none; color: inherit; vertical-align: middle; position: relative; z-index: 1; -webkit-backface-visibility: hidden; -moz-osx-font-smoothing: grayscale; &:hover, &:focus { cursor: pointer; } } .button { overflow: hidden; padding: 0; -webkit-transition: border-color 1s, background-color 1s; transition: border-color 1s, background-color 1s; -webkit-transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1); transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1); } .button::after { content: attr(data-text); position: absolute; width: 100%; height: 100%; top: -1px; left: 0; opacity: 0; color: $main-color; -webkit-transform: translate3d(0, 25%, 0); transform: translate3d(0, 25%, 0); } .button > span { display: block; } .button::after, .button > span { padding: 10px 20px; -webkit-transition: -webkit-transform 0.3s, opacity 0.3s; transition: transform 0.3s, opacity 0.3s; -webkit-transition-timing-function: cubic-bezier(0.3, 1, 0.3, 1); transition-timing-function: cubic-bezier(0.3, 1, 0.3, 1); } .button:hover { border-color: $main-color; background-color: rgba(63, 81, 181, 0); } .button:hover::after { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } .button:hover > span { opacity: 0; -webkit-transform: translate3d(0, -25%, 0); transform: translate3d(0, -25%, 0); } a.button { span { padding: 10px 20px; } &::before { content: none; } }