我想跟踪用户的鼠标和显示渐变文本使用background-clip: text;
文本应该总是可见的黑色。只有当鼠标悬停在文本上时,渐变才会出现(在文本内部),并随着鼠标移动而移动。
这样的事情可能吗?
我发现这个tutorial在他们的动画背景。然而,当我试图添加background-clip: text;
它不工作了。
这是我得到的:
const button = document.querySelector(".shiny");
button.addEventListener("mousemove", (e) => {
const { x, y } = button.getBoundingClientRect();
button.style.setProperty("--x", e.clientX - x);
button.style.setProperty("--y", e.clientY - y);
});
.shiny {
position: relative;
display: block;
color: black;
padding: 10px 15px;
background: #3984ff;
border-radius: 10px;
font-weight: bold;
font-size: 33px;
overflow: hidden;
}
.shiny::after {
content: "";
position: absolute;
top: calc(var(--y, 0) * 1px - 50px);
left: calc(var(--x, 0) * 1px - 50px);
width: 100px;
height: 100px;
opacity: 0;
transition: opacity 0.4s;
}
.shiny:hover::after {
opacity: 0.9;
background: radial-gradient(black, red 80%);
*-webkit-background-clip: text;
*background-clip: text;
*-webkit-text-fill-color: transparent;
}
<a class="shiny" href="">BIG AND BOLD TEXT</a>
1条答案
按热度按时间9avjhtql1#
你不应该使用一个伪元素,而应该使用多个背景层: