ボタンをクリックすると、新しいdivが追加されます。 divのいずれかの部分がウィンドウに表示されない場合は、それが表示されるまでスクロールしてください。JQueryスクロールウィンドウの位置に応じてdivを表示する
ウィンドウの中央から上に向いている場合は上になるまで上にスクロールし、下になる場合は下にスクロールします。私searchingsで
私はhttps://api.jquery.com/scrollTop/を見つけたが、それは私だけので、トップ
ボタンをクリックすると、新しいdivが追加されます。 divのいずれかの部分がウィンドウに表示されない場合は、それが表示されるまでスクロールしてください。JQueryスクロールウィンドウの位置に応じてdivを表示する
ウィンドウの中央から上に向いている場合は上になるまで上にスクロールし、下になる場合は下にスクロールします。私searchingsで
私はhttps://api.jquery.com/scrollTop/を見つけたが、それは私だけので、トップ
thisをチェックして解決してください。
scrollTop()
を使用すると、div
にスクロールできます。まず、scrollTop()
関数の値を正しく提供するスクロールの方向を見つける必要があります。これはposition()
を使用して見つけることができます。また
$('#button4').click(function() {
// check if the div lies below the button
if ($('#div3').position().top - $('#button4').position().top > 0) {
// in this case we need to add shift
var shift = $(window).height() - $('#div3').height();
} else {
var shift = 0;
}
$(window).scrollTop($('#div3').offset().top - shift);
});
あなたは、現在のビューポート(または現在のウィンドウビューの中央)にdiv
の位置を確認したい場合は、次のようにgetBoundingClientRect()
を使用することができます。
$('#button4').click(function() {
// check if the div lies below the viewport
if ($('#div3')[0].getBoundingClientRect().top > 0) {
// in this case we need to add shift
var shift = $(window).height() - $('#div3').height();
} else {
var shift = 0;
}
$(window).scrollTop($('#div3').offset().top - shift);
});
Here代替のフィドルです。
に常にではない、画面に完全にそれを表示するのに十分なスクロールしたい私は
を説明しています何もしていないようですjQueryを使用している場合。
//scroll top of element
var $myNewElement = $(".new-element-class");
$('html, body').scrollTop($myNewElement.offset().top)
これはうまくいくと思います。 scrollTop関数を呼び出す前にdivが追加されていることを確認してください。
私が正しく理解している場合、このjsfiddleがあなたが探しているものです。
シンプルなアニメーションを追加して、ドキュメントがビューポートの周りを邪魔にならないようにしました。
特長
仕組み
、新しいdiv
要素が追加されます。条件がある
if (isElementAboveViewport($('section > div:last-child'))) {
...
}
場合:if文で
function isElementAboveViewport(element) {
return $(element).offset().top < $(window).scrollTop();
}
:このdiv要素は、以下の機能を使用して、現在のビューポートの上にある場合
$('section').append('<div>');
次に、我々は把握します真実、私たちはスクロール! (offset
は設定可能です - JSのフィドルでは、私は、ビューポートのトップ40ピクセルをカバーし、ボタンの高さである40を使用)、新たな要素が持つ現在のビューポートを下回った場合、我々はチェックし、今
$('html, body').animate({
scrollTop: $('section > div:last-child').offset().top - offset
}, 1000);
同様の機能:
function isElementBelowViewport(element) {
return $(element).offset().top + $(element).height() > $(window).scrollTop() + $(window).height();
}
要素がドキュメント内であまりにも下にある場合は、スクロールします。
$('html, body').animate({
scrollTop: $('section > div:last-child').offset().top + $('section > div:last-child').height() - $(window).height() + offset
}, 1000);
(ここでも、offset
は設定可能です)、これはあなたが探していたおよび/またはあなたはそれがどのように機能するかについて質問がある場合は何である場合は私に知らせてください。
ダウンボートの理由はありますか? –
私はそれを落とした人ではなかった、この作品は本当にうまい!他の答えが働いていても – Mojimi
押したボタンではなく、現在のウィンドウビューの中心を位置参照として使用できますか? – Mojimi
ええ、あなたは何を思いついていますか? –
位置決めのためにビューポートを使用する代替案を追加しました。 –