CSS: 如何设置动画背景颜色以在悬停时突出显示,只有光标区域改变颜色?

CSS: How to animate background color to highlight on hover, with only the area of cursor changing color?

我正在尝试使行的背景颜色在悬停时发生变化,只有光标区域发生变化 color/being 突出显示。

我设置了白色背景颜色,并且希望在鼠标悬停在背景上时用黄色羽毛圆圈突出显示光标区域。

我似乎找不到合适的代码,但只能找到代码来更改悬停时的完整背景。

这在 CSS 可以做吗?

.vc_row {
   -webkit-transition:all 1s;
   transition:all 1s;   
  }

  .vc_row:hover {
        background: -webkit-gradient(
  radial, 500 25%, 20, 500 25%, 40, from(#faf9f4), to(#cef230)
);  
} 

即使我倾向于使用 JavaScript(这是我的技能所在),我相信你不能 只是 在 CSS 中做到这一点, 但也需要 JavaScript 才能做到这一点。可能有办法,但我不知道,我很好奇其他人会用神奇的完整 CSS 解决方案来回答并让我们大吃一惊。 :D

对于执行此操作的一种方法,您需要使用 ::after 在行内创建 hover-element。然后,您可以使用 CSS 变量将您的鼠标位置(通过 JavaScript 收集)传递到 hover-element,使其跟踪鼠标位置。这是一个例子:

<!-- HTML -->
<div class="row">

</div>
/* CSS */
.row {
    width: 300px;
    height: 300px;
    margin: 30px 30px;
    position: relative;
    overflow: hidden;
    background: white;
}

.row::after {
    content: "";
    position: absolute;
    top: calc(var(--y, 0) * 1px - 50px);
    left: calc(var(--x, 0) * 1px - 50px);
    width: 100px;
    height: 100px;
    opacity: 0;
    background: radial-gradient(#cef230, #ffffff00 80%);
    transition: opacity 1s;
}
.row:hover::after {
    opacity: 1;
}
// JavaScript
const element = document.querySelector(".row");

element.addEventListener("mousemove", (e) => {
    const { x, y } = element.getBoundingClientRect();
    element.style.setProperty("--x", e.clientX - x);
    element.style.setProperty("--y", e.clientY - y);

});

关键元素是 ::after 创建 hover-element,使用 position: absolute; 允许“顶部”和“左侧”属性定位 hover-element ,并将 overflow: hidden; 应用到行:在我的测试中,hover-element 甚至在行外保持 mouse-move 事件触发,除非溢出被隐藏。