我一直在尝试滚动div id jquery代码才能正常工作。基于另一个堆栈溢出问题,我尝试了以下
DEMO http://jsfiddle.net/kevinPHPkevin/8tLdq/
$('#myButton').click(function() {
$.scrollTo($('#myDiv'), 1000);
});
但它没有用。它只是快照到div。我也试过
$('#myButton').click(function(event) {
event.preventDefault();
$.scrollTo($('#myDiv'), 1000);
});
没有进展。
答案 0 :(得分:574)
您需要为html, body
DEMO http://jsfiddle.net/kevinPHPkevin/8tLdq/1/
$("#button").click(function() {
$('html, body').animate({
scrollTop: $("#myDiv").offset().top
}, 2000);
});
答案 1 :(得分:96)
如果您想覆盖页面上的标准 href-id导航而不更改平滑滚动的HTML标记,请使用此(example):< / p>
// handle links with @href started with '#' only
$(document).on('click', 'a[href^="#"]', function(e) {
// target element id
var id = $(this).attr('href');
// target element
var $id = $(id);
if ($id.length === 0) {
return;
}
// prevent standard hash navigation (avoid blinking in IE)
e.preventDefault();
// top position relative to the document
var pos = $id.offset().top;
// animated top scrolling
$('body, html').animate({scrollTop: pos});
});
答案 2 :(得分:17)
这是我的2美分:
Javascript:
$('.scroll').click(function() {
$('body').animate({
scrollTop: eval($('#' + $(this).attr('target')).offset().top - 70)
}, 1000);
});
HTML:
<a class="scroll" target="contact">Contact</a>
和目标:
<h2 id="contact">Contact</h2>
答案 3 :(得分:7)
这可以在普通JS中完成:
document
.getElementById("range-calculator")
.scrollIntoView({ behavior: "smooth" });
浏览器支持有点问题,但是modern browsers support it。
答案 4 :(得分:5)
这是我使用的:
<!-- jquery smooth scroll to id's -->
<script>
$(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
}, 500);
return false;
}
}
});
});
</script>
这个美妙之处在于您可以使用无限数量的哈希链接和相应的ID,而无需为每个执行新脚本。
如果您使用的是WordPress,请在关闭正文标记footer.php
之前的主题</body>
文件中插入代码。
如果您无权访问主题文件,则可以将代码直接嵌入到帖子/页面编辑器中(您必须在文本模式下编辑帖子)或在将加载到所有页面上的文本小部件上。< / p>
如果您正在使用任何其他CMS或仅使用HTML,则可以在关闭正文标记</body>
之前的所有页面上加载的部分中插入代码。
如果您需要更多详情,请查看我的快速帖子:jQuery smooth scroll to id
希望有所帮助,如果您对此有疑问,请告诉我。
答案 5 :(得分:3)
你确定要加载jQuery scrollTo插件文件吗?
你可能会得到一个对象:找不到方法&#34; scrollTo&#34;控制台中出错。
scrollTO方法不是本机jquery方法。要使用它,你需要包含jquery滚动到插件文件。
REF: http://flesler.blogspot.in/2009/05/jqueryscrollto-142-released.html http://flesler.blogspot.in/2007/10/jqueryscrollto.html
溶液: 将其添加到头部。
<script src="\\path\to\the\jquery.scrollTo.js file"></script>
答案 6 :(得分:3)
更多一个例子:
HTML链接:
$(".scrollTo").on('click', function(e) {
e.preventDefault();
var target = $(this).attr('href');
$('html, body').animate({
scrollTop: ($(target).offset().top)
}, 2000);
});
JS:
<div id="featured">My content here</div>
HTML锚:
{{1}}
答案 7 :(得分:2)
此脚本是对Vector脚本的改进。我对它做了一点改动。所以这个脚本适用于每个链接,其中包含类页面滚动。
起初没有宽松:
$("a.page-scroll").click(function() {
var targetDiv = $(this).attr('href');
$('html, body').animate({
scrollTop: $(targetDiv).offset().top
}, 1000);
});
为了简化,您将需要Jquery UI:
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
将其添加到脚本中:
'easeOutExpo'
最终
$("a.page-scroll").click(function() {
var targetDiv = $(this).attr('href');
$('html, body').animate({
scrollTop: $(targetDiv).offset().top
}, 1000, 'easeOutExpo');
});
您可以在此处找到所有优惠:Cheat Sheet。
答案 8 :(得分:1)
您可以使用以下简单的jQuery代码来完成它。
可以在此处找到教程,演示和源代码 - Smooth scroll to div using jQuery
<强> JavaScript的:强>
$(function() {
$('a[href*=#]:not([href=#])').click(function() {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.substr(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
});
});
<强> HTML:强>
<a href="#section1">Go Section 1</a>
<div id="section1">
<!-- Content goes here -->
</div>
答案 9 :(得分:1)
我试过这个,这对我很有用。
$('a[href*="#"]').on('click', function (e) {
e.preventDefault();
$('html, body').animate({
scrollTop: $($(this).attr('href')).offset().top
}, 500, 'linear');
});
HTML:
<a href="#fast-food" class="active" data-toggle="tab" >FAST FOOD</a>
<div id="fast-food">
<p> Scroll Here... </p>
</div>
答案 10 :(得分:1)
此代码对于网络上的任何内部链接都将有用
$("[href^='#']").click(function() {
id=$(this).attr("href")
$('html, body').animate({
scrollTop: $(id).offset().top
}, 2000);
});
答案 11 :(得分:1)
这是我的解决方案,如果您有固定的标头,则可以使用jQuery平滑滚动至div / anchor,以便它不会在其下方滚动。 如果您从其他页面链接它也可以。
只需将“ .site-header”替换为包含标题的div。
$(function() {
$('a[href*="#"]:not([href="#"])').click(function() {
var headerheight = $(".site-header").outerHeight();
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 - headerheight)
}, 1000);
return false;
}
}
});
//Executed on page load with URL containing an anchor tag.
if($(location.href.split("#")[1])) {
var headerheight = $(".site-header").outerHeight();
var target = $('#'+location.href.split("#")[1]);
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top - headerheight
}, 1);
return false;
}
}
});
答案 12 :(得分:0)
这对我有用。
<div id="demo">
<h2>Demo</h2>
</div>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script>
$(document).ready(function () {
// Handler for .ready() called.
$('html, body').animate({
scrollTop: $('#demo').offset().top
}, 'slow');
});
</script>
谢谢。
答案 13 :(得分:-1)
这是最简单的来源-https://www.w3schools.com/jsref/met_element_scrollintoview.asp
var elmnt = document.getElementById("content");
elmnt.scrollIntoView();