返回

原生JavaScript+CSS:让吉祥物眼球活灵活现!

前端





### 开篇引语
在如今交互性日益重要的Web世界中,为网页增添生动有趣的动画和交互细节已变得至关关键。而让网页中的吉祥物、头像或卡通形象的眼睛跟随鼠标的转动,无疑是吸引眼球的绝佳创意。

### 探索原生JavaScript与CSS的魅力
本篇教程将引导你使用原生JavaScript和CSS来打造出眼球跟随鼠标的酷炫视觉特效。无需借助繁杂的库或大型JavaScript架构,我们只需掌握少量核心概念即可。

#### **步:HTML结构** 

```html
<div id="mascot">
  <img src="mascot.png" alt="吉祥物">
  <div id="eyes">
    <div class="pupil"></div>
    <div class="pupil"></div>
  </div>
</div>
  • #mascot 容器包含了吉祥物及用于定位眼球的相对定位父级 #eyes
  • #eyes 的直接子代是 #pupil,即眼珠。

步:CSS基础

#mascot {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: scale(0.8) rotate(-15deg);
}

#eyes {
  position: relative;
  top: -50%;
  left: -50%;
  transform: scale(0.6);
}

.pupil {
  width: 15px;
  height: 15px;
  border-top-left-Radius: 50%;
  border-top-right-Radius: 50%;
  border-bottom-left-Radius: 50%;
  border-bottom-right-Radius: 50%;
  background: #FFF;
}
  • #mascot 设置适当的 transform 属性,以便将吉祥物缩小并旋转至预期角度。
  • #eyes 相对定位,且缩小至原尺寸的 60%,便于贴合吉祥物头部。
  • #pupil 设定为直径 15px 的白色圆形。

步:捕捉鼠标移动

window.onmousemove = function(e) {
  var mouseX = e.clientX;
  var mouseY = e.clientY;
  
  // 眼球移动的横向距离,限于吉祥物头部容器宽度内
  var horzOffset = Math.max(Math.min(mouseX / window.innerWidth, 0.95), -0.25);
  
  // 眼球移动的纵向距离,限于吉祥物头部容器高度内
  var verOffset = Math.max(Math.min(1 - mouseY / window.innerHeight, 0.95), 0.25);
  
  document.getElementById("eyes").style.transform = "translateX(" + horzOffset + "em) translateY(-" + verOffset + "em);";
};
  • 监听 windowmousemove 事件。
  • 提取鼠标的 clientX(水平移动距离)和 clientY(垂直移动距离)值。
  • 根据鼠标相对浏览器窗口的位置,计算出眼球在 #eyes 容器内的相对水平和垂直移动距离。
  • 将计算出的偏移值赋予 #eyestransform 属性,使眼球跟随鼠标移动。

总结与展望

至此,我们已使用原生JavaScript和CSS赋予吉祥物眼球跟随鼠标转动的神奇魔力。这项轻量级且实用的技巧能为网页增添一份互动与吸引力。

随着Web开发技术的不断演进,探索将人工智能等前沿概念与现有知识相结合,将为我们带来无限可能。从创造令人叹为观止的动画和交互,到定制个性化且智能化的网页体验,创想无限。

本教程中提出的方法仅供参考,你也可以大胆探索和改进,找到更佳的视觉表现形式和交互逻辑。保持开放的心态,乐于尝试和突破,你一定会解锁Web开发的无限精彩!