boxmoe_header_banner_img

Hello! 欢迎来到悠悠畅享网!

文章导读

实现鼠标悬停卡片3D视差效果及恢复初始位置


avatar
作者 2025年8月21日 24

实现鼠标悬停卡片3D视差效果及恢复初始位置

本文将指导你如何使用JavaScriptcss创建一个具有3D视差效果的卡片,并在鼠标移出卡片时使其平滑地恢复到初始位置。我们将详细讲解实现步骤,并提供完整的代码示例,帮助你轻松掌握该效果的实现方法。

实现步骤

要实现鼠标悬停卡片3D视差效果,并使其在鼠标移出后恢复到初始位置,需要以下步骤:

  1. html结构: 创建包含卡片内容的HTML结构。
  2. CSS样式: 设置卡片的初始样式,例如宽度。
  3. JavaScript交互: 使用JavaScript监听鼠标移动事件和鼠标移出事件,并根据鼠标位置动态改变卡片的旋转角度。

详细实现

1. HTML结构

首先,创建一个包含卡片内容的HTML结构。这里使用一个 div 元素作为卡片容器,并在其中包含一个 img 元素作为卡片内容。

<div class="card-active">   @@##@@ </div>

2. CSS样式

为了使卡片能够正确显示,并且能够自适应内容宽度,我们需要设置一些CSS样式。 关键是设置 width: fit-content。

.card-active {   width: fit-content; }

3. JavaScript交互

接下来,使用JavaScript来实现鼠标悬停时的3D视差效果,并在鼠标移出时恢复到初始位置。

let cardParallx = document.querySelector('.card-active');  cardParallx.addEventListener('mousemove',(e)=>{     let x =(window.innerWidth/2 - e.pageX)/30;     let y =(window.innerHeight/2 - e.pageY)/30;     cardParallx.style.transform =`rotateX(${-y}deg) rotateY(${-x}deg)`; });  cardParallx.addEventListener('mouseout', (e) => {     let x =(window.innerWidth/2 - e.pageX)/30;     let y =(window.innerHeight/2 - e.pageY)/30;     cardParallx.style.transform =`rotateX(0) rotateY(0)`; });

这段代码首先获取了卡片元素。然后,它监听了 mousemove 事件,当鼠标在卡片上移动时,根据鼠标的位置计算出旋转角度,并使用 transform 属性来旋转卡片。

为了实现鼠标移出后恢复到初始位置,我们监听了 mouseout 事件,当鼠标移出卡片时,将旋转角度设置为 rotateX(0) rotateY(0),从而使卡片恢复到初始状态。

完整代码示例

以下是完整的HTML、CSS和JavaScript代码示例:

<!DOCTYPE html> <html> <head>   <title>3D Parallax Card</title>   <style>     .card-active {       width: fit-content;     }   </style> </head> <body>    <div class="card-active">     @@##@@   </div>    <script>     let cardParallx = document.querySelector('.card-active');      cardParallx.addEventListener('mousemove',(e)=>{         let x =(window.innerWidth/2 - e.pageX)/30;         let y =(window.innerHeight/2 - e.pageY)/30;         cardParallx.style.transform =`rotateX(${-y}deg) rotateY(${-x}deg)`;     });      cardParallx.addEventListener('mouseout', (e) => {         let x =(window.innerWidth/2 - e.pageX)/30;         let y =(window.innerHeight/2 - e.pageY)/30;         cardParallx.style.transform =`rotateX(0) rotateY(0)`;     });   </script>  </body> </html>

注意事项

  • 可以调整 mousemove 事件中的除数(例如,30),来控制视差效果的强度。 数值越小,视差效果越明显。
  • 可以添加CSS过渡效果,使卡片旋转和恢复过程更加平滑。 例如,在 .card-active 类中添加 transition: transform 0.3s ease;。
  • 如果卡片内容比较复杂,可能会影响性能。 可以考虑使用 requestAnimationFrame 来优化动画效果。

总结

通过本文的教程,你学会了如何使用JavaScript和CSS创建一个具有3D视差效果的卡片,并在鼠标移出时使其恢复到初始位置。这个效果可以为你的网页增加一些交互性和视觉吸引力。 记住,理解代码背后的逻辑是关键,这样你才能根据自己的需求进行修改和扩展。

实现鼠标悬停卡片3D视差效果及恢复初始位置实现鼠标悬停卡片3D视差效果及恢复初始位置



评论(已关闭)

评论已关闭