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时间选择器 兼容IE6,7,8,9
Jun 26 Javascript
实现动画效果核心方式的js代码
Sep 27 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
Jun 21 Javascript
js数组操作方法总结(必看篇)
Nov 22 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
Dec 20 Javascript
jQuery实现的滑块滑动导航效果示例
Jun 04 jQuery
理理Vue细节(推荐)
Apr 16 Javascript
Vue SPA 初次进入加载动画实现代码
Nov 14 Javascript
Vue的双向数据绑定实现原理解析
Feb 17 Javascript
vue+canvas实现移动端手写签名
May 21 Javascript
vue实现图片上传功能
May 28 Javascript
处理JavaScript值为undefined的7个小技巧
Jul 28 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&amp;java(三)
2006/10/09 PHP
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
PHP 第二节 数据类型之数值型
2012/04/28 PHP
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
python列表操作使用示例分享
2014/02/21 Python
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
python实现键盘输入的实操方法
2019/07/16 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
中专毕业个人的自荐信格式
2013/09/21 职场文书
门前三包责任书
2014/04/15 职场文书
工伤赔偿协议书
2014/04/15 职场文书
奥巴马获胜演讲稿
2014/05/15 职场文书
学校推普周活动总结
2015/05/07 职场文书
关于分班的感言
2015/08/04 职场文书