如何在一堆框架(Frame)上弹出div层【转载】

框架Frame,不知道现在还有多少人会用,至少我学用html到现在,只是知道有这种东西存在,却没见到也没用到过。上周终于碰到个机会让我一窥框架是个啥东西,然后由于项目的需要,我得做个div层置于所有的框架之上,做成下拉菜单的效果。折腾了一下,就记在这里吧。

第一个DEMO展示的是框架,点击这里查看

用框架来布局这种后台管理类的界面,结构上非常清晰,维护上也应该比较方便,因为每个框架里展示的页面是独立的。但是在一堆framesetframe上要浮动起一个div层来,我试了一下,基本上行不通。当然,这应该是我水平不够,听凯尔同学说是有办法的,具体我没过问。

那么我把文章标题定成这个,太不负责任了?呵呵,其实我的解决方法是变通一下。既然用framesetframe搞不定,为什么不用和它们相似的iframe元素来变通一下解决问题呢?我用的就是iframe法。

第二个DEMO展示一个弹出菜单,点击顶部导航中的最后一项“后台导航”即可看到弹出菜单,点击这里查看

大家应该知道,无论是frame还是iframe中,载入的都是另外一个页面,那么在载入的子页面中弹出的层是无论如何都不可能覆盖到其父元素(iframe)之上的。不过我们需要做的就是欺骗一下用户的眼睛。所以那个弹出层其实是在另外一个iframe中,它属于父iframe所在的那个网页。这样来描述可能有点晕,下面用一张图来说明一下。

图中黑色半透明区域示意的是整个网页结构,在浏览器中载入的话,就是index.html。然后这个页面里有三个iframe,上面的一个载入index_top.html,左边载入的是index_menu.html,右边载入的是index_body.html。代码如下:

?


1

2

3

4

5

6

7

<div id="top" style="z-index:1">

        <iframe src="index_top.html" scrolling="no" height="63" width="100%" frameborder="0"></iframe>

</div>

<div id="bottom" style="z-index:1">

    <iframe id="left_menu" src="index_menu.html" scrolling="no" width="176" frameborder="0"></iframe>

    <iframe id="right_body" src="index_body.html" scrolling="auto" frameborder="0"></iframe>

</div>

这里用行内样式来指定z-index的值,是为了方便弹出的层。本来应该是在index_top.html中,点击一下按钮就弹出一个层的,但是弹出层不会跑出外部的iframe,所以肯定不能这样。因此我在index.html里面新增加了一个diviframe,让弹出的层显示在div#topdiv#bottom之上,再让index_top.html里点击的动作触发一下index.html里面的js函数,以达到弹出的效果。代码如下:

?


1

2

3

4

5

6

7

8

9

10

<div id="popupmenu">

    <iframe allowtransparency="true" src="index_show.html" scrolling="auto" width="100%" height="100%" frameborder="0"></iframe>

</div>

<div id="top" style="z-index:1">

    <iframe src="index_top.html" scrolling="no" height="63" width="100%" frameborder="0"></iframe>

</div>

<div id="bottom" style="z-index:1">

    <iframe id="left_menu" src="index_menu.html" scrolling="no" width="176" frameborder="0"></iframe>

    <iframe id="right_body" src="index_body.html" scrolling="auto" frameborder="0"></iframe>

</div>

初始状态肯定不能让弹层显示,所以用css控制显示为不可见,display:none。另外请注意div#popupmenu里面那个iframe行内的allowtransparency属性,没有它,IE6下弹出层背景不是透明的。之后再写一个简单的js函数,让点击的时候切换一下display的值。代码如下

?


1

2

3

4

5

6

function showPop(){

    document.getElementById("popupmenu").style.display = ‘block‘;

}

function closePop(){

    document.getElementById("popupmenu").style.display = ‘none‘;

}

最后就是把这个函数绑定到按钮上了,代码如下:

?


1

<a href="#" onclick="parent.window.showPop();return false;">后台导航</a>

上面代码包含了子iframe中调用父文档中javascript的方法。虽然我推荐使用分离式的html和javascript,不过这里只是举个例子,所以使用的是行内的动作绑定。

后来我看了几个网站的这种界面,比如QQ邮箱、网易邮箱、WordPress后台管理页面,有的是用div模拟的框架(WP后台),有的也是iframe(QQ邮箱),也有用table来模拟的(网易邮箱),而不是framesetframe,不过随便怎么样解决都行,结构清晰,便于维护就是好代码。

