使按钮文本透明以显示其背后的动画渐变
Make button text transparent to reveal animated gradient behind it
我有一个按钮位于带有动画渐变的元素之上。我想要的是按钮的背景为白色,文本为透明,以便显示按钮后面的动画渐变。我假设这是可能的,但我被困住了。
这是我目前所知道的...
.gradient {
width: 100%;
height: 500px;
text-align: center;
background: linear-gradient(135deg, #53abdf 0%, #019c92 16%, #a1b524 37%, #a1b524 53%, #ea9c2e 70%, #db4025 85%, #db4025 85%);
background-size: 200% 100%;
padding-top: 100px;
-webkit-animation: moveGradient 40s ease infinite;
}
.button {
color: #fff;
text-decoration: none;
font-family: arial, sans-serif;
font-weight: bold;
font-size: 30px;
border: 4px solid #fff;
padding: 20px;
}
.button:hover {
background-color: #fff;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-webkit-animation: moveGradient 40s ease infinite;
}
@-webkit-keyframes moveGradient {
0% {
background-position: 0% 47%
}
50% {
background-position: 100% 54%
}
100% {
background-position: 0% 47%
}
}
<div class="gradient">
<a class="button" href="#">Button</a>
</div>
您必须在额外的 span
内向文本背景添加相同的线性渐变 ,然后相应地调整 CSS。
.gradient {
width: 100%;
height: 500px;
text-align: center;
background: white linear-gradient(135deg, #53abdf 0%, #019c92 16%, #a1b524 37%, #a1b524 53%, #ea9c2e 70%, #db4025 85%, #db4025 85%);
background-size: 200% 100%;
padding-top: 100px;
-webkit-animation: moveGradient 40s ease infinite;
}
.button {
color: #fff;
text-decoration: none;
font-family: arial, sans-serif;
font-weight: bold;
font-size: 30px;
border: 4px solid #fff;
padding: 20px;
}
.button:hover {
background: #fff;
}
.button:hover span {
background: linear-gradient(135deg, #53abdf 0%, #019c92 16%, #a1b524 37%, #a1b524 53%, #ea9c2e 70%, #db4025 85%, #db4025 85%);
background-size: 200% 100%;
background-color: #fff;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-webkit-animation: moveGradient 40s ease infinite;
}
@-webkit-keyframes moveGradient {
0% {
background-position: 0% 47%
}
50% {
background-position: 100% 54%
}
100% {
background-position: 0% 47%
}
}
<div class="gradient">
<a class="button" href="#"><span>Button</span></a>
</div>
不过请注意,这并不完美,因为元素具有不同的大小,因此渐变 "size" 实际上不同,因此两者并不完全匹配。
您可以将文本放在元素中,并在悬停按钮时使其成为 opacity: 0;
HTML:
<div class="gradient">
<a class="button" href="#"><span class="hide">button</span></a>
</div>
CSS:
.button:hover .hide {
opacity: 0;
}
我有一个按钮位于带有动画渐变的元素之上。我想要的是按钮的背景为白色,文本为透明,以便显示按钮后面的动画渐变。我假设这是可能的,但我被困住了。
这是我目前所知道的...
.gradient {
width: 100%;
height: 500px;
text-align: center;
background: linear-gradient(135deg, #53abdf 0%, #019c92 16%, #a1b524 37%, #a1b524 53%, #ea9c2e 70%, #db4025 85%, #db4025 85%);
background-size: 200% 100%;
padding-top: 100px;
-webkit-animation: moveGradient 40s ease infinite;
}
.button {
color: #fff;
text-decoration: none;
font-family: arial, sans-serif;
font-weight: bold;
font-size: 30px;
border: 4px solid #fff;
padding: 20px;
}
.button:hover {
background-color: #fff;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-webkit-animation: moveGradient 40s ease infinite;
}
@-webkit-keyframes moveGradient {
0% {
background-position: 0% 47%
}
50% {
background-position: 100% 54%
}
100% {
background-position: 0% 47%
}
}
<div class="gradient">
<a class="button" href="#">Button</a>
</div>
您必须在额外的 span
内向文本背景添加相同的线性渐变 ,然后相应地调整 CSS。
.gradient {
width: 100%;
height: 500px;
text-align: center;
background: white linear-gradient(135deg, #53abdf 0%, #019c92 16%, #a1b524 37%, #a1b524 53%, #ea9c2e 70%, #db4025 85%, #db4025 85%);
background-size: 200% 100%;
padding-top: 100px;
-webkit-animation: moveGradient 40s ease infinite;
}
.button {
color: #fff;
text-decoration: none;
font-family: arial, sans-serif;
font-weight: bold;
font-size: 30px;
border: 4px solid #fff;
padding: 20px;
}
.button:hover {
background: #fff;
}
.button:hover span {
background: linear-gradient(135deg, #53abdf 0%, #019c92 16%, #a1b524 37%, #a1b524 53%, #ea9c2e 70%, #db4025 85%, #db4025 85%);
background-size: 200% 100%;
background-color: #fff;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-webkit-animation: moveGradient 40s ease infinite;
}
@-webkit-keyframes moveGradient {
0% {
background-position: 0% 47%
}
50% {
background-position: 100% 54%
}
100% {
background-position: 0% 47%
}
}
<div class="gradient">
<a class="button" href="#"><span>Button</span></a>
</div>
不过请注意,这并不完美,因为元素具有不同的大小,因此渐变 "size" 实际上不同,因此两者并不完全匹配。
您可以将文本放在元素中,并在悬停按钮时使其成为 opacity: 0;
HTML:
<div class="gradient">
<a class="button" href="#"><span class="hide">button</span></a>
</div>
CSS:
.button:hover .hide {
opacity: 0;
}