
本文旨在解决在css缩放和过渡动画过程中,如何获取动画完成后图像上的鼠标位置。通过引入一个不可见的 `div` 覆盖在图像之上,并将其缩放比例与图像同步,我们可以在动画进行时,通过点击该 `div` 来获取缩放完成后的目标鼠标位置,从而避免了 `event.offsetx` 在动画过程中的动态变化问题。
在进行图像的程序化平移和缩放时,为了提升用户体验,通常会添加CSS过渡效果。然而,当需要在动画过程中获取鼠标在图像上的位置时,event.offsetX 和 event.offsetY 属性会返回动画当前帧的坐标,而不是动画完成后的最终坐标。本文将介绍一种替代方案,通过添加额外的HTML和CSS,实现在动画进行时获取目标鼠标位置。
该方案的核心思想是,在图像上方覆盖一个不可见的 div 元素,并将该 div 的缩放比例与图像同步,但不对 div 应用过渡效果。用户实际点击的是这个 div,而不是图像本身。由于 div 的缩放是瞬间完成的,因此 event.offsetX 和 event.offsetY 会直接返回缩放后的目标位置。
HTML 结构
<button onclick="onButton()">Zoom</button> <br> <div id="wrapper"> <div id="target" onclick="onImage(event)"></div> <img id="img" src="https://picsum.photos/id/237/200"> </div>
CSS 样式
立即学习“前端免费学习笔记(深入)”;
#wrapper {
display: inline-block;
position:relative;
font-size:0; /* 消除inline-block元素间的间隙 */
}
#target{
position:absolute;
width:100%;
height:100%;
}
#img {
transition: 5s ease;
z-index:2;
pointer-events:none; /* 阻止图像接收点击事件 */
}JavaScript 代码
function onButton() {
const img = document.querySelector("#img");
img.style.scale = 5.0;
const target = document.querySelector("#target");
target.style.scale = 5.0;// 确保 target 的样式与 img 的样式匹配
}
function onImage(event) {
console.log(event.offsetX, event.offsetY);
}通过使用覆盖层 div,我们成功地解决了在 CSS 缩放和过渡动画过程中获取目标鼠标位置的问题。这种方法简单易懂,易于实现,并且能够有效地提高用户体验。希望本文能帮助您更好地处理类似的问题。
以上就是计算CSS缩放和过渡后的鼠标位置:event.offsetX 的替代方案的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号