如何在URL路径中指定垂直偏移量

3

当我使用书签时,我能否在URL路径中指定偏移量?

比如说我有这个路径:mywebsite.com/mypage#bookmark

我想把书签部分居中显示,而不是在页面顶部。

我想知道是否可以像这样指定偏移量:..mypage#bookmark&y-offset=100

也许我可以使用JavaScript来获取该值。谢谢!


请阅读以下内容:https://dev59.com/-3M_5IYBdhLWcg3wWRkF - Haim Evgi
1
请注意,您正在导航到绝对像素位置,这可能非常依赖于浏览器设置,例如字体大小。 - Joeri Hendrickx
1个回答

1

目前没有本地方法可以实现此功能,但您可以在ID和偏移之间定义一个分隔符,例如/,然后解析它。

例如:

/path/to/page#id/200

然后,您可以解析出该值并手动将其向前移动。请注意,如果您已经在页面上并且正在移动到页面上的锚点,则不知道如何触发此事件(有人可以告诉我吗?)

function moveToHash() {
    function offset(node) {
        var x = 0, y = 0; do {
            x += node.offsetLeft;
            y += node.offsetTop;
        } while (node = node.offsetParent);
        return {x: x, y: y};
    }
    var id = location.search.match(/([^\/]+)/)[1];
    var offset = location.search.match(/\/(.+)/)[1] * 1;
    var nodeOffset = offset(document.getElementById(id));
    window.scrollTo(nodeOffset.x, nodeOffset.y);
    window.scrollBy(0, offset);
}

据我所知(我已经使用这段代码几年了),它是可以的。试一下,如果有问题请告诉我(我预计可能会在IE上出现问题)。 - Delan Azabani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接