聊天框,自动滚动到底部

2024-03-23

如何让聊天框自动滚动

HTML:

<!DOCTYPE html>
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    
<meta name="robots" content="noindex">
<title>College Enquiry Chat</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="assets/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">

<script src="assets/js/jquery-1.10.2.min.js"></script>
    <script src="assets/js/bootstrap.min.js"></script>
    <script type="text/javascript">
        window.alert = function(){};
        var defaultCSS = document.getElementById('bootstrap-css');
        function changeCSS(css){
            if(css) $('head > link').filter(':first').replaceWith('<link rel="stylesheet" href="'+ css +'" type="text/css" />'); 
            else $('head > link').filter(':first').replaceWith(defaultCSS); 
        }
    </script>
</head>
<body>
            <div class="panel panel-primary" style="border:0px">
                <div class="panel-heading top-bar">
                    <div class="col-md-8 col-xs-8">
                        <h3 class="panel-title"><span class="glyphicon glyphicon-comment" style="margin-right:6px;"></span>College Enquiry Chat</h3>
                    </div>
                </div>


                <div class="panel-body msg_container_base">

                    <div class="row msg_container base_sent">
                        <div class="col-md-10 col-xs-10">
                            <div class="messages msg_sent">
                                <p>that mongodb thing looks good, huh?
                                tiny master db, and huge document store</p>
                            </div>
                        </div>
                    </div>

                    <div class="row msg_container base_receive">
                        <div class="col-md-10 col-xs-10">
                            <div class="messages msg_receive">
                                <p>that mongodb thing looks good, huh?
                                tiny master db, and huge document store</p>
                            </div>
                        </div>
                    </div>

                    <chat_log> . </chat_log>
                </div>

                <!--CHAT USER BOX-->
                <div class="panel-footer">
                    <div class="input-group" id="myForm">
                        <input id="btn-input" type="text" class="form-control input-sm chat_input" placeholder="Write your message here...">
                        <span class="input-group-btn">
                        <button class="btn btn-primary btn-sm" id="submit" type="submit">Send</button>
                        </span>
                    </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

JavaScript:

    <script>
$("#submit").click(function() {
    var data = $("#btn-input").val();
        //console.log(data);
        $('chat_log').append('<div class="row msg_container base_sent"><div class="col-md-10 col-xs-10"><div class="messages msg_receive"><p>'+data+'</p></div></div></div><div class="row msg_container base_receive"><div class="col-md-10 col-xs-10"><div class="messages msg_receive"><p>'+data+'</p></div></div></div>');
        clearInput();
});

function clearInput() {
    $("#myForm :input").each(function() {
        $(this).val(''); //hide form values
    });
}

$("#myForm").submit(function() {
    return false; //to prevent redirection to save.php
});
</script>

CSS :

.msg_container_base{
  background: #e5e5e5;
  margin: 0;
  padding: 0 10px 10px;
  max-height:80vh;
  overflow-x:hidden;
}
.top-bar {
  background: #666;
  color: white;
  padding: 10px;
  position: relative;
  overflow: hidden;
}
.msg_receive{
    padding-left:0;
    margin-left:0;
}
.msg_sent{
    padding-bottom:20px !important;
    margin-right:0;
}
.messages {
  background: white;
  padding: 10px;
  border-radius: 2px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
  max-width:100%;
}
.messages > p {
    font-size: 13px;
    margin: 0 0 0.2rem 0;
  }
.messages > time {
    font-size: 11px;
    color: #ccc;
}
.msg_container {
    padding: 10px;
    overflow: hidden;
    display: flex;
}
img {
    display: block;
    width: 100%;
}
.avatar {
    position: relative;
}
.base_receive > .avatar:after {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    width: 0;
    height: 0;
    border: 5px solid #FFF;
    border-left-color: rgba(0, 0, 0, 0);
    border-bottom-color: rgba(0, 0, 0, 0);
}

.base_sent {
  justify-content: flex-end;
  align-items: flex-end;
}
.base_sent > .avatar:after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    width: 0;
    height: 0;
    border: 5px solid white;
    border-right-color: transparent;
    border-top-color: transparent;
    box-shadow: 1px 1px 2px rgba(black, 0.2); // not quite perfect but close
}

.msg_sent > time{
    float: right;
}



.msg_container_base::-webkit-scrollbar-track
{
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
    background-color: #F5F5F5;
}

.msg_container_base::-webkit-scrollbar
{
    width: 12px;
    background-color: #F5F5F5;
}

.msg_container_base::-webkit-scrollbar-thumb
{
    -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
    background-color: #555;
}

.btn-group.dropup{
    position:fixed;
    left:0px;
    bottom:0;
}

以下代码功能显示了用户输入的内容以及当单击发送时,用户将看到他以两种方式发送的消息。一种是以发送和接收的形式。

有没有办法自动滚动到底部


将其添加到您的代码中:

$(".msg_container_base").stop().animate({ scrollTop: $(".msg_container_base")[0].scrollHeight}, 1000);

所以提交点击函数看起来像这样:

$("#submit").click(function() {
    var data = $("#btn-input").val();
        //console.log(data);
        $('chat_log').append('<div class="row msg_container base_sent"><div class="col-md-10 col-xs-10"><div class="messages msg_receive"><p>'+data+'</p></div></div></div><div class="row msg_container base_receive"><div class="col-md-10 col-xs-10"><div class="messages msg_receive"><p>'+data+'</p></div></div></div>');
        clearInput();
        $(".msg_container_base").stop().animate({ scrollTop: $(".msg_container_base")[0].scrollHeight}, 1000);
});

JSFiddle演示 https://jsfiddle.net/9L9yxqv3/1/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

聊天框,自动滚动到底部 的相关文章

