2016-09-09 44 views
0

只是想知道如何啓用使用完整的url平滑滾動。jQuery的光滑滾動完整的網址,包括編號

這是導航

<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); 
    } 
    }); 
} 

任何幫助將非常感謝。

+0

你是問,如果你可以點擊從所在的頁面#不存在,並且走到哪裏它確實存在的頁面#,然後滾動至#? – Tom

+0

如果域名在那裏,它將重新加載頁面/轉到新頁面。如果您想要進入新頁面然後滾動,您需要查找頁面加載事件並在URL中查找「#」。 –

+0

類似於: - [https://stackoverflow.com/questions/7717527/smooth-scrolling-when-clicking-an-anchor-link](https://stackoverflow.com/questions/7717527/smooth-scrolling-當點擊一個錨點鏈接) –

回答

0

據我瞭解,你想留在同一頁面上,只是出於某種原因,你希望你的內部鏈接是絕對的。

爲了實現與絕對URL的內部鏈接,你可以改變它這樣的:

的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」,但網址激活您更改選擇'http://domainname.com/#about'。然後你切斷域名部分,你會有一個像'#about'的內部鏈接。

小提琴:https://jsfiddle.net/u5dL9rt3/

+0

謝謝邁克爾,正是我所期待的。 – Ollie

+0

我很高興我能幫上忙。你能否把答案標記爲接受? –

+0

請在這裏查看如何註冊/接受答案:https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –