z-index和iframe问题 - 下拉菜单

时间:2011-01-04 21:11:01

标签: jquery iframe z-index

嘿。我的下拉菜单和iframe有一个相当令人费解的问题。

我在下拉菜单中应用了z-index为1000,但是包含youtube视频的iframe仍显示在菜单上方。请在下方查看(查看“短代码”菜单):

http://www.matthewruddy.com/demo/?page_id=765

我无法弄清楚为什么会这样。谁能帮我吗?如果它有帮助,这是CSS:

#jquery-dropdown {
position: absolute;
bottom: 0;
right: 10px;
}

#jquery-dropdown ul {
margin: 0;
padding: 0;
list-style: none;
}

#jquery-dropdown ul li {
margin: 0;
padding: 15px 10px 15px 10px;
position: relative;
float: left;
}

#jquery-dropdown ul li a {
display: block;
text-decoration: none;
font-weight: bold;
font-size: 13px;
color: #707070;
outline: none;
}

#jquery-dropdown ul li ul {
position: absolute;
left: -10px;
top: 46px;
display: none;
background: #f4f4f4;
border: 1px solid #e1e1e1;
border-top: none;
z-index: 1000;
padding: 5px 0;
-moz-box-shadow: 1px 2px 3px #a4a4a4;
-webkit-box-shadow: 1px 2px 3px #a4a4a4;
box-shadow: 1px 2px 3px #a4a4a4;
}

#jquery-dropdown ul li ul li {
margin: 0;
padding: 0;
float: none;
position: relative;
z-index: 1000;
}

#jquery-dropdown ul li ul li a {
width: 180px;
padding: 10px;
z-index: 1000;
}

#jquery-dropdown ul li ul li a:hover {
background: #e0e0e0;
}

6 个答案:

答案 0 :(得分:17)

如果您想继续使用嵌入Youtube视频的iframe方法,只需通过查询变量?wmode=transparent设置WMODE即可。这是一个例子:

<iframe width="580" height="435" src="http://www.youtube.com/embed/fCH7B9m4A4M" frameborder="0" allowfullscreen></iframe>

会变成:

<iframe width="580" height="435" src="http://www.youtube.com/embed/fCH7B9m4A4M?wmode=transparent" frameborder="0" allowfullscreen></iframe>

请务必检查Youtube网址中是否存在任何查询变量。如果已经?something...?wmode=transparent更改为&wmode=transparent并在最后添加。

答案 1 :(得分:5)

我会使用<object>标记而不是iframe来嵌入YouTube视频。然后,我会使用<param name="wmode" value="transparent">内的<object>。像这样:

<object width="640" height="385"><param name="wmode" value="transparent"></param><param name="movie" value="http://www.youtube.com/v/Q5im0Ssyyus?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Q5im0Ssyyus?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>

Here is some more info

答案 2 :(得分:1)

如果?wmode = transparent不起作用,请尝试切换到opaque。这在我的案例中有用。

样品:

(function ($) {
    $ = jQuery;

    $(function () {
        $video = $("#SomeWrapper> iframe");
        $srcVal = $video.attr('src');
        appendedVal = $srcVal + "?wmode=opaque";
        $video.attr('src',appendedVal);
    });
 })(jQuery);

答案 3 :(得分:0)

在我的计算机上(Windows 7上的Chrome),显示YouTube视频的插件是与浏览器内容窗口不同的本机窗口。我认为当插件以这种方式运行时,它会在浏览器中的任何其他内容之上呈现,而忽略CSS z-index值。

Silverlight插件有一个设置,使其在浏览器内容窗口中运行,而不是在其自己的本机窗口中运行。您可以尝试为嵌入的YouTube播放器找到类似的设置。

答案 4 :(得分:0)

Flash在所有浏览器上并不总是与z-index一起使用,从我的Firefox看起来很好。 http://manisheriar.com/blog/flash_objects_and_z_index&lt;&lt;我认为这可能是您正在寻找的解决方案。

修改

Why doesn't Z-Index in IE render the way it's supposed to over a Flash Movie?&lt;&lt; stackoverflow上的类似问题

答案 5 :(得分:0)

这是一个iframe问题而不是z-index。我面临的问题我只是将“wmode = transparent”添加到YouTube嵌入i frame src url。像这样:

 <div class="tube_box">
          <iframe width="500" height="300" src="https://www.youtube.com/embed/ngKxlkoZBLA**?wmode=transparent**" frameborder="0" allowfullscreen ></iframe>
    </div>

It Works in all browser IE,Firefox and chrome 

Here My Css :


.tube_box{
    float:left;
    width:515px;
    border:5px groove #d1e7ed;
    border-radius:11px;
    margin-bottom:10px;
    color:#b8b8bf;
    padding:10px; 
    z-index: 1000 ;

}


If you add the position:relative,absolute or anything again the drop down hiding.So avoid position its better.Another thing is  not important  to add the z-index,Without z-index also it will work .Hope so it will really helpful for you