2010-09-29 15 views
108

¿Cómo puedo superponer un div con opacidad semitransparente sobre un video incrustado ifraube de youtube?overlay opaque div over youtube iframe

<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; 
} 

edición (añadido más aclaraciones): HTML5 se acerca a nosotros, con más y más dispositivos que lo utilizan en vez del flash, lo que complica la incorporación de vídeos de youtube, afortunadamente, youtube proporciona un iFrame incrustable especial que maneja todos los problemas de compatibilidad de incrustación de video, pero ahora el método anterior de superposición de un objeto de video con un div semitransparente ya no es válido, ahora no puedo agregar un <param name="wmode" value="transparent"> al objeto , porque ahora es un iFrame, entonces, ¿cómo puedo agregar un div opaco encima del video incrustado iframe?

+1

Parece que YouTube ha solucionado el problema por completo. –

+1

Todavía puedo ver el problema en Chrome. – scribu

+0

@scribu podría ser problemas de seguridad flash o me falta algo, probé en un servidor local. –

Respuesta

210

Information from the Official Adobe site about this issue

El problema es cuando incrusta un enlace de youtube:

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

en un iFrame, el embed predeterminada está en ventanas que esencialmente le da un índice z mayor que todo lo demás y lo hará superposición sobre cualquier cosa.

Try añadiendo este parámetro GET a la URL:

wmode = opaco

así:

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

Asegúrese de que su primer parámetro en la URL. Otros parámetros deben ir después de

En la etiqueta iframe:

Ejemplo:

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

Eso debería ser wmode = opaco. – ybakos

+1

Información de Adobe sobre el problema: [http://kb2.adobe.com/cps/155/tn_15523.html](http://kb2.adobe.com/cps/155/tn_15523.html). Para que conste. – Wacek

10

Hmm ... ¿qué es diferente esta vez? http://jsfiddle.net/fdsaP/2/

Renders in Chrome fine. ¿Lo necesitas entre navegadores? Realmente ayuda a ser específico.

EDITAR: Youtube hace que el object y embed con ningún conjunto embed explícita, lo que significa que por defecto es "ventana" que significa que se superpone a todo lo . Es necesario que sea:


a) Alojar la página que contiene el código objeto/embed mismo y añadir wmode = elemento de "transparente" parámetro de objetar y atribuir a incrustar si decide servir a ambos elementos

b) Encuentre la manera de que youtube especifique eso.


+0

Sí, descubrí cuál era el problema, en Firefox y Chrome funciona con fondos normales, agregando que la opacidad lo hace brillar ... el tuyo también brilla. –

+0

editó el ejemplo de iframe para ver el aspecto de la mina. http://jsfiddle.net/fdsaP/6/ –

+0

Entonces ... ¿quieres que la opacidad se aplique al elemento object/embed dentro del iframe? –

0

¿Es la superposición opaca con fines estéticos?

Si es así, puede utilizar:

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

'puntero-eventos: ninguno' va a cambiar el comportamiento de superposición de modo que pueda ser físicamente opaco. Por supuesto, esto solo funcionará en buenos navegadores.

+0

safari 4, chrome y firefox3.6 aún clics? –

+1

¿No es ese wat lo que quieres? – Codebeef

+0

Estoy tratando de poner el video incrustado de youtube detrás de un fondo opaco para fines completamente estéticos :) –

1

pasé un día de jugar con CSS antes de encontrar anataliocs punta. Añadir wmode=transparent como parámetro a la URL de YouTube:

<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> 

Esto permite que el iframe para heredar el índice z de su contenedor para que su opaca <div> sería frente al marco flotante.

15

Tenga en cuenta que el wmode = solución transparente sólo funciona si es primero para

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

No

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

gracias por la punta –

+0

esta es la solución más simple ... de trabajo .. gracias +1 –