jquery 使用href="#id”时添加padding-top滚动

cwdobuhd  于 11个月前  发布在  jQuery
关注(0)|答案(3)|浏览(122)

我有一个锚标记如下:

<a href="#map_4D85448A3D4C4180A02BD6FC387ABC45" onclick="jumptosection('map_4D85448A3D4C4180A02BD6FC387ABC45');">A Guide</a>

字符串
它将导航到ID为“map_4D85448A3D4C4180A02BD6FC387ABC45”的部分。jumptosection函数如下所示:

function jumptosection(id) {
    var target = document.getElementById(id);
    if(document.all){
        document.documentElement.scrollTop = target.offsetTop;
    }else{
        var top = 0;
        do {
            top += target.offsetTop  || 0;
            target = target.offsetParent;
        } while(target);

        document.body.scrollTop = top ;
    }
    //$('#article').css.paddingTop = '55px';
    return false;


但是即使我在这个函数中什么都不写,行为仍然是一样的。问题是,当我点击给定的锚时,我有一个92 px的标题带,它隐藏了部分区域的一部分。我如何让它滚动到给定的区域,同时添加一些像素来转义标题?

zqry0prt

zqry0prt1#

虽然所选择的答案可以达到目的,但我们现在有了显式的CSS属性,称为scroll-margin
基本上,你可以通过添加不必要的元素来避免任何欺骗--当你通过锚标记导航时(或者如果你已经设置了原生css滚动捕捉-https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Scroll_Snap/Basic_concepts),这个边距只是计算出来的。
在CSS变量中使用这个非常有用。这里有一个例子,如果你有一个固定/粘性的头:

/* Set the header variable */

--h-header: 50px;

/* Set the scroll margin top on all anchor elements by using .anchor class */
/* Note: I'm setting plus 2.5em so the element has some breathing room on the top */

.anchor {
    scroll-margin-top: calc(var(--h-header) + 2.5em);
}

字符串
MDN密码:https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-margin
CSS技巧指南:https://css-tricks.com/almanac/properties/s/scroll-margin/

64jmpszr

64jmpszr2#

这是可能的。我会做它没有JavaScript,所以它适用于所有。甚至不需要对你的JS的变化。
你只需要在你想要滚动到的元素上方创建一个空元素。CSS就能做到这一点。它在你偏移的高度处创建一个隐藏框:
超文本标记语言:

<span class="anchor" id="map_4D85448A3D4C4180A02BD6FC387ABC45"></span>
<h1>Element to scroll to</h1>

字符串
CSS:

.anchor {
    display: block;
    height: 92px;
    margin-top: -92px;
    visibility: hidden;
}


在这里查看一个工作演示:https://jsfiddle.net/eczxm1rs/1/

um6iljoc

um6iljoc3#

我也有同样的问题,并通过在所需的元素中使用scroll-mt-[100 px](Tailwind)或scroll-margin-top:100 px;(纯css)来解决它。
此外,滚动到特定元素不需要函数。想象一下,你想要这样:单击按钮,页面跳转到页面的特定元素。只需将按钮 Package 在**<Link><a>**标记中,并带有#ID_OF_RESERVED_ELEMENT的href。就是这样!

相关问题