<h1>BUTTON GRADIENT ANIMATIONS</h1>
		<p>gradient shift on hover</p>
		<div class="container container-one">
			<button>
				Hover over me
				<div class="fill-one"></div>
			</button>
		</div>
		<p>infinite gradient shift on hover</p>
		<div class="container container-two">
			<button>
				Hover over me
				<div class="fill-two"></div>
			</button>
		</div>
html {
	background-image: linear-gradient(to bottom right, #E1BEE7, #B2EBF2);
	height: 150%;
}

h1,
p,
button {
	font-family: Helvetica, sans-serif;
	font-weight: 100;
	color: #fff;
}

h1 {
	letter-spacing: 0.5em;
	text-align: center;
	margin-top: 50px;
	line-height: 1.6em;
}

p {
	font-size: 1.1em;
	text-align: center;
	margin: 110px auto 20px;
	letter-spacing: 0.05em;
}

.container {
	text-align: center;
	position: relative;
	width: 300px;
	margin: 0 auto;
	cursor: pointer;
}

button {
	position: relative;
	height: 50px;
	width: 280px;
	border: 0;
	border-radius: 5px;
	text-transform: uppercase;
	font-size: 1.1em;
	letter-spacing: 0.2em;
	overflow: hidden;
	box-shadow: 0 4px 12px 0 rgba(152, 160, 180, 10);
	z-index: -2;
}

.button-one {
}

.fill-one {
	position: absolute;
	background-image: linear-gradient(to right, #E040FB, #00BCD4);
	height: 70px;
	width: 420px;
	border-radius: 5px;
	margin: -40px 0 0 -140px;
	z-index: -1;
	transition: all 0.4s ease;
}

.container-one:hover .fill-one {
	-webkit-transform: translateX(100px);
	-moz-transform: translateX(100px);
	transform: translateX(100px);
}

.fill-two {
	position: absolute;
	background-image: linear-gradient(to right, #E040FB, #00BCD4);
	background-size: 150% 150%;
	height: 70px;
	width: 420px;
	border-radius: 5px;
	margin: -40px 0 0 -140px;
	z-index: -1;
	transition: all 0.4s ease;
}

.container-two:hover .fill-two {
	-webkit-animation: gradient 3s ease infinite;
	-moz-animation: gradient 3s ease infinite;
	animation: gradient 3s ease infinite;
}

@-webkit-keyframes gradient {
	0% {
		background-position: 0% 50%;
	}
	50% {
		background-position: 100% 50%;
	}
	100% {
		background-position: 0% 50%;
	}
}

@-moz-keyframes gradient {
	0% {
		background-position: 0% 50%;
	}
	50% {
		background-position: 100% 50%;
	}
	100% {
		background-position: 0% 50%;
	}
}

@keyframes gradient {
	0% {
		background-position: 0% 50%;
	}
	50% {
		background-position: 100% 50%;
	}
	100% {
		background-position: 0% 50%;
	}
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.