用原生JS模拟一个聊天记录表

这是一个模拟聊天记录的案例,初学者可以通过本例对来加深JS的事件的熟悉和理解。
话不多说,我们先来看一下效果图吧。
这里写图片描述

下面开始说明怎么写吧。
HTML结构:

<div id="main" class="main">
    <ul id="content" class="content">
        <li class="msgContent left">你好</li>
        <div style="clear: both;"></div>
        <li class="msgContent left">这个是什么</li>
        <div style="clear: both;"></div>

        <li class="msgContent right">。。。。</li>
        <div style="clear: both;"></div>

        <!-- 当点击发送按钮,就在 ul 中添加一条消息记录 -->

    </ul>
    <textarea id="msg_input" class="msgInput"></textarea>
    <button id="sendbtn" class="sendbtn">发送</button>

先看看JS代码吧:

//获取节点
var oInput = document.getElementById("msg_input");
var oBtn = document.getElementById("sendbtn");
var oContent = document.getElementById("content");//ul

//点击发送
oBtn.onclick = function()
{
    //内容输出
    var str = oInput.value;//获取输入框的值
    var oLi = document.createElement("li");//创建li标签
    oLi.innerHTML = str;//节点内容
    oContent.appendChild(oLi);//把新建的li标签压入ul中

    //对li添加发送消息的样式
    oLi.className = "msgContent right";

    //清除li的浮动:
    oLi.style.clear = "both";

    //设置发送内容后输入框的数据清空:
    oInput.value = "";

    //保持当前节点对象在最可见区域
    oLi.scrollIntoView();
}

//按下Ctrl+Enter回车键完成发送
oInput.onkeydown = function(e)
{
    e = e || window.event;
    if (e.ctrlKey && e.keyCode == 13)
    {
        oBtn.onclick();//执行发送内容
    }
}

CSS样式(重点在JS,这只是一些美观样式):

*{font-size: 14px; padding:0; margin:0;}/*实际开发不要用“*”符号*/

/*主体*/
.main{
    position: relative;
    margin: 20px auto;
    border: 1px solid steelblue;
    width: 430px;
    height: 400px;
}

/*输入框*/
.msgInput{
    display: block;
    width: 406px;
    height: 60px;
    margin: 10px auto;

}

/*按钮*/
.sendbtn{
    position: absolute;
    width: 100px;
    height: 29px;
    bottom: 5px;
    right: 10px;
}

/*内容*/
.content{
    list-style: none;
    width: 410px;
    height: 280px;
    margin: 5px auto;
    border: 1px dotted #D1D3D6;
    overflow-y: scroll;
}
.msgContent{
    width:auto;
    max-width: 250px;
    height: auto;
    word-break: break-all;
    margin: 5px;
    padding: 3px;
    border-radius: 5px;
}

.content .left{
    float: left;
    text-align: left;
    background-color: lightgrey;
}
.content .right{
    float: right;
    text-align: right;
    background-color: yellowgreen;
}

这只是一个很简单的例子。
下一篇博客会写如何在局域网内进行聊天。
(觉得好就【顶】一个)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牙云敏同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值