jQuery 平滑滚动完整 url 包括 id
jQuery smooth scroll full url including id
只是想知道如何使用完整 url 启用平滑滚动。
这是导航
<nav class="primary-nav">
<ul>
<li><a href="http://domainname.com/">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#services">Services</a></li>
<li><a href="http://domainname.com/contact">Contact</a></li>
</ul>
</nav>
想用
<nav class="primary-nav">
<ul>
<li><a href="http://domainname.com/">Home</a></li>
<li><a href="http://domainname.com/#about">About</a></li>
<li><a href="http://domainname.com/#services">Services</a></li>
<li><a href="http://domainname.com/contact">Contact</a></li>
</ul>
</nav>
这是用于滚动到页面部分的 jQuery 代码。
function smoothScroll(duration) {
$('a[href^="#"]').on('click', function (event) {
var target = $($(this).attr('href'));
if (target.length) {
event.preventDefault();
$('html, body').animate({
scrollTop: target.offset().top
}, duration);
}
});
}
如有帮助将不胜感激。
据我了解,您希望保持一致,只是出于某种原因,您希望内部 link 是绝对的。
要使用绝对 URL 实现内部 linking,您可以这样更改它:
JavaScript:
var duration = 1000;
var domainname = 'http://domainname.com/';
$('a[href^="'+domainname+'#"]').on('click', function (event) {
var target = $(this).attr('href');
if (target.length) {
event.preventDefault();
target = $( target.replace(domainname, '') );
$('html, body').animate({
scrollTop: target.offset().top
}, duration);
}
});
说明:您更改了选择器,使其不会在“#about”之类的 URL 上激活,而是在“http://domainname.com/#about”之类的 URL 上激活。然后你切断域名部分,你将再次拥有一个内部link,如'#about'。
Fiddle: https://jsfiddle.net/u5dL9rt3/
只是想知道如何使用完整 url 启用平滑滚动。
这是导航
<nav class="primary-nav">
<ul>
<li><a href="http://domainname.com/">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#services">Services</a></li>
<li><a href="http://domainname.com/contact">Contact</a></li>
</ul>
</nav>
想用
<nav class="primary-nav">
<ul>
<li><a href="http://domainname.com/">Home</a></li>
<li><a href="http://domainname.com/#about">About</a></li>
<li><a href="http://domainname.com/#services">Services</a></li>
<li><a href="http://domainname.com/contact">Contact</a></li>
</ul>
</nav>
这是用于滚动到页面部分的 jQuery 代码。
function smoothScroll(duration) {
$('a[href^="#"]').on('click', function (event) {
var target = $($(this).attr('href'));
if (target.length) {
event.preventDefault();
$('html, body').animate({
scrollTop: target.offset().top
}, duration);
}
});
}
如有帮助将不胜感激。
据我了解,您希望保持一致,只是出于某种原因,您希望内部 link 是绝对的。
要使用绝对 URL 实现内部 linking,您可以这样更改它:
JavaScript:
var duration = 1000;
var domainname = 'http://domainname.com/';
$('a[href^="'+domainname+'#"]').on('click', function (event) {
var target = $(this).attr('href');
if (target.length) {
event.preventDefault();
target = $( target.replace(domainname, '') );
$('html, body').animate({
scrollTop: target.offset().top
}, duration);
}
});
说明:您更改了选择器,使其不会在“#about”之类的 URL 上激活,而是在“http://domainname.com/#about”之类的 URL 上激活。然后你切断域名部分,你将再次拥有一个内部link,如'#about'。
Fiddle: https://jsfiddle.net/u5dL9rt3/