最后留下的问题就是,我的解决方法在Linux下的Chrome dev版本中无效(其他没测),残念……

时间: 2025-01-04 03:01:05

如何在一堆框架(Frame)上弹出div层【转载】的相关文章

工作当中实际运用(3)——js原生实现鼠标点击弹出div层 在点击隐藏

function onmou(){ var divs=document.getElementById('kefuDV');//获取到你要操作的div if (divs.style.display=="none") {//下面就简单了 不一一赘述了 divs.style.display="block" }else{ divs.style.display="none" } } js原生代码实现 鼠标点击 弹出 隐藏 div隐藏

[转]【C#】分享一个弹出浮动层,像右键菜单那样召即来挥则去

适用于:.net2.0+ Winform项目 背景: 有时候我们需要开一个简单的窗口来做一些事,例如输入一些东西.点选一个item之类的,可能像这样: 完了返回原窗体并获取刚刚的输入,这样做并没有什么问题,但在几天前我突然产生了一些想法:为什么非得有板有眼的弹出一个窗体给用户呢,是不是可以在按钮附近迅速呈现一个层来做这些事呢,类似快捷菜单那样,用户高兴就在里面做一下该做的事,不高兴就在其它地方点一下它就消失,本来很轻便快捷的操作,DUANG~弹出一个窗体来会不会令用户心里咯噔一下呢,感受层面的事

[Phonegap+Sencha Touch] 移动开发19 某些安卓手机上弹出消息框 点击后不消失的解决办法

Ext.Msg.alert等弹出框在某些安卓手机上,点击确定后不消失. 原因是: 消息框点击确定后有一段css3 transform动画,动画完成后才会隐藏(display:none).有些奇葩手机就是不一样. 解决办法就是禁用消息框的动画: 方法一: 在app.js的launch方法里面加上 Ext.Msg.defaultAllowedConfig.showAnimation = false Ext.Msg.defaultAllowedConfig.hideAnimation = false

window.confirm()方法,效果是在页面上弹出对话框

window.confirm()方法是有返回值的,返回值为true,false两种情况 window.confirm()方法在页面上显示带确定"和"取消"按钮的提示信息,当点"确定"的时候,返回值为true;当点"取消"按钮的时候,返回值为false. window.confirm()方法,效果是在页面上弹出对话框

鼠标悬浮在超链接上弹出提示框

鼠标悬浮在超链接上弹出提示框:大家知道超链接有一个title属性,当鼠标放在链接的时候,可以出现一个提示框效果,不过自带的效果虽然廉价但往往并不物美,所以需要自定义一个,下面是一个纯CSS实现的这样的效果,和大家分享一下.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="h

使用设置自定义对话框的大小,位置,样式以及设置在安卓桌面上弹出对话框

第一步:创建对话框 MyDialog mydlg=new MyDialog(context); 第二步:获取对话框的window实例,通过window实例来控制对话框出现的位置,大小和弹出时候的场景 Window dlgwindow=mydly.getWindow(); 设置对话框最终显示位置 dlgWindow.setGravity(Gravity.TOP); 参数可以是Gravity.TOP(顶部),Gravity.BUTTON(底部),Gravity.LEFT(左边),Gravity.RI

网页上弹出pop窗口实例,(document).height()与$(window).height()的区别

#dvbg{background-color:#666666; position:absolute; z-index:99; left:0; top:0; display:none; width:100%; height:1000px;opacity:0.5;filter: alpha(opacity=50);-moz-opacity: 0.5;}        #dvpop{position:absolute;display:none;width:auto; height:auto; z-in

JavaScript总结之单击弹出div

今天也算用了不少手段来实现他们的要求,大概记录一下,下边的代码示例,我全部修改贴出来,争取全部占到自己的代码里就能用. 1.点击同一个div,打开/关闭另一个div. 1 1 <script type="text/javascript" src="jquery-1.11.1.min.js"></script> 2 2 <script type="text/javascript"> 3 3 /*var btnSh

创建一个弹出DIV窗口

创建一个弹出DIV窗口 摘自:   http://www.cnblogs.com/TivonStone/archive/2012/03/20/2407919.html 创建一个弹出DIV窗口可能是现在网站/网页制作中最常碰到的问题之一.传统的 JavaScript弹窗已经不适合目前网站的设计理念了,理由有二:首先,不友好——生硬的弹出对话框且伴随着“哐”的一声对用户体验是个很大的挑战: 其次,兼容性不够强——有相当多的浏览器屏蔽了这种JS的Alert()方法.于是,一个良好用户体验的网站需要一种