superponer div opaco sobre el iframe de youtube


110

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

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

editar (se agregó más aclaración): HTML5 se está acercando a nosotros, con más y más dispositivos que lo usan en lugar de flash, lo que complica la incrustación de videos de youtube, afortunadamente, youtube proporciona un iFrame incrustable especial que maneja todos los problemas de compatibilidad de incrustaciones de videos, pero ahora el método de trabajo anterior de superponer un objeto de video con un div semitransparente ya no es válido, ahora no puedo agregar un <param name="wmode" value="transparent">objeto, porque ahora es un iFrame, entonces, ¿cómo agrego un div opaco encima de el video incrustado iframe?


1
Parece que youtube solucionó el problema por completo.
Timo Huovinen

1
Aún puedo ver el problema en Chrome.
scribu

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

Probablemente. De todos modos, la solución de anataliocs funcionó para mí.
scribu

¿Puedes agregar la etiqueta de youtube a esta pregunta?
anataliocs

Respuestas:


210

Información del sitio oficial de Adobe sobre este problema

El problema es cuando insertas un enlace de YouTube:

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

en un iFrame, el wmode predeterminado tiene ventana, lo que esencialmente le da un índice z mayor que todo lo demás y se superpondrá sobre cualquier cosa.

Intente agregar este parámetro GET a su URL:

wmode = opaco

al igual que:

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

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

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>

1
Información de Adobe sobre el problema: http://kb2.adobe.com/cps/155/tn_15523.html . Para que conste.
Wacek

15

Tenga en cuenta que la solución wmode = transparent solo funciona si es la primera vez

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

No

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

11

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

Renders en Chrome bien. ¿Lo necesitas en varios navegadores? Realmente ayuda ser específico.

EDITAR : Youtube muestra el objecty embedsin wmode explícito establecido, lo que significa que por defecto es "ventana", lo que significa que superpone todo . Necesitas:


a) Aloje la página que contiene el objeto / código de inserción usted mismo y agregue el elemento param wmode = "transparente" al objeto y el atributo para insertar si elige servir ambos elementos

b) Encuentra una manera de que YouTube los especifique.



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

edité el ejemplo de iframe para que se vea como el mío. jsfiddle.net/fdsaP/6
Timo Huovinen

Entonces ... ¿quieres que la opacidad se aplique al objeto / elemento incrustado dentro del iframe?
meder omuraliev

sí, no noté que el iframe estaba superpuesto porque para mí el objeto está cubriendo el iframe completo, necesito que el video esté cubierto si es posible, de lo contrario, lo reemplazaré con un div negro del mismo ancho / alto y posición.
Timo Huovinen

@meder gracias por el enlace y la solución! lo probaré ahora mismo, pero aún se puede hacer clic en el flash :)
Timo Huovinen

2

Pasé un día jugando con CSS antes de encontrar la sugerencia de anataliocs. Agregue wmode=transparentcomo 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 herede el índice z de su contenedor para que su opaco <div>esté frente al iframe.


0

¿La superposición opaca tiene 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;
}

'pointer-events: none' cambiará el comportamiento de superposición para que pueda ser físicamente opaco. Por supuesto, esto solo funcionará en buenos navegadores.


safari 4, chrome y firefox3.6 todavía hace clic en ??
Timo Huovinen

1
¿No es lo que quieres?
Codebeef

Estoy tratando de poner el video incrustado de YouTube detrás de un fondo opaco con fines completamente estéticos :)
Timo Huovinen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.