所以我这个网站的用户发现了这个脚本,但是我记不起作者了。该脚本正在运行,但是我希望它能够“平滑”地滚动,而不是立即显示在我想要的信息上。如果可能,让目标在div上方显示300像素。
我该怎么做?
#general{
margin-top:900px;
height: 100px;
weight: 100px;
background: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
var hashTagActive = "";
$(".scroll").click(function (event) {
if(hashTagActive != this.hash) { //this will prevent if the user click several times the same link to freeze the scroll.
event.preventDefault();
//calculate destination place
var dest = 0;
if ($(this.hash).offset().center > $(document).height() - $(window).height()) {
dest = $(document).height() - $(window).height();
} else {
dest = $(this.hash).offset().center;
}
//go to destination
$('html,body').animate({
scrollTop: dest
}, 2000, 'swing');
hashTagActive = this.hash;
}
});
</script>
<div>
<a class="scroll" href="#general">Hello</a>
</div>
<div id="general">
</div
答案 0 :(得分:1)
要获得更流畅的滚动,您可以使用:
$(document).ready(function() {
$("ANCHOR LINK").click(function(event){
event.preventDefault();
$("html, body").animate({scrollTop:$(this.hash).offset().top}, 1000);
});
});
你看到最后一个号码? 1000
,让它更大,让它变慢。
第二件事,我担心我无法帮助你。
答案 1 :(得分:0)
为了平滑滚动到元素顶部300px,您的JavaScript函数应如下所示:
$(".scroll").click(function (event) {
$('html,body').animate({
scrollTop: ($(this.hash).offset().top - 300)
}, 2000);
event.preventDefault();
});
答案 2 :(得分:0)
如何设置#id
链接的动画:
<a href="#content">Click me!</a><br>
<a href="google.com">Google.com</a>
<div id="content"></div>
#content {
margin-top: 900px;
height: 100px; width: 100px;
background-color: lightgreen;
}
$('a').on('click', function (event) {
var target = $(this.hash),
top;
if (target) {
top = target.offset().top;
event.preventDefault();
$('html, body').animate({
scrollTop: top
}, 600, 'swing');
}
});