Я пытаюсь анимировать кнопку, которая должна иметь черный кружок в нижнем слое с центрированным белым текстом сверху. Черный круг должен масштабироваться от полного размера до меньшего размера, в то время как текст должен использовать режим смешивания, чтобы он оставался белым, когда часть текста все еще находится в круге, и черным, когда часть текста находится за пределами круга.
Вот 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, заключается в том, что использование transform по какой-то причине удаляет режим смешивания. Также кажется, что должна быть оболочка (в данном случае .menu
) с заданным фоновым цветом, чтобы текст мог менять цвет вне круга.
В любом случае, это работает только в Chrome. Есть ли другой способ сделать это, который будет работать в максимально возможном количестве браузеров?
И есть ли способ изменить цвет текста, находясь вне круга, без необходимости устанавливать цвет фона для оболочки? Я помещаю кнопку фиксированной на страницу и предпочел бы, чтобы был способ не иметь сплошной фоновый цвет на его контейнере, чтобы он сливался с тем, что находится на заднем плане страницы.