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 相关文章推荐
判断页面是关闭还是刷新的js代码
Jan 28 Javascript
关于javascript 回调函数中变量作用域的讨论
Sep 11 Javascript
jQuery 使用手册(六)
Sep 23 Javascript
JavaScript 滚轮事件使用说明
Mar 07 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
Jul 27 Javascript
jquery移动端TAB触屏切换实现效果
Dec 22 Javascript
js实现密码强度检测【附示例】
Mar 30 Javascript
微信小程序 canvas API详解及实例代码
Oct 08 Javascript
Cookies 和 Session的详解及区别
Apr 21 Javascript
用react-redux实现react组件之间数据共享的方法
Jun 08 Javascript
微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解
Mar 28 Javascript
Vue filter 过滤当前时间 实现实时更新效果
Dec 20 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实现数组按指定KEY排序的方法
2015/03/30 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
使用javascript实现判断当前浏览器
2015/04/14 Javascript
JS中产生标识符方式的演变
2015/06/12 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
使用jquery实现仿百度自动补全特效
2015/07/23 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
2015年全民创业工作总结
2015/07/23 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
投资入股协议书
2016/03/22 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
html css3不拉伸图片显示效果
2021/06/07 HTML / CSS
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL
dubbo服务整合zipkin详解
2021/07/26 Java/Android
SQLServer中exists和except用法介绍
2021/12/04 SQL Server
用Python生成会跳舞的美女
2022/01/18 Python