js scroll 怎么滚到最下方

JavaScript017

js scroll 怎么滚到最下方,第1张

js判断window.scroll 判断滚动到底部的方法是设置一个变量,来检测鼠标位置。

具体的实现方法如下:

$(window).scroll(function() {

如果滚动的高度加上窗口的高度等于页面的高度就是到了底部

if($(window).scrollTop() + $(window).height() == $(document).height()) {

alert("bottom!")//已经滚动到底部

}

})

或者也可以写专用方法检测高度:

function getDocHeight() {

var D = document

return Math.max(

D.body.scrollHeight, D.documentElement.scrollHeight,

D.body.offsetHeight, D.documentElement.offsetHeight,

D.body.clientHeight, D.documentElement.clientHeight

)

}

然后再用以下方法检测:

$(window).scroll(function() {

if($(window).scrollTop() + $(window).height() == getDocHeight()) {

alert("bottom!")

}

})

原理

1.通过监听滚动区域DOM的scroll事件, 计算出触底

// 滚动可视区域高度 + 当前滚动位置 === 整个滚动高度

scrollDom.clientHeight + scrollDom.scrollTop === scrollDom.scrollHeight

2.触底后触发列表添加, 列表添加使用createDocumentFragment, 将多次插入的DOM先存入内存, 最后一次填充进去, 提高性能, 也方便后面的MutationObserver监听

3.使用MutationObserver监听列表的DOM添加, 添加完毕后, 隐藏加载中提示

示例

https://codepen.io/klren0312/full/dybgayL

参考资料

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/clientHeight

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollHeight

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollTop

https://developer.mozilla.org/zh-CN/docs/Web/API/GlobalEventHandlers/onscroll

https://developer.mozilla.org/zh-CN/docs/Web/API/Document/createDocumentFragment

https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver

三种控制DIV内容滚动的方法:

方法一:

使用锚标记要滚动到的位置,然后通过click方法模拟点击滚动到锚所在位置

<script language="javascript1.2" type="text/javascript">

function onGetMessage(context)

{

msg.innerHTML+=context

msg_end.click()

}

</script>

<div style="width:500pxoverflow:auto">

<div id="msg" style="overflow:hiddenwidth:480px"></div>

<div><a id="msg_end" name="1" href="#1">&nbsp</a></div>

</div>

方法二:

利用DIV的scrollIntoView方法,将最底端滚动到可视位置 [list=1]<script

language="javascript1.2"

type="text/javascript">

function onGetMessage(context)

{

msg.innerHTML+=context

msg_end.scrollIntoView()

}

</script>

<div style="width:500pxoverflow:auto">

<div id="msg" style="overflow:hiddenwidth:480px"></div>

<div id="msg_end" style="height:0pxoverflow:hidden"></div>

</div>

方法三:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="content-type" content="text/htmlcharset=utf-8" />

<meta name="keywords" content="滚动条, scrollbar, 页面底部, 聊天窗口, " />

<meta name="description" content="有些时候(如开发聊天程序),我们需要将将滚动条(scrollbar)保持在最底部,比如聊天窗口,最新发出和收到的信息要显示在最下方,如果要看到最下方的内容,就必须保证滚动条保持在最底部。" />

<title>将滚动条(scrollbar)保持在最底部的方法 - 滚动条, scrollbar, 页面底部, 聊天窗口, </title>

</head>

<body>

<div id="example">

<h3 id="example_title">将滚动条(scrollbar)保持在最底部的方法</h3>

<div id="example_main">

<!--************************************* 实例代码开始 *************************************-->

<script type="text/javascript">

function add()

{

var now = new Date()

var div = document.getElementById('scrolldIV')

div.innerHTML = div.innerHTML + 'time_' + now.getTime() + '<br />'

div.scrollTop = div.scrollHeight

}

</script>

<span class="notice">请点击“插入一行”按钮,插入最新信息,当出现滚动条时,滚动条将自动保持在底部。</span><br />

<div id="scrolldIV" style="overflow:autoheight: 100pxwidth: 400pxborder: 1px solid #999">

</div>

<input type="button" value="插入一行" onclick="add()">

<!--************************************* 实例代码结束 *************************************-->

</div>

</div>

</body>

</html>