編輯 - 看起來像preventDefault()取消了所有的默認行爲(實際上有道理) - 我提出的第一個解決方案根本不是解決方案。
所以,這實際上證明很難做到。
經過一番搜索,我得出的結論是,如果不取消鏈接默認行爲(因此默認爲.preventDefault()
),就不可能取消滾動。
你可以做的是回滾到鏈接滾動完成後你所在的位置,但即使你儘可能快地做到了,你仍然能夠看到瀏覽器上的卷軸 - 所以這是一個醜陋的解決方案。 (無論如何,你可以在這裏看到它 - http://jsfiddle.net/joplomacedo/RpDyc/)。
那麼,替代品?因爲當你這樣做的時候(我假設你在使用:target僞類),你仍然需要javascript,然後忘記:target stuff,並且只依靠javascript。它更簡單,更清潔,更少'哈克'。
以下是我會做(jQuery的) - >http://jsfiddle.net/joplomacedo/AfzJY/
如果您在使用CSS做不過堅持到底,那麼我建議你這樣做克里斯Coyier通過採取不優勢表明here:目標,但:檢查。自從他的文章做得非常好之後,我不會在這裏進一步發展。
編輯
之前,您使用jQuery?如果是的話所有你需要的是:
$('a[href="#accordion1"]').on('click', function (e) {
e.preventDefault();
});
如果你不使用jQuery那麼這裏就是如何使用純JavaScript做到這一點:
var cancels_links = document.getElementsByClassName('cancels-link');
var cancel = function cancel(e) {
e.preventDefault();
};
for (var i = 0, max = cancels_links.length; i < max; i++) {
cancels_links[i].addEventListener('click', cancel, false);
}
...這一個要求你添加class="cancels-link"
給每個'a'元素誰是你想要取消的默認行爲。
這裏有兩個解決方案的小提琴 - >http://jsfiddle.net/cBQnv/3/
感謝您抽出時間來回答我的問題,我很感激。 class =「取消鏈接」取消所有'a'元素,使手風琴無用。但是,JavaScript本身就解決了這個問題,至少在Chrome中是如此,但是在Safari中卻沒有。我該怎麼辦? – user1492877
沒問題。給我一秒鐘;)。 – banzomaikaka
看我的編輯。這太大了,不適合這裏。 – banzomaikaka