スムーススクロールを使用してリンクをアンカーできますが、はjQuery
なしですか?私は新しいサイトを作成しています。私はjQuery
を使いたくありません。ここから機能を使用してスムーススクロールアンカーリンクjQueryなし
答えて
:
function animate(elem, style, unit, from, to, time, prop) {
if (!elem) {
return;
}
var start = new Date().getTime(),
timer = setInterval(function() {
var step = Math.min(1, (new Date().getTime() - start)/time);
if (prop) {
elem[style] = (from + step * (to - from))+unit;
} else {
elem.style[style] = (from + step * (to - from))+unit;
}
if (step === 1) {
clearInterval(timer);
}
}, 25);
if (prop) {
elem[style] = from+unit;
} else {
elem.style[style] = from+unit;
}
}
window.onload = function() {
var target = document.getElementById("div5");
animate(document.scrollingElement || document.documentElement, "scrollTop", "", 0, target.offsetTop, 2000, true);
};
DEMO:https://jsfiddle.net/zpu16nen/
メイクJavaScript animationとプロパティ(スタイルのプロパティだけではなく)を変更するためにそれを修正するには、このような何かを試すことができます実際にはスクロールバーがあり、5番目のdivにスクロールできるように、ウィンドウのサイズを十分小さくしてください。
いいえ、jQueryの25%を再作成する必要はありませんでした。
これは明らかに、質問が実際に何を意味するか(例えば、ウィンドウのハッシュが変更されたときなど)によって大きく変更される必要があります。
$(document).ready(function() {
$("html, body").animate({
scrollTop: $("#div5").offset().top
}, 2000);
});
はDEMO:http://jsfiddle.net/7TAa2/1/
ちょうど言って... :target
セレクタと
それを試している人に:素晴らしいスクリプトですが、イージングや素敵なトゥイーンは期待していません。これは生のステキなアニメーションのようなものです。 –
同様の試み:http://stackoverflow.com/questions/10063380/javascript-smooth-scroll-without-the-use-of-jquery&http://stackoverflow.com/questions/8917921/cross-browser-javascript-ノンjquery-scroll-to-top-animation –
はFirefoxで動作しません(これ以上ですか?) – mtness
CSS3遷移が素敵な結果を与えることができますjQueryを使って、それは同じように簡単だということ
注意JSのハッキングは一切ありません。私はこれを実現するかどうかを検討していたが、Jqueryがなければちょっと乱雑になる。詳細については、this questionを参照してください。
この回答を拡張:https://stackoverflow.com/a/8918062/3851798
をscrollToのあなたの関数を定義した後、あなたが関数内scrollToにしたい要素を渡すことができます。
function scrollTo(element, to, duration) {
if (duration <= 0) return;
var difference = to - element.scrollTop;
var perTick = difference/duration * 10;
setTimeout(function() {
element.scrollTop = element.scrollTop + perTick;
if (element.scrollTop === to) return;
scrollTo(element, to, duration - 10);
}, 10);
}
あなたにid = "フッター" あなたはあなたがこれを実行することができますスクロールするために実行するスクリプトで
<div id="footer" class="categories">…</div>
、あなたが持っている
elmnt = document.getElementById("footer");
scrollTo(document.body, elmnt.offsetTop, 600);
そして、そこでのdivを持っている場合それ。 jQueryを使わずにスムーズにスクロールできます。あなたは実際にあなたのブラウザのコンソール上でそのコードで遊んで、好きなように微調整することができます。
はるかに良い答えです。きれいで伸びやすいありがとうございました! –
'duration <= 0'でなく' duration <0'(2行目)であることを忘れないでください。 – julesbou
パーフェクト。短くて甘いとそれを完了します。ありがとう@Tejasシャー –
このjavascriptライブラリを使用して、すべての内部リンクに円滑なスクロールを追加できます。 設定を追加して、無視するリンクを提供することもできます。 詳細はこちらをご覧ください。 https://codingninjascodes.github.io/SmoothScrollJs/
ピュア軽量のJavaScriptライブラリー:smooth-scroll on github
実は、それを行うために、より軽量かつ簡単な方法があります: https://codepen.io/ugg0t/pen/mqBBBY
function scrollTo(element) {
window.scroll({
behavior: 'smooth',
left: 0,
top: element.offsetTop
});
}
document.getElementById("button").addEventListener('click',() => {
scrollTo(document.getElementById("8"));
});
div {
width: 100%;
height: 200px;
background-color: black;
}
div:nth-child(odd) {
background-color: white;
}
button {
position: absolute;
left: 10px;
top: 10px;
}
<div id="1"></div>
<div id="2"></div>
<div id="3"></div>
<div id="4"></div>
<div id="5"></div>
<div id="6"></div>
<div id="7"></div>
<div id="8"></div>
<div id="9"></div>
<div id="10"></div>
<button id="button">Button</button>
'' element.offsetTop''の代わりに '' element.getBoundingClientRect()を使うべきです。 + window.scrollY'' – Braggae
この使用:
は、let element = document.getElementById("box");
element.scrollIntoView();
element.scrollIntoView(false);
element.scrollIntoView({block: "end"});
element.scrollIntoView({behavior: "instant", block: "end", inline: "nearest"});
いくつかの説明を追加しようとします –
説明:https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView#Browser_compatibility –
非常に興味深い解決策(+1)現時点でIEの悪臭でサポートされています! –
私のお気に入りのスクロールのライブラリは現在のでwide range of featuresと小さいサイズ(現在は3.17キロバイト)のZenscrollです。
ネイティブのscrollIntoView
機能を使用する方が意味があるかもしれませんが、現在IEのサポートが不足しているため、ほとんどのプロダクションサイトでpolyfilledする必要があるため、代わりにZenscrollを使用することをおすすめします。
- 1. jqueryダイアログ - デフォルトボタンなし
- 2. jQuery Mobile CSS3ページ遷移(jQueryモバイルライブラリなし)
- 3. オーバーレイなしのJQueryモーダルダイアログ
- 4. 彗星なしのJqueryリアルタイムチャート
- 5. Jquery UI Connect with connectWithなし
- 6. JQueryカスタムイメージチェックボックスコードがトグルしない
- 7. jqueryなしの角度
- 8. jQueryのフェードイン()表示なし
- 9. jQueryアニメーション、アニメーション化しない
- 10. 応答しないスクリプトエラーJquery
- 11. crossbrowser "inArray"関数(jQueryなし)
- 12. jQueryドロップメニュークリックしないでホバリング
- 13. ポストバックなしのjquery changeイベント
- 14. Jqueryが動作しない
- 15. 最小のツールチップスクリプト(jQueryなし)
- 16. JQuery Crossdomain XMLリクエスト(プロキシなし)
- 17. JQueryリスナーがリッスンしない
- 18. Jquery IsNumeric(条件なし)
- 19. Javascript Jqueryなしの円盤
- 20. Jquery Focusoutがトリガーしない
- 21. シンプルなjqueryが機能しない
- 22. 純粋なjavascriptのアニメーション、jqueryなし
- 23. ストリップ不要なタグ(なしjQueryの)
- 24. シンプルなjqueryアコーディオンコードが動作しない
- 25. (jQueryのなし)クラスとして
- 26. jqueryのテキストボックスリストがjqueryで機能しない
- 27. jQueryモバイルを使用しないJQueryモバイルページの遷移
- 28. サードパーティのjQueryライブラリを使用しないjQueryのポップアップ?
- 29. jQuery-Mobileを使用しないjQuery-Mobile listviewプラグイン
- 30. jQueryツリービュープラグインがjQueryアコーディオンプラグイン内で動作しない
@SLaks 25%? HA!そうね... – Ian
私は純粋なjsで試したが、それはジャークを与える –
jqueryは非常に多くの無駄なコードを含んでいる、あなたはすべてのjqueryの50%を使用するつもりはないので、バニラJSに行くか、jquery – sbaaaang