YouTube iframeに不透明なdivをオーバーレイ


110

YouTube iframe埋め込み動画の上に半透明の不透明度でdivをオーバーレイするにはどうすればよいですか?

<iframe class="youtube-player" type="text/html" width="520" height="330" src="http://www.youtube.com/embed/NWHfY_lvKIQ" frameborder="0"></iframe>
<div id="overlay"></div>

CSS

#overlay {
    position:fixed;
    top:0;
    left:0;
    width:100%;
    height:100%;
    background:#000;
    opacity:0.8;
    /*background:rgba(255,255,255,0.8); or just this*/
    z-index:50;
    color:#fff;
}

編集(明確化を追加): HTML5が近づいており、フラッシュの代わりにそれを使用するデバイスが増えているため、YouTube動画の埋め込みが複雑になっていますが、ありがたいことにYouTubeは、埋め込み動画の互換性に関するすべての問題を処理する特別な埋め込み可能なiFrameを提供していますが、ビデオオブジェクトを半透明のdivでオーバーレイする以前の方法は無効になり<param name="wmode" value="transparent">ました。オブジェクトにiFrame を追加したので、オブジェクトに追加できなくなりました。不透明なdivを上に追加するにはiframe埋め込みビデオ?


1
YouTubeが問題を完全に修正したようです。
Timo Huovinen、2011年

1
それでもChromeで問題を確認できます。
scribu '30年

@scribuフラッシュセキュリティの問題か、何か不足している可能性があります。ローカルサーバーでテストしました。
Timo Huovinen、2011年

恐らく。とにかく、anataliocsのソリューションは私のために働いた。
scribu '31年

この質問にyoutubeタグを追加できますか?
anataliocs

回答:


210

この問題に関するAdobe公式サイトの情報

問題は、YouTubeリンクを埋め込むときです。

https://www.youtube.com/embed/kRvL6K8SEgY

iFrameでは、デフォルトのwmodeはウィンドウ処理されており、本質的にZインデックスが他のすべてよりも大きく、何でもオーバーレイされます。

このGETパラメータをURLに追加してみてください:

wmode =不透明

そのようです:

https://www.youtube.com/embed/kRvL6K8SEgY?wmode=opaque

URLの最初のパラメータを確認してください。他のパラメータは後に続く必要があります

iframeタグ内:

例:

<iframe class="youtube-player" type="text/html" width="520" height="330" src="http://www.youtube.com/embed/NWHfY_lvKIQ?wmode=opaque" frameborder="0"></iframe>

1
問題に関するAdobeからの情報:http : //kb2.adobe.com/cps/155/tn_15523.html。参考までに。
Wacek

15

wmode = transparent修正は、それが最初の場合にのみ機能することに注意してください。

http://www.youtube.com/embed/K3j9taoTd0E?wmode=transparent&rel=0

ない

http://www.youtube.com/embed/K3j9taoTd0E?rel=0&wmode=transparent

11

うーん...今回は何が違うの?http://jsfiddle.net/fdsaP/2/

Chromeで正常にレンダリングします。クロスブラウザが必要ですか?それは本当に具体的であることを助けます。

EDIT:YouTubeのは、レンダリングobjectし、embedそれを、それはオーバーレイ手段「ウィンドウ」にデフォルトを意味し、明示的なWMODEが設定されたすべてのものを。次のいずれかを行う必要があります。


a)自分でオブジェクト/埋め込みコードを含むページをホストし、両方の要素を提供することを選択した場合はwmode = "transparent" param要素をオブジェクトと属性に追加して埋め込みます

b)YouTubeがそれらを指定する方法を見つけます。



ええ、私は問題が何であったかを見つけました、FirefoxとChromeでは通常の背景で動作し、不透明度を追加するとそれが透けて見えます...
Timo Huovinen、2009

iframeの例を編集して、私のものと同じように見せました。jsfiddle.net/fdsaP/6
Timo Huovinen、2009

では、iframe内のオブジェクト/埋め込み要素に不透明度を適用したいですか?
meder omuraliev 2010

はい、オブジェクトがiframe全体を覆っているのでiframeがオーバーレイされていることに気付きませんでした。可能であればビデオを覆う必要があります。そうでない場合は、同じ幅/高さと位置の黒いdivに置き換えてください。
Timo Huovinen、2009

@mederリンクと解決策をありがとう!今すぐ試してみますが、フラッシュはまだクリックできます:)
Timo Huovinen

2

アナタリオックスのヒントを見つける前に、CSSをいじるのに1日費やしました。wmode=transparentYouTube URLにパラメーターとして追加します。

<iframe title=<your frame title goes here> 
    src="http://www.youtube.com/embed/K3j9taoTd0E?wmode=transparent"  
    scrolling="no" 
    frameborder="0" 
    width="640" 
    height="390" 
    style="border:none;">
</iframe>

これにより、iframeがそのコンテナーのz-indexを継承できるため、不透明<div>がiframeの前に配置されます。


0

美的目的のための不透明オーバーレイはありますか?

もしそうなら、あなたは使うことができます:

#overlay {
        position: fixed;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        z-index: 50;
        background: #000;
        pointer-events: none;
        opacity: 0.8;
        color: #fff;
}

「pointer-events:none」は、オーバーレイの動作を変更して、物理的に不透明になるようにします。もちろん、これは優れたブラウザでのみ機能します。


サファリ4、クロム、firefox3.6はまだクリックスルーしますか?
Timo Huovinen、2009

1
あなたはそのワットを望んでいませんか?
Codebeef 2010

私は完全に審美的な目的のためにYouTube埋め込みビデオを不透明な背景の背後に配置しようとしています:)
Timo Huovinen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.