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 ajax 检测用户注册时用户名是否存在
Nov 03 Javascript
一些经常会用到的Javascript检测函数
May 31 Javascript
jQuery中jqGrid分页实现代码
Nov 04 Javascript
Javascript Throttle &amp; Debounce应用介绍
Mar 19 Javascript
推荐9款炫酷的基于jquery的页面特效
Dec 07 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
Jan 24 Javascript
Vue.js中的computed工作原理
Mar 22 Javascript
一篇文章,教你学会Vue CLI 插件开发
Apr 17 Javascript
JS实现的贪吃蛇游戏案例详解
May 01 Javascript
vue 实现微信浮标效果
Sep 01 Javascript
mpvue微信小程序开发之实现一个弹幕评论
Nov 24 Javascript
python虚拟环境 virtualenv的简单使用
Jan 21 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将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
xmlHTTP实例
2006/10/24 Javascript
Document 对象的常用方法
2009/07/31 Javascript
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
原生js+css实现tab切换功能
2020/09/17 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
[03:49]DOTA2英雄基础教程 光之守卫
2014/01/14 DOTA
Python编程之序列操作实例详解
2017/07/22 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
python三引号如何输入
2020/07/06 Python
python 5个实用的技巧
2020/09/27 Python
html5 分层屏幕适配的方法
2018/03/16 HTML / CSS
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
综合办公室主任职责
2013/12/16 职场文书
业务总经理岗位职责
2014/02/03 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
2016年心理学教育培训学习心得体会
2016/01/12 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python
关于python中模块和重载的问题
2021/11/02 Python
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers