转载地址:http://www.cnblogs.com/hnyei/archive/2011/09/20/2182199.html
要制作一个在线聊天的程序,在做最后的修饰时,需要对获得的信息即时滚动以保证用户总能看到最新消息。
聊天程序是基于AJAX设计的,没有用框架,消息容器是一个DIV,所以问题就在于如何控制DIV的滚动条。
网上有资料介绍说通过设置scrollTop属性来控制滚动条位置,具体可参见:
http://hi.baidu.com/chen1345789/blog/item/de727bfb45587b176d22eba1.html
但同样的代码拿到我这里却完全失效,又仔细查了下资料说XHTML标准下scrollTop的值恒为0,解决办法是使用document.documentElement.scrollTop代替document.body.scrollTop,讲了半天所解决的是整个页面的滚动条。这个方法我是用不了了,因为不是框架结构,所以不可能用body的滚动条控制浏览信息。
网上关于这个问题的资料很少,连CSDN上也说没有办法。
不死心,后来查DHTML手册得知DIV有个doScroll方法可以用来模拟滚动条点击,但很令人失望,到了我这里又是完全失效,难道又不被XHTML支持?
最后终于被我找到三种控制DIV内容滚动的方法:
方法一:
使用锚标记要滚动到的位置,然后通过click方法模拟点击滚动到锚所在位置
<script language="javascript1.2" type="text/javascript">
function onGetMessage(context)
{
msg.innerHTML+=context;
msg_end.click();
}
</script>
<div style="width:500px;overflow:auto">
<div id="msg" style="overflow:hidden;width:480px;"></div>
<div><a id="msg_end" name="1" href="#1"> </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:500px;overflow:auto">
<div id="msg" style="overflow:hidden;width:480px;"></div>
<div id="msg_end" style="height:0px; overflow: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/html; charset=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:auto; height: 100px; width: 400px; border: 1px solid #999;">
</div>
<input type="button" value="插入一行" onclick="add();">
<!--************************************* 实例代码结束 *************************************-->
</div>
</div>
</body>
</html>
方法4:
这个比较复杂也比较灵活一点,就是利用DIV+JS+图片构造一个滚动条,当然了图片是怎么好看怎么用了。
主要部分就是外层的DIV加个overflow:hidden属性,通过js代码调整内层DIV的margin-left和margin-top来控制内容的滚动,由于上面两种方法已经可以满足需求,所以这种方法没具体做深究,有兴趣的可以试一下
分享到:
相关推荐
### 让div滚动条初始化到最低位置的三种方法 在前端开发中,有时我们需要实现一个功能,即在向某个特定的`div`容器内添加新内容后,使该`div`的滚动条自动滚动到最底部,以确保新添加的内容能够立即呈现在用户的...
以上三种方法都可以实现在聊天窗口或其他需要实时滚动的div元素中,自动将滚动条滚动到最底部。选择哪种方法取决于具体应用场景和个人喜好。需要注意的是,这些方法依赖于JavaScript,因此在没有JavaScript支持的...
让DIV的滚动条自动滚动到最底部.md
在网页设计中,"滚动条到底部弹出div"是一种常见的交互效果,它通常用于实现无限滚动、加载更多内容或显示底部菜单等场景。这个功能是通过JavaScript和CSS结合实现的,下面我们将详细探讨如何实现这个效果。 首先,...
在JavaScript(JS)编程中,控制滚动条自动向下滚动是一种常见的需求,特别是在实时聊天、论坛或者日志更新等场景中,我们希望用户能够始终保持看到最新的内容。本篇将详细讲解如何利用JavaScript实现这一功能,以及...
`可以让内容在垂直方向上自动出现滚动条,当内容超出`div`时。但CSS无法实现自动滚动到底部的功能,这需要配合JavaScript来完成。 接下来,我们转向“HTML自动生成随机颜色”。在HTML中,我们通常使用CSS来定义元素...
实现div滚动条默认最底部以及默认最右边的示例代码 在网页开发中,我们经常需要实现div滚动条默认最底部以及默认最右边的效果,以便用户可以快速地查看最新的信息内容。今天,我们将分享一个简单而实用的示例代码,...
ElementUI 的滚动条组件是用来处理大型数据列表滚动的,它可以自动管理滚动条的显示和隐藏,并提供了许多实用的配置选项来满足不同的需求。在这个例子中,我们使用 ElementUI 的 `el-scrollbar` 组件来实现滚动条的...
在探讨如何使用jQuery让DIV元素的滚动条滚动到最底部之前,我们需要了解几个基础知识点,以便更好地掌握这一操作的原理和应用背景。 首先,需要了解jQuery是什么。jQuery是一个快速、小巧、功能丰富的JavaScript库...
总结来说,Vue中监听div滚动条到底部的方法主要是通过操作DOM元素和事件监听来实现的。需要注意的是,对第三方弹窗的兼容处理,以及在实际项目中对性能和代码优化的考虑。希望以上分享的方法能够为读者解决实际开发...
在提供的文件内容中,作者分享了两种方法来实现在Vue页面中每次数据渲染完后滚动条保持在最底部的示例代码: ```javascript // 每次页面渲染完之后滚动条在最底部 updated: function() { this.$nextTick(function...
标题"div不随滚动条的移动而改变位置"所指的问题是关于如何实现一个固定定位(fixed positioning)的 `div` 元素。这种效果使得 `div` 在页面上保持在一个特定位置,即使用户滚动页面,它也不会移动。这通常用于创建...
在网页设计中,当用户滚动到页面底部时自动加载新的内容是一种常见的优化用户体验的技术,通常被称为“无限滚动”或“滚动加载”。这种技术在社交媒体网站如新浪微博、Facebook等广泛使用,因为它可以避免用户手动...
然而,上述方法可能仍然无法保证滚动条在所有情况下都能正确地定位到列表底部。原因是Vue框架中的DOM更新是异步的,数据变化后DOM并不会立即更新,而是按Vue的更新策略进行。如果在数据变化后立即读取`scrollHeight`...
"实现div内部滚动条滚动到底部和顶部的代码" 在Web开发中,实现div内部滚动条滚动到底部和顶部是非常常见的需求。今天,我们将分享一个简洁的代码,用于实现div内部滚动条滚动到底部和顶部的功能。 代码分析 首先...
综上所述,通过这段代码,我们能够实现一个在内容动态更新时,自动将滚动条滚动到底部的效果,使得最新的内容总是可见的。这个方法在聊天窗口、日志显示、实时更新的数据面板等场景中非常有用。 需要注意的是,当...
在上述代码中,“scroll”为div元素的类名,xxx为希望横向滚动条滚动到的具体位置值。这些操作方法是自动化测试中模拟用户滚动操作的重要手段,对确保网页的交互功能正确无误至关重要。 需要注意的是,文档的内容...
在Vue.js应用中,有时我们需要实现一个功能,即当用户首次加载或切换到某个页面时,滚动条自动定位到页面底部。这通常适用于聊天界面、实时更新内容等场景,让用户一进入页面就能看到最新的信息。以下是一个具体的...