【发布时间】:2017-08-04 22:36:59
【问题描述】:
这是我在 SO 上的第一篇文章,我使用它已经有一段时间了,总是通过搜索找到解决方案。现在我开始更深入地研究编程——现在正在学习 Java Script——我找不到我的初学者问题的确切答案:
我创建了一个简单的照片库,其中缩略图通过 href 指向图像。默认情况下不显示图像。通过单击缩略图,由于 :target 伪元素,相应的图像会出现。通过这种方式,我可以绕过 HTML 结构的级联特性,并在层次结构中定位更高的元素。
见小提琴:
https://jsfiddle.net/ahu1kaqf/
问题是,由于其默认的锚点跳转行为,这种“hack”具有将图像置于窗口最顶部的副作用。 所以我想要完成的是关闭或绕过 just 跳转行为。 因此,像“preventDefault”或“return false”这样的 JS 解决方案不适合,因为它们会关闭完整的锚行为。 我的想法是在单击之前读取 yScroll 位置并将其传递给在页面跳转后触发的另一个函数。通过在锚标记上附加一个 onclick 事件,我发现该函数在实际跳转之前执行,我可以读取当前的 scrollY 位置:
function posY(){
console.log(window.scrollY);
scry = window.scrollY;
}
然后,在锚点事件完成后,我想将变量 scry 传递给另一个函数,该函数在锚点跳转后触发以撤消跳转:
function undoJump(){
window.scrollTo(0, scry);
}
它实际上不适用于点击事件,因为该函数在实际跳转之前触发。
fiddle中的js代码是在script标签中,因为只是把函数放到js窗口中(当然没有script标签)在控制台显示错误,不知道为什么...
对不起,我真的是初学者,谢谢大家的帮助!
【问题讨论】:
标签: javascript anchor