Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 滚动生效(href至div)_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 滚动生效(href至div)

Javascript 滚动生效(href至div),javascript,jquery,html,css,Javascript,Jquery,Html,Css,我似乎找不到一个有效的简单方法。我想做的是非常基本的,当我点击导航栏中的链接时,它必须带我到所选的div id,并带有一个滚动条才能生效 这是我的密码 <nav> <ul> <li><a href="#home">Home</a></li> <li><a href="#about">About</a></li> <li><a href="#contact"&g

我似乎找不到一个有效的简单方法。我想做的是非常基本的,当我点击导航栏中的链接时,它必须带我到所选的div id,并带有一个滚动条才能生效

这是我的密码

<nav>
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</nav>

<section id="home">
  CONTENT
</section>

<section id="about">
  CONTENT
</section>

<section id="contact">
  CONTENT
</section>

内容 内容 内容
JS:


$(文档).ready(函数(){
$('a[href*=#]')。每个(函数(){
if(location.pathname.replace(/^\/,“”)=此.pathname.replace(/^\/,“”)
&&location.hostname==this.hostname
&&this.hash.replace(/#/,''){
var$targetId=$(this.hash),$targetAnchor=$('[name='+this.hash.slice(1)+']);
var$target=$targetId.length?$targetId:$targetAnchor.length?$targetAnchor:false;
如果(目标美元){
var targetOffset=$target.offset().top;
$(此)。单击(函数(){
$(“nav ul li a”)。删除类(“活动”);
$(this.addClass('active');
$('html,body').animate({scrollTop:targetOffset},1000);
返回false;
         });
      }
    }
  });
});

这似乎有效,但它不会让我到达所选部分的顶部。喜欢这一部分内容的中间部分是需要的。

使用这个jquery这里是小提琴


你可以使用这个功能,它很容易扩展到不同的点击事件

function transitionTo(elem){

    $('html, body').stop().animate({scrollTop: $(elem).offset().top

    }, 2000, function ()  {


    });
}

// and call it with:       

$('#link').on('click', function(e){
    e.preventDefault();

    transitionTo('#div');

   });

编辑了,忘了放进去了。一定是什么愚蠢的东西。标题改了,更准确。
$('a[href^="#"]').click(function() {
     $('html,body').animate({ scrollTop: $(this.hash).offset().top}, 1000);
     return false;
     e.preventDefault();
});
function transitionTo(elem){

    $('html, body').stop().animate({scrollTop: $(elem).offset().top

    }, 2000, function ()  {


    });
}

// and call it with:       

$('#link').on('click', function(e){
    e.preventDefault();

    transitionTo('#div');

   });