昨日、ここで同様の質問をしました。
そして、スムーズスクロールが機能しました。
しかし、使ってみるとスムーズスクロールがおかしい。
コードはこちら (このリポジトリには 1 つの html ファイルと 1 つの画像ファイルが含まれています):
https://github.com/MitsuhikoShimomura/mdl-error
コードのいくつかの重要な部分。
スムーズスクロール:
<script>
$(function(){
$("a.smooth").click(function(e){
e.preventDefault();
var speed = 500;
var href= $(this).attr("href");
var target = $(href == "#" || href == "" ? 'html' : href);
var nav_height = $(".mdl-layout__header-row").height();
var position = target.offset().top - nav_height;
$(".mdl-layout__content").animate({scrollTop:position}, speed, "swing");
return false;
});
});
</script>
本体内容:
<div class="layout-transparent mdl-layout mdl-js-layout">
<header class="mdl-layout__header mdl-layout__header--transparent">
<div class="mdl-layout__header-row">
<span class="mdl-layout-title">Sample</span>
<div class="mdl-layout-spacer"></div>
<nav class="mdl-navigation">
<a class="mdl-navigation__link smooth" href="#0">0</a>
<a class="mdl-navigation__link smooth" href="#1">1</a>
<a class="mdl-navigation__link smooth" href="#2">2</a>
<a class="mdl-navigation__link smooth" href="#3">3</a>
<a class="mdl-navigation__link smooth" href="#4">4</a>
</nav>
</div>
</header>
<!--Main contents -->
<main class="mdl-layout__content">
<ul class="ul-test">
<li id="0">0</li>
<li id="1">1</li>
<li id="2">2</li>
<li id="3">3</li>
<li id="4">4</li>
</ul>
</main>
</div>
正しいスクロール
---スムーズなスクロールが「上」から始まる場合、スクロールが正しく動作します。
---しかし、スクロールのゴールが「上」の場合、スクロールは正しく動作します。
- 「トップ」から「ナンバーワン」へ
- 「トップ」から「#3」へ
- 「#2」から「トップ」へ
- 等..
スクロールが正しく
ない ---スムーズなスクロールが「上」から開始されない場合、スクロールが正しく動作しません。
---出発位置と到着位置が同じ場合、スクロールが正しく動作しません。
- 「#1」から「#2」へ
- 「#2」から「#4」へ
- 「#3」から「#3」へ
- 等..
スムーズスクロールが正しく機能しない理由がわかりません。