JS控制弹出悬浮窗口(一览画面)的实例代码


Posted in Javascript onMay 30, 2016

在web项目开发中经常遇到在一览画面中用户需要查看某一条记录的详细信息。如果用迁移画面的方式处理,速度会比较慢,而且用户体验不是太好。如果采用点击该条记录的详细链接时弹出一个层显示在当前画面的话,处理速度很快,而且用户感觉也比较新颖。下面我以某个对日电子商务网站为实例说明下它的实现方式。

1、jsp页面上弹出层的代码

<!-- 物流详情弹出页面 start --> 
<s:iterator value="lrVo" var="lrVo" id="lrVo" status="st"> 
<div class="logisticscenter_xq" style="display: none;" id='<s:property value="#lrVo.logisticNO"/>'> 
<dl> 
<dt><strong><s:text name="struts.webui.logistics.label.logisticsDetails"/>:</strong></dt> 
<dd><strong class="close_wind">X</strong></dd> 
</dl> 
<div class="information logistics_win"> 
<table width="" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td class="r_text"><span class="icon9">*</span><s:text name="struts.webui.logistics.label.logisticsNumber"/>:</td> 
<td></td> 
<td colspan="3" id="logisticNo"><s:property value="#lrVo.logisticNO"/></td> 
</tr> 
<tr> 
<td valign="top" class="r_text"><span class="icon9">*</span><s:text name="struts.webui.logistics.label.distribution"/>:</td> 
<td></td> 
<td colspan="3" style="text-align:left" id="content"><s:property value="#lrVo.content" escape="false"/></td> 
</tr> 
</table> 
</div> 
</div> 
</s:iterator> 
<!--物流详情弹出窗口 end-->

层样式代码:

.logisticscenter_xq{ 
position: absolute; 
width:710px; 
border:solid 2px #787878; 
background: #edfcfe; 
z-index: 2; 
}

我的处理时将弹出层放置到整个网站页面的layout.jsp,网站中所有页面的布局都继承它。该网站采用tiles框架统一对页面布局。

2、计算对象居中要设置的left值和top值

我把这一步要完成的功能写成一个js文件,主要是根据用户在一览页面上鼠标点击的坐标位置,动态地显示该条记录的层窗口。主要代码如下:

// 计算对象居中需要设置的left和top值 
// 参数: 
// _w - 对象的宽度 
// _h - 对象的高度 
function getLT(_w,_h) 
{ 
var de = document.documentElement; 
// 获取当前浏览器窗口的宽度和高度 
// 兼容写法,可兼容ie,ff 
var w = self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth; 
var h = (de&&de.clientHeight) || document.body.clientHeight; 
// 获取当前滚动条的位置 
// 兼容写法,可兼容ie,ff 
var st= (de&&de.scrollTop) || document.body.scrollTop; 
var topp=0; 
if(h>_h) 
topp=(st+(h - _h)/2); 
else 
topp=st; 
var leftp = 0; 
if(w>_w) 
leftp = ((w - _w)/2); 
// 左侧距,顶部距 
return [leftp,topp]; 
} 
//获取鼠标位置GetPostion 
function GetPostion(e) { 
var x = getX(e); 
var y = getY(e); 
} 
function getX(e) { 
e = e || window.event; 
return e.pageX || e.clientX + document.body.scrollLeft - document.body.clientLeft 
} 
function getY(e) { 
e = e|| window.event; 
return e.pageY || e.clientY + document.body.scrollTop - document.body.clientTop 
} 
//判断浏览器类型 
function getOs() 
{ 
var OsObject = ""; 
if(navigator.userAgent.indexOf("MSIE")>0) { 
return "MSIE"; 
} 
if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){ 
return "Firefox"; 
} 
if(isSafari=navigator.userAgent.indexOf("Safari")>0) { 
return "Safari"; 
} 
if(isCamino=navigator.userAgent.indexOf("Camino")>0){ 
return "Camino"; 
} 
if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0){ 
return "Gecko"; 
} 
}

将该js包含到主调用的一览jsp文件中。

<script language="javascript" type="text/javascript" src="<s:url value="/js/aligncenter.js"/>"></script>

3、一览jsp中的调用方法

<a class="view_button" onclick="viewLogistics(event,'<s:property value="#lrVo.logisticNO"/>')" href="####"><s:text name="struts.webui.logistics.label.view"/></a>

用户点击该行记录的详情链接时调用显示层的方法,同时将该记录的id值传给调用方法。其实,每一个层就是用这条记录的一个id属性值进行区分的。

function viewLogistics(event,logisticNO){ 
var os = getOs(); 
var y = getY(event); 
if(os=='MSIE'){ 
y=window.event.y+405; 
} 
$(".logisticscenter_xq").hide(); 
$("#"+logisticNO).show(); 
$("#"+logisticNO).css("top",y+15); 
}

至于方法中event参数的作用,还不是太清楚,这点需要再调查一下。最终效果如下图,随着鼠标下移,层能够动态的移动。

JS控制弹出悬浮窗口(一览画面)的实例代码

以上所述是小编给大家介绍的JS控制弹出悬浮窗口(一览画面)的实例代码,希望对大家有所帮助,如果大家想了解更多资讯请关注三水点靠木网站!

Javascript 相关文章推荐
setAttribute 与 class冲突解决
Feb 17 Javascript
Select标签下拉列表二级联动级联实例代码
Feb 07 Javascript
js如何调用qq互联api实现第三方登录
Mar 28 Javascript
举例讲解Node.js中的Writable对象
Jul 29 Javascript
基于JS实现简单的样式切换效果代码
Sep 04 Javascript
JS实现仿新浪黄色经典滑动门效果代码
Sep 27 Javascript
javascript作用域链(Scope Chain)用法实例解析
Nov 30 Javascript
bootstrap网页框架的使用方法
May 10 Javascript
JS中使用正则表达式g模式和非g模式的区别
Apr 01 Javascript
vue弹窗消息组件的使用方法
Sep 24 Javascript
layui 对弹窗 form表单赋值的实现方法
Sep 04 Javascript
JavaScript键盘事件响应顺序详解
Sep 30 Javascript
限制复选框最多选择项的实现代码
May 30 #Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
May 30 #Javascript
JS组件Bootstrap Table使用实例分享
May 30 #Javascript
Bootstrap table分页问题汇总
May 30 #Javascript
浅析Javascript中bind()方法的使用与实现
May 30 #Javascript
Bootstrap Paginator分页插件使用方法详解
May 30 #Javascript
深入理解JavaScript中的call、apply、bind方法的区别
May 30 #Javascript
You might like
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
PHP 文件编程综合案例-文件上传的实现
2013/07/03 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
PHP版微信公众平台红包API
2015/04/02 PHP
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
判断访客终端类型集锦
2015/06/05 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
2018/04/21 Javascript
js常见遍历操作小结
2019/06/06 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
[00:53]TI3正赛第三天 DK怒破A队不败金身 现场国旗飘扬热血激昂
2013/08/10 DOTA
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
17个Python小技巧分享
2015/01/23 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
django做form表单的数据验证过程详解
2019/07/26 Python
关于Keras Dense层整理
2020/05/21 Python
如何用python批量调整视频声音
2020/12/22 Python
canvas进阶之如何画出平滑的曲线
2018/10/15 HTML / CSS
毕业自荐信
2013/12/16 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
导游词之西安骊山
2019/12/03 职场文书
Python中json.dumps()函数的使用解析
2021/05/17 Python