<head>
<title>Js弹出浮动窗口,支持鼠标拖动和关闭</title>
<meta http-equiv="Content-Type" content="text/html charset=utf-8" />
<script type="text/javascript">
/**
关于一些参数说明:
*bodycontent:要在窗口显示的内容,dom对象
*title:窗口标题,字符串类型
*removeable:窗口能否拖动,布尔类型
*注意:内容窗体的高度是height-30px,请计算好你要显示的内容的高度和宽度。弹出窗的id为"223238909",所以你的页面不要再取值为"223238909"的id了,以防js执行出错*/
function createdialog(width,height,bodycontent,title,removeable){
if(document.getElementById("www_phpstudy_net")==null){
/*创建窗口的组成元素*/
var dialog = document.createElement("div")
var dialogtitlebar= document.createElement("div")
var dialogbody = document.createElement("div")
var dialogtitleimg = document.createElement("span")
var dialogtitle = document.createElement("span")
var dialogclose = document.createElement("span")
var closeaction = document.createElement("button")
/*为窗口设置一个id,id如此怪异是为了尽量避免与其他用户取的id相同而出错*/
dialog.id = "223238909"
/*组装对话框标题栏,按从里到外的顺序组装*/
dialogtitle.innerHTML = title
dialogtitlebar.appendChild(dialogtitleimg)
dialogtitlebar.appendChild(dialogtitle)
dialogtitlebar.appendChild(dialogclose)
dialogclose.appendChild(closeaction)
/*组装对话框主体内容*/
if(bodycontent!=null){
bodycontent.style.display = "block"
dialogbody.appendChild(bodycontent)
}
/*组装成完整的对话框*/
dialog.appendChild(dialogtitlebar)
dialog.appendChild(dialogbody)
/*设置窗口组成元素的样式*/
var templeft,temptop,tempheight//窗口的位置(将窗口放在页面中间的辅助变量)
var dialogcssText,dialogbodycssText//拼出dialog和dialogbody的样式字符串
templeft = (document.body.clientWidth-width)/2
temptop = (document.body.clientHeight-height)/2
tempheight= height-30
dialogcssText= "position:absolutebackground:#65c294padding:1pxborder:4pxtop:"+temptop+"pxleft:"+templeft+"pxheight:"+height+"pxwidth:"+width+"px"
dialogbodycssText = "width:100%background:#ffffff"+"height:" + tempheight + "px"
dialog.style.cssText = dialogcssText
dialogtitlebar.style.cssText = "height:30pxwidth:100%background:url(images/titlebar.png) repeatcursor:move"
dialogbody.style.cssText = dialogbodycssText
dialogtitleimg.style.cssText = "float:leftheight:20pxwidth:20pxbackground:url(images/40.gif)"+"display:blockmargin:4pxline-height:20px"
dialogtitle.style.cssText = "font-size:16pxfloat:leftdisplay:blockmargin:4pxline-height:20px"
dialogclose.style.cssText = "float:rightdisplay:blockmargin:4pxline-height:20px"
closeaction.style.cssText = "height:20pxwidth:24pxborder-width:1px"+"background-image:url(images/close.png)cursor:pointer"
/*为窗口元素注册事件*/
var dialogleft = parseInt(dialog.style.left)
var dialogtop = parseInt(dialog.style.top)
var ismousedown = false//标志鼠标是否按下
/*关闭按钮的事件*/
closeaction.onclick = function(){
dialog.parentNode.removeChild(dialog)
}
/*实现窗口的移动,这段代码很典型,网上很多类似的代码*/
if(removeable == true){
var ismousedown = false
var dialogleft,dialogtop
var downX,downY
dialogleft = parseInt(dialog.style.left)
dialogtop = parseInt(dialog.style.top)
dialogtitlebar.onmousedown = function(e){
ismousedown = true
downX = e.clientX
downY = e.clientY
}
document.onmousemove = function(e){
if(ismousedown){
dialog.style.top = e.clientY - downY + dialogtop + "px"
dialog.style.left = e.clientX - downX + dialogleft + "px"
}
}
/*松开鼠标时要重新计算当前窗口的位置*/
document.onmouseup = function(){
dialogleft = parseInt(dialog.style.left)
dialogtop = parseInt(dialog.style.top)
ismousedown = false
}
}
return dialog
}//end if(if的结束)
}
</script>
<style>
table{background:#b2d235}
button{font-size:12pxheight:23background:#ece9d8border-width:1}
#linkurl,#linkname,#savelink{width:100px}
</style>
</head>
<body>
<!-- 显示窗口的地方 -->
<div id="here"></div><a id="clickhere" href="#">点击生成窗口</a>
<!-- 要嵌入到窗口的内容 -->
<div id="login" style="display:none">
<form action="#" method="post" onSubmit="return false">
<table width="400" height="95">
<tr>
<td width="78">链接文字</td>
<td width="168"><input name="link.name" type="text"/></td>
<td width="138" id="linktext"></td>
</tr>
<tr>
<td>链接地址</td>
<td><input name="link.url" type="text"/></td>
<td id="linkurl"></td>
</tr>
<tr>
<td></td>
<td><button type="submit" style="float:right">添加</button></td>
<td id="savelink"></td>
</tr>
</table>
</form>
</div>
<script type="text/javascript">
var here = document.getElementById("here")
var login = document.getElementById("login")
var clickhere = document.getElementById("clickhere")
clickhere.onclick = function(){
here.appendChild(createdialog(400,95+30,login,"欢迎光临phpstudy",true))
}
</script>
</body>
</html>
给你一段代码,创建了一个大小100*100的浮动窗口,贴着窗口的右边。<style type="text/css"> #my_dialog {position: fixed/*固定定位*/right: 0 top: 50%/*贴着右边,垂直位置50%*/height: 100px width: 100px/*尺寸 100 x 100*/transform: translate(0, -50%)/*通过位移,保证浮动窗口的垂直居中*/box-shadow: 0 0 3px 1px rgba(180, 180, 180, 0.5) background-color: white/*加些背景色和阴影,以便区分*/}</style>
<div id="my_dialog"> <!--窗口内容--></div>
jsp中:<body>
<div style="position: absolutez-index:90" id="div1">我不动</div>
<div>我动<div>
</body>
//有的将position设置成fixed,我试了试效果不如position好,设置z-index,向里的深度,我这儿设置90,你要覆盖几个div,设置数大于那个数就行。
js中:
我这儿用jquery写。
$(document).ready(function(){
$(window).scroll(function(){//滚动时触发函数
$("#div1").css("top",$(document).scrollTop())//将滚动条高度赋给悬浮框。
})
})
导入jquery库,效果就出来了。