把原先的div display:none 该变让他显示或者直接写入个div 位置就是当前鼠标的位置 也可以 这个比较好用 。
你说的动态悬浮窗不知道说的是哪一种,姑且认为是浏览器网页打开之后跑来跑去的那种,只讲大概思路,代码你自己去敲哈,这样才能充分吸收回归正题,动态悬浮窗,可以拆开理解,一个是动、一个悬浮。
一、先讲悬浮这个概念,首先这个东西能够在浏览器窗口显示,能够飘来飘去还不影响网页里面其他内容的正常显示,那么怎么才能实现呢?没错,就是定位!那么又有个问题是用绝对定位还是固定定位?这个就看是想让这个小东西是在整个文档中飘还是浏览器的可视窗口飘了(正常情况下都是在浏览器可视窗口飘,即固定定位),至于为什么不是相对定位,请看w3c手册;
二、现在悬浮的问题解决了,就剩一个问题了那就是动动动动动动动起来,那么怎么才能让他动起来呢?这里就需要用到setInterval 、clientWidth和clientHeight;首先获取当前浏览器窗口的宽、高 即document.documentElement.clientWidth和document.documentElement.clientHeight,然后获取这个浮动小窗的初始位置,那么高潮部分来了,怎么才能动呢?不要急慢慢来。
初始盒子位置在左上角,然后判断如果盒子距离浏览器窗口右边距离大于0,那么向右移动y一步,同样距离浏览器窗口下边距离大于0那么向下移动一步,当盒子距离浏览器窗口右边距离等于0时像左移动一步,同样距离浏览器窗口下边距离等于0时向上移动一步,然后设置定时器,多久循环一次
以上就是动态悬浮窗的大概思路(卧槽,终于打完了手好累!!!)
<html><head>
<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">
<title>页面内的超级酷浮动窗口</title>
<style type='text/css'>
<!--
a:visited{text-decoration:nonecolor:slategray}
a:hover{text-decoration:underlinecolor:slategray}
a:link{text-decoration:nonecolor:slategray}
-->
</style>
<script language=JScript>
<!--
//可以打包为js文件
var x0=0,y0=0,x1=0,y1=0
var offx=6,offy=6
var moveable=false
var hover='orange',normal='slategray'//color
var index=10000//z-index
//开始拖动
function startDrag(obj)
{
if(event.button==1)
{
//锁定标题栏
obj.setCapture()
//定义对象
var win = obj.parentNode
var sha = win.nextSibling
//记录鼠标和层位置
x0 = event.clientX
y0 = event.clientY
x1 = parseInt(win.style.left)
y1 = parseInt(win.style.top)
//记录颜色
normal = obj.style.backgroundColor
//改变风格
obj.style.backgroundColor = hover
win.style.borderColor = hover
obj.nextSibling.style.color = hover
sha.style.left = x1 + offx
sha.style.top = y1 + offy
moveable = true
}
}
//拖动
function drag(obj)
{
if(moveable)
{
var win = obj.parentNode
var sha = win.nextSibling
win.style.left = x1 + event.clientX - x0
win.style.top = y1 + event.clientY - y0
sha.style.left = parseInt(win.style.left) + offx
sha.style.top = parseInt(win.style.top) + offy
}
}
//停止拖动
function stopDrag(obj)
{
if(moveable)
{
var win = obj.parentNode
var sha = win.nextSibling
var msg = obj.nextSibling
win.style.borderColor = normal
obj.style.backgroundColor = normal
msg.style.color = normal
sha.style.left = obj.parentNode.style.left
sha.style.top = obj.parentNode.style.top
obj.releaseCapture()
moveable = false
}
}
//获得焦点
function getFocus(obj)
{
if(obj.style.zIndex!=index)
{
index = index + 2
var idx = index
obj.style.zIndex=idx
obj.nextSibling.style.zIndex=idx-1
}
}
//最小化
function min(obj)
{
var win = obj.parentNode.parentNode
var sha = win.nextSibling
var tit = obj.parentNode
var msg = tit.nextSibling
var flg = msg.style.display=="none"
if(flg)
{
win.style.height = parseInt(msg.style.height) + parseInt(tit.style.height) + 2*2
sha.style.height = win.style.height
msg.style.display = "block"
obj.innerHTML = "0"
}
else
{
win.style.height = parseInt(tit.style.height) + 2*2
sha.style.height = win.style.height
obj.innerHTML = "2"
msg.style.display = "none"
}
}
//关闭
function cls(obj)
{
var win = obj.parentNode.parentNode
var sha = win.nextSibling
win.style.visibility = "hidden"
sha.style.visibility = "hidden"
}
//创建一个对象
function xWin(id,w,h,l,t,tit,msg)
{
index = index+2
this.id = id
this.width = w
this.height = h
this.left= l
this.top = t
this.zIndex = index
this.title = tit
this.message = msg
this.obj = null
this.bulid = bulid
this.bulid()
}
//初始化
function bulid()
{
var str = ""
+ "<div id=xMsg" + this.id + " "
+ "style='"
+ "z-index:" + this.zIndex + ""
+ "width:" + this.width + ""
+ "height:" + this.height + ""
+ "left:" + this.left + ""
+ "top:" + this.top + ""
+ "background-color:" + normal + ""
+ "color:" + normal + ""
+ "font-size:10px"
+ "font-family:Verdana"
+ "position:absolute"
+ "cursor:default"
+ "border:2px solid " + normal + ""
+ "' "
+ "onmousedown='getFocus(this)'>"
+ "<div "
+ "style='"
+ "background-color:" + normal + ""
+ "width:" + (this.width-2*2) + ""
+ "height:20"
+ "color:white"
+ "' "
+ "onmousedown='startDrag(this)' "
+ "onmouseup='stopDrag(this)' "
+ "onmousemove='drag(this)' "
+ "ondblclick='min(this.childNodes[1])'"
+ ">"
+ "<span style='width:" + (this.width-2*12-4) + "padding-left:3px'>" + this.title + "</span>"
+ "<span style='width:12border-width:0pxcolor:whitefont-family:webdings' onclick='min(this)'>0</span>"
+ "<span style='width:12border-width:0pxcolor:whitefont-family:webdings' onclick='cls(this)'>r</span>"
+ "</div>"
+ "<div style='"
+ "width:100%"
+ "height:" + (this.height-20-4) + ""
+ "background-color:white"
+ "line-height:14px"
+ "word-break:break-all"
+ "padding:3px"
+ "'>" + this.message + "</div>"
+ "</div>"
+ "<div style='"
+ "width:" + this.width + ""
+ "height:" + this.height + ""
+ "top:" + this.top + ""
+ "left:" + this.left + ""
+ "z-index:" + (this.zIndex-1) + ""
+ "position:absolute"
+ "background-color:black"
+ "filter:alpha(opacity=40)"
+ "'>by wildwind</div>"
document.body.insertAdjacentHTML("beforeEnd",str)
}
//-->
</script>
<script language='JScript'>
<!--
function initialize()
{
var a = new xWin("1",160,200,200,200,"Message","xWin <br>A Cool Pop Div Window<br>Version:1.0<br>2002-8-13")
var b = new xWin("2",240,200,100,100,"Wildwind's Msgbox","Welcome to visited my personal website:<br><a href=http://www14.brinkster.com/wildcity target=_blank>http://wildcity.126.com</a><br>and u can also sign my guestbook at:<br><a href=http://www14.brinkster.com/wildcity/gbook target=_blank>http://wildcity.126.com/gbook</a><br><br>thx!!! =)...")
var c = new xWin("3",200,160,250,50,"Copyright","Copyright by <a href='mailto:wildwind_zz@21cn.com'>Wildwind</a>!")
}
window.onload = initialize
//-->
</script>
</head>
<body onselectstart='return false' oncontextmenu='return false' scroll='no'>
</body>
</html>
或者
<html>
<head>
<title>用层模拟的小窗口(可拖动展合)</title>
<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">
<style type='text/css'>
<!--
body{font-size:12px}
a:visited{text-decoration:nonecolor:slategray}
a:hover{text-decoration:underlinecolor:slategray}
a:link{text-decoration:nonecolor:slategray}
-->
</style>
<script language=JScript>
<!--
//可以打包为js文件
var x0=0,y0=0,x1=0,y1=0
var offx=6,offy=6
var moveable=false
var hover='orange',normal='#336699'//color
var index=10000//z-index
//开始拖动
function startDrag(obj)
{
if(event.button==1)
{
//锁定标题栏
obj.setCapture()
//定义对象
var win = obj.parentNode
var sha = win.nextSibling
//记录鼠标和层位置
x0 = event.clientX
y0 = event.clientY
x1 = parseInt(win.style.left)
y1 = parseInt(win.style.top)
//记录颜色
normal = obj.style.backgroundColor
//改变风格
obj.style.backgroundColor = hover
win.style.borderColor = hover
obj.nextSibling.style.color = hover
sha.style.left = x1 + offx
sha.style.top = y1 + offy
moveable = true
}
}
//拖动
function drag(obj)
{
if(moveable)
{
var win = obj.parentNode
var sha = win.nextSibling
win.style.left = x1 + event.clientX - x0
win.style.top = y1 + event.clientY - y0
sha.style.left = parseInt(win.style.left) + offx
sha.style.top = parseInt(win.style.top) + offy
}
}
//停止拖动
function stopDrag(obj)
{
if(moveable)
{
var win = obj.parentNode
var sha = win.nextSibling
var msg = obj.nextSibling
win.style.borderColor = normal
obj.style.backgroundColor = normal
msg.style.color = normal
sha.style.left = obj.parentNode.style.left
sha.style.top = obj.parentNode.style.top
obj.releaseCapture()
moveable = false
}
}
//获得焦点
function getFocus(obj)
{
if(obj.style.zIndex!=index)
{
index = index + 2
var idx = index
obj.style.zIndex=idx
obj.nextSibling.style.zIndex=idx-1
}
}
//最小化
function min(obj)
{
var win = obj.parentNode.parentNode
var sha = win.nextSibling
var tit = obj.parentNode
var msg = tit.nextSibling
var flg = msg.style.display=="none"
if(flg)
{
win.style.height = parseInt(msg.style.height) + parseInt(tit.style.height) + 2*2
sha.style.height = win.style.height
msg.style.display = "block"
obj.innerHTML = "0"
}
else
{
win.style.height = parseInt(tit.style.height) + 2*2
sha.style.height = win.style.height
obj.innerHTML = "2"
msg.style.display = "none"
}
}
//创建一个对象
function xWin(id,w,h,l,t,tit,msg)
{
index = index+2
this.id = id
this.width = w
this.height = h
this.left= l
this.top = t
this.zIndex = index
this.title = tit
this.message = msg
this.obj = null
this.bulid = bulid
this.bulid()
}
//初始化
function bulid()
{
var str = ""
+ "<div id=xMsg" + this.id + " "
+ "style='"
+ "z-index:" + this.zIndex + ""
+ "width:" + this.width + ""
+ "height:" + this.height + ""
+ "left:" + this.left + ""
+ "top:" + this.top + ""
+ "background-color:" + normal + ""
+ "color:" + normal + ""
+ "font-size:8pt"
+ "font-family:Tahoma"
+ "position:absolute"
+ "cursor:default"
+ "border:2px solid " + normal + ""
+ "' "
+ "onmousedown='getFocus(this)'>"
+ "<div "
+ "style='"
+ "background-color:" + normal + ""
+ "width:" + (this.width-2*2) + ""
+ "height:20"
+ "color:white"
+ "' "
+ "onmousedown='startDrag(this)' "
+ "onmouseup='stopDrag(this)' "
+ "onmousemove='drag(this)' "
+ "ondblclick='min(this.childNodes[1])'"
+ ">"
+ "<span style='width:" + (this.width-2*12-4) + "padding-left:3px'>" + this.title + "</span>"
+ "<span style='width:12border-width:0pxcolor:whitefont-family:webdings' onclick='min(this)'>0</span>"
+ "<span style='width:12border-width:0pxcolor:whitefont-family:webdings' onclick='ShowHide(\""+this.id+"\",null)'>r</span>"
+ "</div>"
+ "<div style='"
+ "width:100%"
+ "height:" + (this.height-20-4) + ""
+ "background-color:white"
+ "line-height:14px"
+ "word-break:break-all"
+ "padding:3px"
+ "'>" + this.message + "</div>"
+ "</div>"
+ "<div id=xMsg" + this.id + "bg style='"
+ "width:" + this.width + ""
+ "height:" + this.height + ""
+ "top:" + this.top + ""
+ "left:" + this.left + ""
+ "z-index:" + (this.zIndex-1) + ""
+ "position:absolute"
+ "background-color:black"
+ "filter:alpha(opacity=40)"
+ "'></div>"
document.body.insertAdjacentHTML("beforeEnd",str)
}
//显示隐藏窗口
function ShowHide(id,dis){
var bdisplay = (dis==null)?((document.getElementById("xMsg"+id).style.display=="")?"none":""):dis
document.getElementById("xMsg"+id).style.display = bdisplay
document.getElementById("xMsg"+id+"bg").style.display = bdisplay
}
//modify by haiwa @ 2005-7-14
//
//-->
</script>
<script language='JScript'>
<!--
function initialize()
{
var a = new xWin("1",160,200,200,200,"窗口1","xWin <br>A Cool Pop Div Window<br>Version:1.0<br>2002-8-13")
ShowHide("1","none")//隐藏窗口1
}
window.onload = initialize
//-->
</script>
</head>
<base target="_blank">
<body onselectstart='return false' oncontextmenu='return false' >
<a onclick="ShowHide('1',null)return false" href="">窗口1</a>
</body>
</html>