JavaScript模拟可展开、拖动与关闭的聊天窗口实例


Posted in Javascript onMay 12, 2015

用JavaScript实现的仿QQ聊天窗口,可以展开层、拖动层、关闭层,还可以简单发消息,很不错吧,而且代码也不多,适合新手研究,也比较实用,你可以在此基础上扩展很多JS+CSS应用。

<!--CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt-->
<html>
<head>
<title>层展开、层拖动、层关闭</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css" media="all" rel="stylesheet">
 <!--
 body {
  text-align:left;
  margin:0;
  font:normal 12px Verdana, Arial;
  background:#FFEEFF
 }
 form {
  margin:0;
  font:normal 12px Verdana, Arial;
 }
 table,input {
  font:normal 12px Verdana, Arial;
 }
 a:link,a:visited{
  text-decoration:none;
  color:#333333;
 }
 a:hover{
  text-decoration:none;
  color:#FF6600
 }
 #main {
  width:400px;
  position:absolute;
  left:600px;
  top:100px;
  background:#EFEFFF;
  text-align:left;
  filter:Alpha(opacity=90)
 }
 #ChatHead {
  text-align:right;
  padding:3px;
  border:1px solid #003399;
  background:#DCDCFF;
  font-size:11px;
  color:#3366FF;
  cursor:move;
 }
 #ChatHead a:link,#ChatHead a:visited, {
  font-size:14px;
  font-weight:bold;
  padding:0 3px
 }
 #ChatBody {
  border:1px solid #003399;
  border-top:none;
  padding:2px;
 }
 #ChatContent {
  height:200px;
  padding:6px;
  overflow-y:scroll;
  word-break: break-all
 }
 #ChatBtn {
  border-top:1px solid #003399;
  padding:2px
 }
 -->
 </style><script language="javascript" type="text/javascript">
 <!--
 function $(d){return document.getElementById(d);}
 function gs(d){var t=$(d);if (t){return t.style;}else{return null;}}
 function gs2(d,a){
  if (d.currentStyle){ 
   var curVal=d.currentStyle[a]
  }else{ 
   var curVal=document.defaultView.getComputedStyle(d, null)[a]
  } 
  return curVal;
 }
 function ChatHidden(){gs("ChatBody").display = "none";}
 function ChatShow(){gs("ChatBody").display = "";}
 function ChatClose(){gs("main").display = "none";}
 function ChatSend(obj){
  var o = obj.ChatValue;
  if (o.value.length>0){
   $("ChatContent").innerHTML += "<strong>Akon说:</strong>"+o.value+"<br/>";
   o.value='';
  }
 }
 if (document.getElementById){
  (
   function(){
    if (window.opera){ document.write("<input type='hidden' id='Q' value=' '>"); }
    var n = 500;
    var dragok = false;
    var y,x,d,dy,dx;
    function move(e)
    {
     if (!e) e = window.event;
     if (dragok){
      d.style.left = dx + e.clientX - x + "px";
      d.style.top = dy + e.clientY - y + "px";
      return false;
     }
    }
    function down(e){
     if (!e) e = window.event;
     var temp = (typeof e.target != "undefined")?e.target:e.srcElement;
     if (temp.tagName != "HTML"|"BODY" && temp.className != "dragclass"){
      temp = (typeof temp.parentNode != "undefined")?temp.parentNode:temp.parentElement;
     }
     if('TR'==temp.tagName){
      temp = (typeof temp.parentNode != "undefined")?temp.parentNode:temp.parentElement;
      temp = (typeof temp.parentNode != "undefined")?temp.parentNode:temp.parentElement;
      temp = (typeof temp.parentNode != "undefined")?temp.parentNode:temp.parentElement;
     }
     if (temp.className == "dragclass"){
      if (window.opera){ document.getElementById("Q").focus(); }
      dragok = true;
      temp.style.zIndex = n++;
      d = temp;
      dx = parseInt(gs2(temp,"left"))|0;
      dy = parseInt(gs2(temp,"top"))|0;
      x = e.clientX;
      y = e.clientY;
      document.onmousemove = move;
      return false;
     }
    }
    function up(){
     dragok = false;
     document.onmousemove = null;
    }
    document.onmousedown = down;
    document.onmouseup = up;
   }
  )();
 }
 -->
 </script>
</head>
<body>
<div class="dragclass" id="main" style="LEFT: 588px; TOP: 298px">
<div id="ChatHead"><a onclick="ChatHidden();" href="#">-</a>
<a onclick="ChatShow();" href="#">+</a>
<a onclick="ChatClose();" href="#">x</a> </div>
<div id="ChatBody">
<div id="ChatContent">HI! Hello ! Welcome to 3water.com</div>
<div id="ChatBtn">
<form action="" method="post" name="chat">
</form>
</div>
</div>
</div>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
基于jQuery的360图片展示实现代码
Jun 14 Javascript
一个JS函数搞定网页标题(title)闪动效果
May 13 Javascript
jQuery事件用法实例汇总
Aug 29 Javascript
jQuery向后台传入json格式数据的方法
Feb 13 Javascript
js实现横向伸展开的二级导航菜单代码
Aug 28 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
Oct 29 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
Sep 16 Javascript
简单三步实现报表页面集成天气
Dec 15 Javascript
js实现百度搜索提示框
Feb 05 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
Apr 03 jQuery
webpack构建react多页面应用详解
Sep 15 Javascript
JavaScript实现轮播图效果
Oct 30 Javascript
Javascript中typeof 用法小结
May 12 #Javascript
js/jquery判断浏览器类型的方法小结
May 12 #Javascript
js实现div层缓慢收缩与展开的方法
May 11 #Javascript
JS实现定时自动关闭DIV层提示框的方法
May 11 #Javascript
最精简的JavaScript实现鼠标拖动效果的方法
May 11 #Javascript
JavaScript实现表格点击排序的方法
May 11 #Javascript
JavaScript点击按钮后弹出透明浮动层的方法
May 11 #Javascript
You might like
十天学会php之第十天
2006/10/09 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
Python最长公共子串算法实例
2015/03/07 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
Python的条件锁与事件共享详解
2019/09/12 Python
Django学习之文件上传与下载
2019/10/06 Python
毕业自我鉴定范文
2013/11/06 职场文书
生日邀请函范文
2014/01/13 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
公司委托书怎么写
2014/08/02 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
入团申请书格式
2019/06/20 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL