javascript - 当 children 聚焦时防止浏览器移动元素

标签 javascript jquery html css

我正在实现一个简单的 map 。 map 由一个视口(viewport)和 map 图像本身组成, map 图像实际上是一个带有背景图像的 div。 视口(viewport)是相对定位的,它的溢出是隐藏的, map 图像是绝对定位在视口(viewport)内的。 可以在视口(viewport)内用鼠标移动 map ,也可以缩放 map (只是增加图像的大小,因为图像是 .svg)

map 上有一些点,用户可以将鼠标悬停在这些点上以在该点的工具提示中获取描述。这些点也可以通过跳转到它们来聚焦。 点是 map 图像 div 的子项,并按百分比绝对定位(以在 map 缩放时保持正确位置)

当一个点被聚焦时,我想移动 map ,使该点位于视口(viewport)的中间。我已经为此编写了代码并且工作正常。但是,如果某个点在视口(viewport)之外(不可见),则浏览器会自动尝试移动 map 以使该点可见。我不希望它这样做,因为它会干扰我编写的动画 map 移动代码。这与滚动无关。

我正在使用 jQuery 并尝试使用 e.preventDefault() 并返回 false;在 map 点的焦点处理程序中,但都不起作用。 是否有可能阻止这种行为?

提前致谢

最佳答案

我发现浏览器正在设置 map 视口(viewport)的滚动值,以便将 map 点显示在 View 中。当我通过设置 map 的顶部和左侧位置来移动 map 时,这就是导致问题的原因。

解决方案是将 .scroll() 事件监听器添加到视口(viewport),并在事件触发时将 scrollTop 和 scrollLeft 值设置为 0

关于javascript - 当 children 聚焦时防止浏览器移动元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23083690/

相关文章:

javascript - MVC 中 session 的客户端计时器

javascript - 仅当部分不是视口(viewport)时,如何使图像贴在底部?

javascript - 如何使 setTimeout 脚本在 html 表单中正常工作?

javascript - 通过函数名称查找表调用 javascript 函数(或方法)的最快方法?

javascript - 验证后恢复参数

javascript - 传单图: filtering by year

jquery - 从 Google Charts 解析 Json

javascript - 有没有办法使用 Knockout.js 通过数据绑定(bind)来设置页面标题?

javascript - Facebook 喜欢动态内容

javascript - 如何保留在 node_modules 中所做的更改?