【问题标题】:HTML Anchor link smooth scrollingHTML Anchor 链接平滑滚动
【发布时间】:2015-04-16 09:41:48
【问题描述】:

我正在尝试创建一个锚链接,当您单击它时,它会向下滚动到另一个元素。我已经尝试使用上一个问题的答案来这样做:Smooth scrolling when clicking an anchor link 使用此代码

$('a[href*=#]').click(function(event){
$('html, body').animate({
    scrollTop: $( $.attr(this, 'href') ).offset().top
}, 500);
event.preventDefault();
});

当我将此代码与此 HTML 一起使用时

<a id="des" href="#scroll">
<img name="scroll" id="scroll" src="whatever">

它不会平滑滚动,而是立即跳转到这里。它也不会跳到正确的位置。它会跳到图像下方,因此您看不到图像。

我正在尝试做的事情:我正在尝试拥有它,因此当我单击此锚元素时,它会平滑滚动到此图像而不会将其剪切掉。我的意思是当我现在这样做时它会跳过图像。

【问题讨论】:

    标签: jquery html


    【解决方案1】:

    这会做你想做的事。它来自 StackOverFlow 的某人。我不记得是哪个用户了。

    $(function() {
      $('a[href*=#]:not([href=#])').click(function() {
        if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
    
          var target = $(this.hash);
          target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
          if (target.length) {
            $('html,body').animate({
              scrollTop: target.offset().top
            }, 800);
            return false;
          }
        }
      });
    });
    

    编辑: 如果顶部有固定导航,这也是我所做的。这将抵消您导航的金额。

    在css中

    a.anchor {
             display: block;
             position: relative;
             top: -45px; //or what ever the set px amount you have set to your nav
             visibility: hidden;
    }
    

    在你的图片标签之前使用这个锚标签

    <a class="anchor" id="WhateverYourHerfIs"></a>
    

    【讨论】:

    • 是的,这个平滑滚动但仍然跳过图像。我应该为分隔元素做头,还是将文本放在图像上方?
    • 你应该把图像放在一个 div 中,并让它锚定到 div 而不是图像上你是否在顶部有一个固定的导航栏?设置 px 高度?
    • 哦,我明白了问题所在,是的,我确实在顶部有一个固定的导航栏,其中设置了像素高度 n 的东西。那可能是挡住了视线。所以它会进入图像,但这会阻止它。那么我应该将滚动发送到哪里?图片上方有几个像素?
    • 还有一个问题,当#scroll 滚动时如何从url 栏中删除它?
    • 我发布的 jQuery 代码应该可以做到。重新加载您的域,不带 #
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多