サイトの画像の一部に FancyBox プラグインを使用しています。私のページの1つには、YouTubeの埋め込みiFrameコードもあり、ページにビデオを配置しています。
この同じページにはサムネイルがあり、クリックすると画像がFancyBoxesされます。ただし、埋め込まれたYouTubeビデオはまだFancyBox画像の上にあります。 Z-Indexの実験を少ししましたが、まだ運がありませんでした。
I-frameは、z-indexなどが設定されている場合でも、ページ内のすべての要素よりも上位にありますか?
パラメーターとしてwmode = transparentを追加します。
HTMLソリューション
<iframe title="YouTube video player"
width="480" height="390"
src="http://www.youtube.com/embed/lzQgAR_J1PI?wmode=transparent"
frameborder="0"
>
jQueryソリューション:
$(document).ready(function () {
$('iframe').each(function(){
var url = $(this).attr("src");
$(this).attr("src",url+"?wmode=transparent");
});
});
ソース http://www.scorchsoft.com/news/youtube-z-index-embed-iframe-fix
一言で言えば、はい。ただし、YouTube動画はFlashです。 FlashはZオーダーよりも上位にあります。 IFRAMEにあるかどうかに関係なくオーバーレイします。
IFRAMEとFlashは「重い」オブジェクトです。これらには独自のウィンドウマネージャーオブジェクト(WindowsではHWND)があるため、他のヘビーウェイトオブジェクトの前または後ろにあります。
div
、span
などは「軽量」です。つまり、それらは描画オブジェクトであり、ボディ(重量のあるオブジェクト)に描画され、ウィンドウマネージャではなくブラウザによって管理されます。
オペレーティングシステムのウィンドウマネージャーに関する限り、これらはブラウザーによって描画された単なるきれいな画像です。そのため、「実際の」オブジェクト(またはウィンドウマネージャーが実際に考えるオブジェクト)をオーバーレイできません。
すべてのDIV
とSPAN
とA
がOSリソースを予約しなければならない場合、ウィンドウマネージャーがすぐに使い果たされるため、軽量でなければなりません。
非常に簡単です。iframeのURLにこのパラメーターを追加するだけです。
<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/lzQgAR_J1PI?wmode=transparent" frameborder="0" wmode="Opaque">
がんばろう!
他のHTML要素と同じz-indexルールに従ってFlashアプレットをレンダリングする場合は、含まれているFlashのWMODE属性を設定する必要があります。
見る:
これをIE(少なくとも7と8)で動作させるには、これを追加する必要があります。
<param name="wmode" value="transparent" />
これをiframe URLに追加する方法があるとは思わないので、コンテンツにはおそらくオブジェクトタグの間にこれが必要です。
うーん、ここでの問題は、Flash要素を制御できないことです。基本的には、タグのみを含むYouTubeサイトから埋め込みiFrame HTMLをプルするだけです。したがって、WMODEを設定することはできません。属性
遅い答えですが、はい、できます。 yt URLに?wmode = opaqueを付加するだけです。
<iframe src="http://www.youtube.com/embed/vRH3Kq5qDw4?wmode=opaque".............