JavaScript实现简易聊天对话框(加滚动条)


Posted in Javascript onFebruary 10, 2020

今天看了几个JS的视频,老师布置了一个编写一个简易聊天对话框的任务,没有涉及到Ajax.主要实现了切换头像模拟两方的聊天情况,样式比较简单,后期可以进行美化。

需要注意的地方是我是用的ul li列表来实现元素的添加,这样更利于样式的设置,每添加一个对话框需要清除一下浮动,不然会出现连续几个对话框出现在一行的现象。

代码如下:

<!DOCTYPE html>

<html>

<head>
<meta charset="utf-8">
<title>聊天对话框</title>
<style type="text/css">
#container{
width: 250px;
height: 350px;
border:1px solid #7b6b6b;
margin: 0 auto;
position: relative;

}

#content{
width: 250px;
height: 300px;
border-bottom: 1px solid #ccc;
overflow-y: auto;

}

#content ul{
margin: 0;
padding: 0;

}

#Img{
width: 30px;
height: 30px;
position: absolute;
left: 10px;
top: 310px;
border-radius: 15px;

}

#txt{
margin: 0;
position: absolute;
left: 50px;
top: 315px;
border-radius: 2px;
border:1px solid #ccc;
width: 133px;
height: 18px;

}

#btn{
margin-right: 10px;
position: absolute;
margin: 0;
left: 197px;
top: 314px;

}

#edit{
background: #ece7e766;
width: 250px;
height: 50px;

}

.showTxt{
width: auto;
height: auto;
max-width: 230px;
background: #008000a8;
border:0;
font-size: 15px;
color: white;
padding: 5px;
border-radius: 2px; 
word-break: break-all;
list-style: none;
margin-top: 5px;
display: list-item;

}

.left{
text-align: left;
margin-left: 50px;
float: left;

}

.right{
text-align: right;
margin-right: 50px;
float: right;

}

.showImg{
width: 26px;
height: 26px;
border-radius: 13px;

 

}

.leftImg{
left: 10px;
position: absolute;

}

.rightImg{
right: 10px;
position: absolute;

}

#scroll{
position: relative;

}

</style>
</head>
<body>

<div id="container">
<div id="content">
<div id="scroll">
<ul id="save"></ul>
</div>
</div>

<div id="edit">
<img src="1.jpg" id="Img">
<input type="text" name="" id="txt">
<input type="button" name="" value="发送" id="btn">
</div>
</div>
<script type="text/javascript">

 //获取元素

var oCont=document.getElementById('content');
var oImg=document.getElementById('Img');
var oTxt=document.getElementById('txt');
var oBtn=document.getElementById('btn');
var oSTxt=document.getElementsByClassName('showTxt');
var oSave=document.getElementById('save');
var num=0;

 //切换头像
oImg.οnclick=function(){
num++;
if(num%2==0)
oImg.src='1.jpg';
else
oImg.src='2.jpg';

}

 //发送事件
oBtn.οnclick= function(){
addCon();

}

function addCon(){ 
//定义需要添加的元素
var newLi=document.createElement("li");
var newImg=document.createElement('img');
//判断聊天的对象是哪一方,文字框出现在左边还是右边
 if(num%2==0){
//添加对话框
newLi.innerHTML=oTxt.value;
newLi.className='showTxt right';
oSave.appendChild(newLi); 
oTxt.value='';
 //添加头像
newImg.src=oImg.src;
newImg.className='showImg rightImg';
newLi.appendChild(newImg); 

 //清除浮动
var div = document.createElement('div');
 div.style = 'clear:both';
 oSave.appendChild(div);
 }else{
 newLi.innerHTML=oTxt.value;
newLi.className='showTxt left';
oSave.appendChild(newLi); 
oTxt.value='';
newImg.src=oImg.src;
newImg.className='showImg leftImg';
newLi.appendChild(newImg);
var div = document.createElement('div');
 div.style = 'clear:both';
 oSave.appendChild(div);

 }

}

</script>
</body>
</html>

页面结果如图:

JavaScript实现简易聊天对话框(加滚动条)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js日历功能对象
Jan 12 Javascript
一个js过滤空格的小函数
Oct 10 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
Nov 17 Javascript
jQuery实现Tab选项卡切换效果简单演示
Nov 23 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
Sep 05 Javascript
使用BootStrap实现悬浮窗口的效果
Dec 13 Javascript
JS封装通过className获取元素的函数示例
Dec 20 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
May 18 Javascript
bootstrap可编辑下拉框jquery.editable-select
Oct 12 jQuery
Angular实现较为复杂的表格过滤,删除功能示例
Dec 23 Javascript
javascript的hashCode函数实现代码小结
Aug 11 Javascript
vue实现登录功能
Dec 31 Vue.js
node.js使用 http-proxy 创建代理服务器操作示例
Feb 10 #Javascript
node.js中 redis 的安装和基本操作示例
Feb 10 #Javascript
js实现登录拖拽窗口
Feb 10 #Javascript
javascript 原型与原型链的理解及应用实例分析
Feb 10 #Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
Feb 10 #Javascript
node.js使用http模块创建服务器和客户端完整示例
Feb 10 #Javascript
webpack打包优化的几个方法总结
Feb 10 #Javascript
You might like
PHP4实际应用经验篇(2)
2006/10/09 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
2014/06/23 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
微信小程序 canvas API详解及实例代码
2016/10/08 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
基于vue的video播放器的实现示例
2021/02/19 Vue.js
python开发之字符串string操作方法实例详解
2015/11/12 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
python 请求服务器的实现代码(http请求和https请求)
2018/05/25 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
django使用F方法更新一个对象多个对象字段的实现
2020/03/28 Python
前端面试必备之CSS3的新特性
2017/09/05 HTML / CSS
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
俄罗斯名牌服装网上商店:UNIQUE FABRIC
2019/07/25 全球购物
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
房屋转让协议书
2014/04/11 职场文书
多媒体教室标语
2014/06/26 职场文书
合作协议书范本
2014/10/25 职场文书
微观世界观后感
2015/06/10 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android