javascript如何实现弹出浮动窗口

JavaScript014

javascript如何实现弹出浮动窗口,第1张

<html>

<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库,效果就出来了。