随机推荐

  • 代码优先:仅在执行某些代码后才创建数据库?

    我想先使用代码创建一个数据库 我的数据库始终处于 DropCreateDatabaseAlways 模式 我注意到 如果我不尝试对数据库执行一些查询 例如 using var db new Models TnHContext var que
  • CodeIgniter - 获取最后一个 URI 段

    我试图获取 CI 中的最后一个 URI 段 但我不知道它的编号是多少 因为当用户单击页面内的链接时 将附加参数 整数 然后在控制器中使用它们通过 ajax 将相关数据库记录拉入页面 我如何告诉 CI 获取最后一段 就像是 record nu
  • 使用javascript在数组中组合单词

    假设我有一个数组 Alex Sam Robert 我想将它们组合起来 例如 获取第一个数组 0 并附加数组 2 这将是 AlexRobert array 0 的第一个字母是 A 并附加 array 2 的第一个字母 即 Robert 这将是
  • 使用 Extendscript 编写二进制文件。文件大小不正确

    进一步我的问题here https stackoverflow com questions 63022178 read binary file with extendscript我正在使用 Extendscript 将十六进制颜色列表从 P
  • 使用 OrbitControls 时锁定 x 轴旋转 - Three.js

    使用 OrbitControls 时锁定 x 轴旋转是否可行 目前我有一个挂在绳子上的圣诞星的对象模型 我希望它仅水平旋转 对于您的 OrbitControls 实例集 controls minPolarAngle Math PI 2 co
  • Twitter Bootstrap Datepicker 不会更新输入值

    我有这段代码 但现在我陷入困境
  • Unicode 联盟是否打算让 UTF-16 字符耗尽?

    当前版本的 UTF 16 只能编码 1 112 064 个不同的数字 码点 0x0 0x10FFFF Unicode 联盟是否打算让 UTF 16 字符耗尽 即创建一个代码点 gt 0x10FFFF 如果不是 为什么有人要编写 utf 8
  • Go中for循环中的多个变量

    我正在尝试在 Go 中编写一个带有多个变量的 for 循环 来自 javascript 世界 我想实现这样的目标 var i 10 var b 2 for var a b i i 2 b b some code 我尝试过这样的 原始翻译 i
  • laravel 5 在运行时更改数据库名称

    有没有办法更改连接的数据库名称而不是添加另一个连接 如果我在 Config database connections 中添加 3 或 5 个数据库是可以的 但是如果我正在使用 100 个或更多数据库怎么办 由于所有人都使用相同的主机 用户名
  • 什么属于聚合根

    这是一个实用的领域驱动设计问题 从概念上讲 我认为我得到了聚合根 直到我去定义一个聚合根 我有一个 Employee 实体 它已作为聚合根出现 在商业领域 some员工可以记录与工作相关的违规行为 员工 违规行为 由于并非所有员工都受到此限
  • 将数据表从一个数据集复制到另一个数据集

    我正在尝试将位于不同数据集 Y 内部的数据表添加到新的数据集 X 如果直接添加的话 会出现以下错误 DataTable 已属于另一个 DataSet 我是否必须克隆 DataTable 并将所有行导入其中 然后将新的 DataTable 添
  • 动画径向渐变CSS3:从左到右移动? [复制]

    这个问题在这里已经有答案了 我想要一个带有径向渐变的动画背景radial gradient circle rgba 255 255 255 0 8 0 rgba 255 255 255 0 100 将其从左向右移动 http jsfiddl
  • Magento 多个 Authorize.net 网关

    我见过这个关于货币类型的问题 但我要问的是如何在同一商店为不同的信用卡类型配置第二个 Authorize net 帐户 因此 我们希望一些信用卡使用第一个主 Authorize net 网关 而其他信用卡使用辅助 Authorize net
  • Background.js 找不到使用内容脚本注入的内容

    我的 Chrome 扩展有一个内容脚本 可以将自定义 DIV 注入当前页面 这部分有效 但是 该扩展还有一个右键单击上下文菜单 单击该菜单时 应该以某种方式修改此注入的 DIV 比方说 向该 DIV 添加一些文本 问题是找不到注入的内容 右
  • 尝试在Python中导入docx

    公平警告 我对 python 非常陌生 所以请原谅我犯的任何愚蠢错误 我希望能够使用 Python 在 Mac 上打开 关闭 操作 读取 Word 文档 docx 文件 python docx 模块看起来非常有用 所以我一直尝试将其安装在我
  • 如何在组织模式下取消选中下一个循环/重复任务的复选框

    对于组织模式下的循环或重复任务 在该任务内 如果有多个复选框且全部标记为勾选 则在一般任务屏蔽为 完成 后 下一个循环周期的复选框仍显示为勾选 并且应该取消勾选 例如 TODO Cyclic monthly home 0 5 SCHEDUL
  • Node.js - 部署 Node.js 应用程序时是否需要在生产服务器上重新安装所有模块

    我已经开发了我的第一个 Node js pp 目前 它只是放在我的笔记本电脑上 在开发过程中我必须安装一些模块 npm install socket io npm install email protected cdn cgi l emai
  • Angular 1 项目的 TSLint 配置

    我的团队正在使用 Angular 1 5 typescript 进行项目 有人可以给我关于像我这样的项目的最佳 TSLint 配置的建议吗 我现在想添加 TSLint 配置 https github com Microsoft TypeSc
  • 如何在数据坐标中的绘图之外编写注释

    我的图形来自y 1 to y 10 我想在任意位置写一小段文字 比如x 2000 y 5 ax annotate MgII xy 2000 0 5 0 xycoords data 现在我想要相同的 但这次文本必须位于图形之外 但位于我在数据
  • 聊天框,自动滚动到底部

    如何让聊天框自动滚动 HTML