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 相关文章推荐
JS实现网页Div层Clone拖拽效果
Sep 26 Javascript
FullCalendar日历插件应用之数据展现(一)
Dec 23 Javascript
AngularJs实现分页功能不带省略号的代码
May 30 Javascript
浅谈bootstrap源码分析之tab(选项卡)
Jun 06 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
Jul 09 Javascript
Vue.js计算属性computed与watch(5)
Dec 09 Javascript
浅谈HTTP 缓存的那些事儿
Oct 17 Javascript
详解Vue2.0组件的继承与扩展
Nov 23 Javascript
详解element-ui中form验证杂记
Mar 04 Javascript
优雅地使用loading(推荐)
Apr 20 Javascript
用Vue编写抽象组件的方法
May 06 Javascript
浅谈Vue 函数式组件的使用技巧
Jun 16 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汉字转拼音的示例
2014/02/27 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
filemanage功能中用到的common.js
2007/04/08 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
python连接sql server乱码的解决方法
2013/01/28 Python
使用Python的PEAK来适配协议的教程
2015/04/14 Python
Django实现的自定义访问日志模块示例
2017/06/23 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
python 字典item与iteritems的区别详解
2020/04/25 Python
银行存款证明样本
2014/01/17 职场文书
主管竞聘书范文
2014/03/31 职场文书
教师师德演讲稿
2014/05/06 职场文书
法人单位适用的授权委托书
2014/09/19 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
护士长2014年度工作总结
2014/11/11 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
2015年秋季小班开学寄语
2015/05/27 职场文书
Redis 限流器
2022/05/15 Redis