沃梦达 / IT编程 / 前端开发 / 正文

基于CSS3和jQuery实现跟随鼠标方位的Hover特效

实现跟随鼠标方向的Hover特效需要结合CSS3和jQuery来实现。

实现跟随鼠标方向的Hover特效需要结合CSS3和jQuery来实现。

首先,在HTML文件中创建一个hover区域div,用于显示跟随鼠标方向的效果。代码如下:

<div class="hover-area"></div>

然后,在CSS中设置 hover-area 的样式,如下所示:

.hover-area {
  position: fixed;
  top: 50%;
  left: 50%;
  width: 80px;
  height: 80px;
  margin-top: -40px;
  margin-left: -40px;
  border: 2px solid #fff;
  border-radius: 50%;
  background: rgba(0,0,0,0.5);
  box-shadow: 0 0 5px rgba(255,255,255,0.5);
  z-index: 99999;
  pointer-events: none; /* 确保hover区域不会影响到鼠标事件的触发 */
}

接下来,需要使用jQuery来监测鼠标位置,并将跟随鼠标的hover区域显示在相应的位置。代码如下:

$(document).ready(function() {
  // 监测鼠标位置并移动hover区域
  $(document).mousemove(function(e) {
    $('.hover-area').css({
      'top': e.clientY - 40, // 减去 40 像素是因为 hover 区域的高度和宽度都为 80 像素
      'left': e.clientX - 40
    });
  });
});

这段代码会在文档文档加载完成后运行,并检测鼠标的位置,将hover区域的位置移动到相应的位置。

下面给出两个示例:

示例1:使用hover区域实现图片放大效果。

HTML代码:

<div class="image-container">
  <img src="image.jpg" alt="">
  <div class="hover-area"></div>
</div>

CSS代码:

.image-container {
  position: relative;
  width: 400px;
  height: 300px;
  overflow: hidden;
}

.image-container img {
  width: 100%;
  height: 100%;
  transition: transform 0.5s ease-in-out;
}

.image-container:hover img {
  transform: scale(1.2);
}

.hover-area {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: none;
}

.image-container:hover .hover-area {
  display: block;
}

Javascript代码:

$(document).ready(function() {
  // 监测鼠标位置并将hover区域移动到相应的位置
  $('.image-container').mousemove(function(e) {
    var x = e.clientX - $(this).offset().left;
    var y = e.clientY - $(this).offset().top;
    $('.hover-area').css({
      'top': y,
      'left': x
    });
  });
});

这个示例中,当鼠标移到图片上时,图片会放大,并显示hover区域,hover区域的大小和图片大小相同。当鼠标离开时,图片恢复原始大小,hover区域消失。

示例2:使用hover区域实现类似于Windows菜单弹出效果。

HTML代码:

<button class="menu-button">菜单</button>
<div class="hover-area">
  <ul>
    <li>菜单项1</li>
    <li>菜单项2</li>
    <li>菜单项3</li>
  </ul>
</div>

CSS代码:

.menu-button {
  margin-top: 100px;
}

.hover-area {
  position: fixed;
  top: 0;
  left: 0;
  width: 200px;
  height: 0;
  overflow: hidden;
  transition: height 0.5s;
}

.hover-area ul {
  margin: 0;
  padding: 0;
  list-style: none;
  background: #fff;
  border: 1px solid #ccc;
  box-shadow: 1px 1px 5px rgba(0,0,0,0.1);
}

.hover-area ul li {
  padding: 10px;
  text-align: center;
}

.menu-button:hover + .hover-area,
.hover-area:hover {
  height: 150px;
}

这个示例中,当鼠标移到按钮上时,hover区域会从顶部弹出,显示菜单项。当鼠标离开hover区域时,hover区域收回,菜单项也消失。

本文标题为:基于CSS3和jQuery实现跟随鼠标方位的Hover特效