我正在尝试为一个按钮设置动画,该按钮应该在底层有一个黑色圆圈,顶部有居中的白色文本。黑色圆圈应从全尺寸缩放到较小尺寸,而文本应使用混合混合模式,以便在部分文本仍在圆圈内时保持白色,当部分文本在圆圈外时保持黑色。
这是一个可视化所需效果的 GIF:http: //g.recordit.co/bg4Jf7ivZ3.gif
我尝试使用以下代码创建它:
.menu {
position:fixed;
bottom:0;
left:0;
background-color:white;
padding:4rem;
}
.container {
width:50px;
height:50px;
position:relative;
}
.container:after {
z-index:-1;
position:absolute;
border-radius:50px;
top:0;
left:0;
right:0;
bottom:0;
content:"";
background:black;
animation:scale 1s linear alternate-reverse infinite;
}
.text {
z-index:1;
color:white;
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
mix-blend-mode: difference;
}
@keyframes scale {
from {
margin:0;
}
to {
margin:15px;
}
}
<div class="menu">
<div class="container">
<div class="text">Information</div>
</div>
</div>
我在@keyframes 中为边距设置动画的原因是因为使用变换会出于某种原因移除混合混合模式。似乎还需要一个.menu
设置了背景颜色的包装器(在这种情况下),以便文本在圆圈外时改变颜色。
无论如何,这只适用于 Chrome。有没有其他方法可以在尽可能多的浏览器中工作?
有没有办法让文本在圆圈外改变它的颜色,而不必为包装设置背景颜色?我将按钮固定在页面上,如果有办法在它的容器上没有纯色背景颜色,以便它与页面背景中的任何内容混合,我会更喜欢。