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 checkbox,radio是否选中的判断代码
Mar 20 Javascript
juqery 学习之六 CSS--css、位置、宽高
Feb 11 Javascript
一个简单的JS鼠标悬停特效具体方法
Jun 17 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
Jun 27 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
Jul 08 Javascript
js简单实现根据身份证号码识别性别年龄生日
Nov 29 Javascript
jquery中animate的stop()方法作用实例分析
Jan 30 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
Jul 14 Javascript
vue组件间通信解析
Mar 01 Javascript
VUE中v-model和v-for指令详解
Jun 23 Javascript
vue使用axios跨域请求数据问题详解
Oct 18 Javascript
Vue按需加载的具体实现
Dec 02 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 和 XML: 使用expat函数(二)
2006/10/09 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
javascript 页面只自动刷新一次
2009/07/10 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
基于nodejs+express(4.x+)实现文件上传功能
2015/11/23 NodeJs
javascript实现二叉树的代码
2017/06/08 Javascript
js指定步长实现单方向匀速运动
2017/07/17 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
由浅入深讲解python中的yield与generator
2017/04/05 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
python绘制直线的方法
2018/06/30 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
使用Django简单编写一个XSS平台的方法步骤
2019/03/25 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
Python数组并集交集补集代码实例
2020/02/18 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
基于Python把网站域名解析成ip地址
2020/05/25 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
CSS3中Transform动画属性用法详解
2016/07/04 HTML / CSS
Champion官网:美国冠军运动服装
2017/01/25 全球购物
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
北京银河万佳Java面试题
2012/03/21 面试题
母婴店促销方案
2014/03/05 职场文书
风险评估实施方案
2014/03/09 职场文书
处级干部考察材料
2014/12/24 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
Golang 正则匹配效率详解
2021/04/25 Golang
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers