首页 | 站长免费中心 | 新手上路 | 网站运营 | 网页制作 | 图片设计 | 动画设计 | 网页编程 | 网页特效 | 本站专题 | 虚拟主机 | 域名注册 | 网站建设 | 程序下载
       免费空间资源 | 新闻咨询 | 免费域名 | 免费网盘 | 网站推广 | 网站策划 | 建站经验 | 网站优化 | 网页代码 | 源码下载 | 音乐小偷 | 网络赚钱 | 论坛交流
网站建设
网站建设
虚拟主机
虚拟主机
域名注册
域名注册
711网络首页
站长工具
站长工具
网站源码
网站源码
站长论坛
站长论坛

 711网络 网页制作HTML/Xhtml

解决弹出层被Flash及select挡住的问题

来源: 互联网    日期:2011-9-17
 

Tc711Com提示:网页弹出的层被Flash 或Select 下拉列表阻挡的解决方法.    

网页弹出的层被Flash 或Select 下拉列表阻挡的解决方法!
今天在做网页的时候,我想在flash上放一个层,然后放图片等内容,可是总是被flash遮挡,因此总结了一下
对于这方面的问题的几个解决方法,希望可以对朋友和自己有帮助!


1.flash把层遮挡住了,如何处理呢?
============================================================在Flash里面加两个参数:
<param value="transparent">
<param value="Opaque">

说明:
<param value="transparent"> FLASH将透明
<param value="Opaque"> FLASH仍将保持不透明

并且还要在最后<embed 里加上 wmode="transparent" 这个特别重要,作用是保持flash在火狐下也正常。

Flash的例子:




          <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="605" height="167">            <param name="movie" value="a.swf" />   <PARAM NAME="FlashVars" VALUE="">   <PARAM NAME="WMode" VALUE="Transparent">   <PARAM NAME="Play" VALUE="-1">   <PARAM NAME="Loop" VALUE="-1">   <PARAM NAME="Quality" VALUE="High">   <PARAM NAME="SAlign" VALUE="">   <PARAM NAME="Menu" VALUE="-1"><PARAM NAME="Base" VALUE="">   <PARAM NAME="AllowScriptAccess" VALUE="always">   <PARAM NAME="Scale" VALUE="ShowAll">   <PARAM NAME="DeviceFont" VALUE="0">   <PARAM NAME="EmbedMovie" VALUE="0">   <PARAM NAME="BGColor" VALUE="">   <PARAM NAME="SWRemote" VALUE="">   <PARAM NAME="MovieData" VALUE="">   <PARAM NAME="SeamlessTabbing" VALUE="1">            <embed wmode="transparent" src="a.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="605" height="167"></embed>          </object>2.如果是弹出的层<div></div> 被<select> 下拉列表所阻挡,有2个方法可以解决!

==================================================================
方法一:

<IFRAME>可以遮挡住<SELECT>。所以要使层能够遮挡住下面的列表,只要在层中加入一个和层相同大小的<Iframe>就可以了。
具体做法如下:
<DIV>
<!--//原来的内容//-->
<IFRAME width="100%" height="100%" style="; top:0px; z-index:-1; border-style:none;"></IFRAME>
</DIV>
这个方法对于透明的或外形不规则的层无效。原因很简单,<IFRAME>是方的,最大的应用我想就是菜单了。用这种方法,再也不会出现菜单被列表破坏的尴尬了。


方法二:



<script language="javascript">

var ie55up = IsIE55Up();
var overIframe = null;

function DivOver(objID)
{
var obj = document.all[objID];
// 只有IE5.5以上Iframe的z-index才有效
if (ie55up)
{
if (overIframe == null)
{
   overIframe = document.createElement("<iframe src='about:blank' style=';left:0;top:0;z-index:998;display:none' scrolling='no' frameborder='0'></iframe>");
}
document.body.insertAdjacentElement("beforeEnd",overIframe);
with(overIframe.style)
{
   top = obj.style.top;
   left = obj.style.left;
   width = obj.offsetWidth;
   height = obj.offsetHeight;
   display = 'block';
}
obj.style.zIndex = "999";
}
else // 隐藏被ID为objID的对象(层)遮挡的所有select
{
var sels = document.getElementsByTagName('select');
for (var i = 0; i < sels.length; i++)
    if (Obj1OverObj2(document.all[objID], sels))
   sels.style.visibility = 'hidden';         
}
}

