一个带滚动条的DIV元素,怎么让它的滚动条位置默认保持在最底部?

默认一条消息的时候,图片效果如下:
图片描述
这时候我要是插入一条消息,就会成这样:
图片描述
我想让这个DIV插入新消息后,自动滚动到底部,像这样:
图片描述

中间区域的CSS配置如下:
图片描述

请问,应该怎么做?
我目前只知道要写一个DIV尺寸变化的触发事件, 该调用什么回调函数执行操作呢?
只用原生JS,谢谢

阅读 27.4k
3 个回答

插入新消息的时候可以给新消息的div一个唯一id,然后调用下面的语句就可以了

document.getElementById("xxx").scrollIntoView();

js:

var msg = document.createElement('div');
var chat = document.getElementById("chat");

chat.appendChild(msg);
chat.scrollTop = chat.scrollHeight;

jQuery:

$("#chat").append("<p>new message</p>");
$("#chat").scrollTo('100%');

div高度变化事件:

<div id="chat" onresize="chat_resized"></div
或者
chatDiv.addEventListener("resize", chat_resized);
或者
chatDiv.onresize = function() {};

jQuery:

$('#chat').bind("heightChange", function(){});
或者
$('#chat').bind("resize", function(){});
或者
$('#chat').on("resize", function(){});

我的水平菜~,原生的js不会写,只会用jq写。思路就是下面这个。
当你插入文字的时候

 $('外层div').animate({scrollTop:$('内层div').height()+'px'},500)

这个我以前就是这么写的,关键就是scrollTop值变大就行了。
图片描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题