回答:
jQueryは必要ありません。Google検索で得られた上位の結果のほとんどは、次のような答えを与えてくれました。
window.scrollTo(0,document.body.scrollHeight);
ネストされた要素がある場合、ドキュメントがスクロールしない場合があります。この場合、スクロールする要素を対象とし、代わりにそのスクロールの高さを使用する必要があります。
window.scrollTo(0,document.querySelector(".scrollingContainer").scrollHeight);
あなたはそれをonclick
あなたの質問のイベント(すなわち<div onclick="ScrollToBottom()" ...
)に結びつけることができます。
あなたが見ることができるいくつかの追加のソース:
element.scrollTop = element.scrollHeight
。
ページ全体を一番下までスクロールしたい場合:
var scrollingElement = (document.scrollingElement || document.body);
scrollingElement.scrollTop = scrollingElement.scrollHeight;
JSFiddleのサンプルを参照してください
要素を一番下までスクロールしたい場合:
function gotoBottom(id){
var element = document.getElementById(id);
element.scrollTop = element.scrollHeight - element.clientHeight;
}
そしてそれはそれがどのように機能するかです:
参照:scrollTop、scrollHeight、clientHeight
更新: Chromeの最新バージョン(61以降)およびFirefoxは、本文のスクロールをサポートしていません。https : //dev.opera.com/articles/fixing-the-scrolltop-bug/を参照してください。
バニラJS実装:
element.scrollIntoView(false);
https://developer.mozilla.org/en-US/docs/Web/API/element.scrollIntoView
element.scrollIntoView({behavior: "smooth"});
これを使用して、アニメーション形式でページを下に移動できます。
$('html,body').animate({scrollTop: document.body.scrollHeight},"fast");
以下はクロスブラウザソリューションです。Chrome、Firefox、Safari、IE11でテスト済み
window.scrollTo(0, document.body.scrollHeight || document.documentElement.scrollHeight);
window.scrollTo(0、document.body.scrollHeight); 少なくともFirefox 37.0.2では、Firefoxでは機能しません
時々、ページがスクロールしてbuttomまで(例えば、ソーシャルネットワークで)、最後までスクロールして(ページの最後のbuttom)私はこのスクリプトを使用します。
var scrollInterval = setInterval(function() {
document.documentElement.scrollTop = document.documentElement.scrollHeight;
}, 50);
また、ブラウザのJavaScriptコンソールを使用している場合は、スクロールを停止できると便利な場合があるため、以下を追加します。
var stopScroll = function() { clearInterval(scrollInterval); };
そしてを使用しますstopScroll();
。
特定の要素にスクロールする必要がある場合は、以下を使用します。
var element = document.querySelector(".element-selector");
element.scrollIntoView();
または、特定の要素に自動スクロールするためのユニバーサルスクリプト(またはページのスクロール間隔を停止する):
var notChangedStepsCount = 0;
var scrollInterval = setInterval(function() {
var element = document.querySelector(".element-selector");
if (element) {
// element found
clearInterval(scrollInterval);
element.scrollIntoView();
} else if((document.documentElement.scrollTop + window.innerHeight) != document.documentElement.scrollHeight) {
// no element -> scrolling
notChangedStepsCount = 0;
document.documentElement.scrollTop = document.documentElement.scrollHeight;
} else if (notChangedStepsCount > 20) {
// no more space to scroll
clearInterval(scrollInterval);
} else {
// waiting for possible extension (autoload) of the page
notChangedStepsCount++;
}
}, 50);
この関数は、呼び出す必要がある場合はいつでも使用できます。
function scroll_to(div){
if (div.scrollTop < div.scrollHeight - div.clientHeight)
div.scrollTop += 10; // move down
}
document.getElementById('copyright').scrollTop += 10
(最新のChromeでは)動作しません...ゼロのままです
link要素のid
reference属性href
にany を付けることができます:
<a href="#myLink" id="myLink">
Click me
</a>
上記の例では、ユーザーがClick me
ページの下部をクリックすると、ナビゲーションはClick me
それ自体に移動します。
Gentle Anchorsは、すばらしいJavaScriptプラグインを試すことができます。
例:
function SomeFunction() {
// your code
// Pass an id attribute to scroll to. The # is required
Gentle_Anchors.Setup('#destination');
// maybe some more code
}
互換性テスト済み:
Seleniumで下にスクロールするには、以下のコードを使用します。
下部のドロップダウンまで、ページの高さまでスクロールします。JavaScriptとReactの両方で正常に動作する以下のJavaScriptコードを使用します。
JavascriptExecutor jse = (JavascriptExecutor) driver; // (driver is your browser webdriver object)
jse.executeScript("window.scrollBy(0,document.body.scrollHeight || document.documentElement.scrollHeight)", "");
これが私の解決策です:
//**** scroll to bottom if at bottom
function scrollbottom() {
if (typeof(scr1)!='undefined') clearTimeout(scr1)
var scrollTop = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;
var scrollHeight = (document.documentElement && document.documentElement.scrollHeight) || document.body.scrollHeight;
if((scrollTop + window.innerHeight) >= scrollHeight-50) window.scrollTo(0,scrollHeight+50)
scr1=setTimeout(function(){scrollbottom()},200)
}
scr1=setTimeout(function(){scrollbottom()},200)
これは下へのスクロールを保証します
ヘッドコード
<script src="http://code.jquery.com/jquery-1.8.1.min.js"></script>
<script language="javascript" type="text/javascript">
function scrollToBottom() {
$('#html, body').scrollTop($('#html, body')[0].scrollHeight);
}
</script>
ボディコード
<a href="javascript:void(0);" onmouseover="scrollToBottom();" title="Scroll to Bottom">▼ Bottom ▼</a>
写真は千の言葉に値します:
キーは次のとおりです。
document.documentElement.scrollTo({
left: 0,
top: document.documentElement.scrollHeight - document.documentElement.clientHeight,
behavior: 'smooth'
});
要素document.documentElement
であるを使用してい<html>
ます。これはを使用window
するのと同じですが、ページ全体ではなくコンテナの場合、変更してdocument.body
とdocument.documentElement
を除いてこのように機能するため、この方法を使用するのは個人的な好みですdocument.querySelector("#container-id")
。
let cLines = 0;
let timerID = setInterval(function() {
let elSomeContent = document.createElement("div");
if (++cLines > 33) {
clearInterval(timerID);
elSomeContent.innerText = "That's all folks!";
} else {
elSomeContent.innerText = new Date().toLocaleDateString("en", {
dateStyle: "long",
timeStyle: "medium"
});
}
document.body.appendChild(elSomeContent);
document.documentElement.scrollTo({
left: 0,
top: document.documentElement.scrollHeight - document.documentElement.clientHeight,
behavior: 'smooth'
});
}, 1000);
body {
font: 27px Arial, sans-serif;
background: #ffc;
color: #333;
}
ない場合は、違いを比較できますscrollTo()
。
特定の要素を下にスクロールしたい場合の簡単な方法
下にスクロールしたいときはいつでもこの関数を呼び出します。
function scrollDown() {
document.getElementById('scroll').scrollTop = document.getElementById('scroll').scrollHeight
}
ul{
height: 100px;
width: 200px;
overflow-y: scroll;
border: 1px solid #000;
}
<ul id='scroll'>
<li>Top Here</li>
<li>Something Here</li>
<li>Something Here</li>
<li>Something Here</li>
<li>Something Here</li>
<li>Something Here</li>
<li>Something Here</li>
<li>Something Here</li>
<li>Something Here</li>
<li>Something Here</li>
<li>Bottom Here</li>
<li style="color: red">Bottom Here</li>
</ul>
<br />
<button onclick='scrollDown()'>Scroll Down</button>
scroll
要素を作成する必要があります。
私は動的コンテンツを備えたAngularアプリを持っていて、上記の回答のいくつかを試してみましたが、あまり成功していません。私は@Konardの答えを適応させ、私のシナリオのためにそれをプレーンJSで動作させました:
HTML
<div id="app">
<button onClick="scrollToBottom()">Scroll to Bottom</button>
<div class="row">
<div class="col-md-4">
<br>
<h4>Details for Customer 1</h4>
<hr>
<!-- sequence Id -->
<div class="form-group">
<input type="text" class="form-control" placeholder="ID">
</div>
<!-- name -->
<div class="form-group">
<input type="text" class="form-control" placeholder="Name">
</div>
<!-- description -->
<div class="form-group">
<textarea type="text" style="min-height: 100px" placeholder="Description" ></textarea>
</div>
<!-- address -->
<div class="form-group">
<input type="text" class="form-control" placeholder="Address">
</div>
<!-- postcode -->
<div class="form-group">
<input type="text" class="form-control" placeholder="Postcode">
</div>
<!-- Image -->
<div class="form-group">
<img style="width: 100%; height: 300px;">
<div class="custom-file mt-3">
<label class="custom-file-label">{{'Choose file...'}}</label>
</div>
</div>
<!-- Delete button -->
<div class="form-group">
<hr>
<div class="row">
<div class="col">
<button class="btn btn-success btn-block" data-toggle="tooltip" data-placement="bottom" title="Click to save">Save</button>
<button class="btn btn-success btn-block" data-toggle="tooltip" data-placement="bottom" title="Click to update">Update</button>
</div>
<div class="col">
<button class="btn btn-danger btn-block" data-toggle="tooltip" data-placement="bottom" title="Click to remove">Remove</button>
</div>
</div>
<hr>
</div>
</div>
</div>
</div>
CSS
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}
JS
function scrollToBottom() {
scrollInterval;
stopScroll;
var scrollInterval = setInterval(function () {
document.documentElement.scrollTop = document.documentElement.scrollHeight;
}, 50);
var stopScroll = setInterval(function () {
clearInterval(scrollInterval);
}, 100);
}
最新のChrome、FF、Edge、および標準のAndroidブラウザーでテストされています。ここにフィドルがあります:
getDocHeight: function() {
var D = document;
return Math.max(
D.body.scrollHeight,
D.documentElement.scrollHeight,
D.body.offsetHeight,
D.documentElement.offsetHeight,
D.body.clientHeight,
D.documentElement.clientHeight
);
}
document.body.scrollTop = document.documentElement.scrollTop = this.getDocHeight();
window.scrollTo(0,1e10);
常に動作します。
1e10は大きな数です。常にページの終わりです。