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 相关文章推荐
javascript 出生日期和身份证判断大全
Nov 13 Javascript
JS JSON对象转为字符串的简单实现方法
Nov 18 Javascript
JSON中双引号的轮回使用过程中一定要小心
Mar 05 Javascript
javascript返回顶部的按钮实现方法
Jan 09 Javascript
Avalonjs 实现简单购物车功能(实例代码)
Feb 07 Javascript
详解AngularJS跨页面传值(ui-router)
Aug 23 Javascript
echarts学习笔记之箱线图的分析与绘制详解
Nov 22 Javascript
深入理解 Koa 框架中间件原理
Oct 18 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
Sep 28 Javascript
es6数组的flat(),flatMap()函数用法实例分析
Apr 18 Javascript
vuex中store存储store.commit和store.dispatch的用法
Jul 24 Javascript
微信小程序实现选项卡滑动切换
Oct 22 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
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
php自动载入类用法实例分析
2016/06/24 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
jQuery toggle()设置CSS样式
2009/11/05 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
JavaScript实现x秒后自动跳转到一个页面
2013/01/03 Javascript
javascript事件冒泡和事件捕获详解
2015/05/26 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
python 中文字符串的处理实现代码
2009/10/25 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
浅谈Python中range和xrange的区别
2017/12/20 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
Django的models中on_delete参数详解
2019/07/16 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
CSS3实现大小不一的粒子旋转加载动画
2016/04/21 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
联强国际笔试题面试题
2013/07/10 面试题
编程输出如下图形
2013/11/24 面试题
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
汽车专业人才自我鉴定范文
2013/12/29 职场文书
应届毕业生个人求职自荐信
2014/01/06 职场文书
自荐信的格式
2014/03/10 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL
python保存图片的四个常用方法
2022/02/28 Python