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 异步处理进度条
Apr 01 Javascript
jquery利用event.which方法获取键盘输入值的代码
Oct 09 Javascript
让checkbox不选中即将选中的checkbox不选中
Jul 11 Javascript
javascript实现依次输入input自动定焦
Dec 23 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
Mar 03 Javascript
Express的路由详解
Dec 10 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
Jun 16 Javascript
jquery validate表单验证插件
Sep 06 Javascript
快速掌握jQuery插件WebUploader文件上传
Nov 07 Javascript
微信小程序实现点击返回顶层的方法
Jul 12 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
Dec 19 Javascript
Vue加载json文件的方法简单示例
Jan 28 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学习 计数器实例代码
2008/06/15 PHP
PHP伪静态页面函数附使用方法
2008/06/20 PHP
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
Python中文件操作简明介绍
2015/04/13 Python
python中import reload __import__的区别详解
2017/10/16 Python
python爬取指定微信公众号文章
2018/12/20 Python
python递归法解决棋盘分割问题
2019/07/17 Python
在python3.64中安装pyinstaller库的方法步骤
2020/06/02 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
30年同学聚会感言
2014/01/30 职场文书
优秀中学生事迹材料
2014/01/31 职场文书
员工考核管理制度
2014/02/02 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android