//判断obj1是否遮挡了obj2
function Obj1OverObj2(obj1, obj2)
{
var pos1 = getPosition(obj1)
var pos2 = getPosition(obj2)
var result = true;
var obj1Left = pos1.left - window.document.body.scrollLeft;
var obj1Top = pos1.top - window.document.body.scrollTop;
var obj1Right = obj1Left + obj1.offsetWidth;
var obj1Bottom = obj1Top + obj1.offsetHeight;
var obj2Left = pos2.left - window.document.body.scrollLeft;
var obj2Top = pos2.top - window.document.body.scrollTop;
var obj2Right = obj2Left + obj2.offsetWidth;
var obj2Bottom = obj2Top + obj2.offsetHeight;

if (obj1Right <= obj2Left || obj1Bottom <= obj2Top ||
      obj1Left >= obj2Right || obj1Top >= obj2Bottom)
    result = false;
return result;
}

// 获取对象的坐标
function getPosition(Obj)
{
for (var sumTop=0,sumLeft=0;Obj!=window.document.body;sumTop+=Obj.offsetTop,sumLeft+=Obj.offsetLeft, Obj=Obj.offsetParent);
return {left:sumLeft,top:sumTop}
}

// 是否IE5.5以上版本
function IsIE55Up () {
var agt = navigator.userAgent.toLowerCase();
var isIE = (agt.indexOf("msie")!=-1);
if (isIE)
{
var stIEVer = agt.substring(agt.indexOf("msie ") + 5);
var verIEFull = parseFloat(stIEVer);
return verIEFull >= 5.5;
}
return false;
}

</script>

<script>
    window.onload = function(){DivOver("div1")}
</script>

<div style=";left:10px;top:20px;width:200px;height:85px;border:1px solid red;" >
看看现在这个层下面的select不是简单的隐藏了:)
</div>
<select >
<option>test1</option>
<option>test2</option>
<option>test3</option>
</select>
<P />


<select >
<option>test1test1test1test1test1test1test1test1test1test1test1test1test1test1</option>
<option>test2</option>
<option>test3</option>
</select>
<P />


<select >
<option>test1</option>
<option>test2</option>
<option>test3</option>
</select>
<P />

http://www.cnblogs.com/joejoe/archive/2008/10/06/829111.html 这个哥们写的不错

用了<param value="transparent">
        <param value="Opaque">   这两个属性迎刃而解

为什么会被遮住呢?查了一下

由于embed标签的显示层高于div等其他页面元素,因此会被其遮盖.

一般通过隐藏embed标签的方法来防止遮盖.



昨天在做一个调研时发现,可以直接 设置 embed 标签的 wmode=’ transparent’ 属性,这样就可以使弹出层遮盖住

Flash了.(该属性一般的作用是使flash透明,即可以使flash下面的背景透出来,前提是flash自身是透明的)

这个问题解决的方法还要在css里设置一个背景 这样弹出层的时候flash透明 背景出现那张图片 ok了~ 不过就不会动了==



========================================

FusionCharts组件生成的Flash遮挡DIV的解决办法

在使用FusionChart的时候,生成的Flash上会产生层遮挡问题

解决的办法是修改FusionChart.js文件

//Set background color
if(c) { this.addParam('bgcolor', c); }

//Set Quality
this.addParam('quality', 'high');


this.addParam('wmode', 'transparent');//这个是需要添加的

//Add scripting access parameter
this.addParam('allowScriptAccess', 'always');

但是这会引起背景色的变化,所以需要自己设置Chart的背景属性


更多的解决弹出层被Flash及select挡住的问题请到论坛查看: http://BBS.TC711.COM



【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】 来源: 互联网    日期:2011-9-17   

发 表 评 论
查看评论

  您的大名:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
认证编码: 刷新验证码
点评内容: 字数0
  精品推荐  
  本月推荐  
  友情赞助  

关于我们 | 联系我们 | 广告投放 | 留言反馈 | 免费程序 | 虚拟主机 | 网站建设 |  网站推广 |  google_sitemap baidu_sitemap RSS订阅
本站所有资源均来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会在最短的时间回复您
Copyright © 2005-2015 Tc711.Com All Rights Reserved 版权所有·711网络   蜀ICP备05021915号
110网监备案 信息产业备案 不良信息举报