在鼠标附近显示一个中心渐变色的高亮效果

在鼠标附近显示一个中心渐变色的高亮效果,可以使用 CSS 的径向渐变(radial-gradient)来创建这个效果。这个方法会让高亮效果从中心向外渐变,逐渐变得透明,从而实现鼠标周围的区域高亮。

使用径向渐变实现鼠标附近的高亮效果

我们将修改之前的示例,使用 radial-gradient 来实现中心渐变色的高亮效果。

示例代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Mouse Highlight Effect with Gradient</title>
  <style>
    .container {
      width: 300px;
      height: 200px;
      background-color: #f0f0f0;
      border: 1px solid #ccc;
      position: relative;
      overflow: hidden;
    }

    .highlight {
      position: absolute;
      width: 150px;
      height: 150px;
      background: radial-gradient(circle, rgba(255, 255, 0, 0.5) 0%, rgba(255, 255, 0, 0) 60%);
      pointer-events: none; /* 使高亮区域不阻碍鼠标事件 */
      transform: translate(-50%, -50%); /* 将中心对准鼠标 */
    }
  </style>
</head>
<body>
  <div class="container" id="container">
    这里是一个可以高亮的区域
  </div>

  <script>
    const container = document.getElementById('container');

    // 创建高亮效果的元素
    const highlightDiv = document.createElement('div');
    highlightDiv.classList.add('highlight');
    container.appendChild(highlightDiv);

    // 当鼠标在容器内移动时,更新高亮区域的位置
    container.addEventListener('mousemove', (e) => {
      const rect = container.getBoundingClientRect();
      const mouseX = e.clientX - rect.left;
      const mouseY = e.clientY - rect.top;

      highlightDiv.style.left = `${mouseX}px`;
      highlightDiv.style.top = `${mouseY}px`;
    });

    // 当鼠标离开容器时,隐藏高亮区域
    container.addEventListener('mouseleave', () => {
      highlightDiv.style.display = 'none';
    });

    // 当鼠标进入容器时,显示高亮区域
    container.addEventListener('mouseenter', () => {
      highlightDiv.style.display = 'block';
    });
  </script>
</body>
</html>

代码解释

  1. container: 这是高亮效果的容器。当鼠标在容器内移动时,会显示高亮效果。

  2. .highlight:

    • 使用 position: absolute 使其能够相对于父容器定位。
    • widthheight 控制高亮区域的大小。
    • background: radial-gradient(circle, rgba(255, 255, 0, 0.5) 0%, rgba(255, 255, 0, 0) 60%) 这是一个径向渐变,中心为半透明黄色,向外渐变到完全透明。你可以调整渐变的颜色和透明度,以实现不同的效果。
    • pointer-events: none 确保高亮区域不会阻止鼠标事件传递到它下面的元素。
    • transform: translate(-50%, -50%) 确保渐变的中心位于鼠标所在的位置。
  3. JavaScript 逻辑:

    • 创建一个 highlightDiv,用来显示渐变高亮效果。
    • 使用 mousemove 事件监听鼠标的移动,并根据鼠标的位置动态更新高亮区域的位置。
    • 使用 mouseentermouseleave 事件来控制高亮区域的显示和隐藏。

这样,当鼠标在 container 内移动时,会显示一个跟随鼠标位置的渐变高亮区域,实现了鼠标附近高亮的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值