2010-09-29 7 views
108

Как я могу наложить div с полупрозрачной непрозрачностью над встроенным видеоизображением iframe iframe?наложение непрозрачного div над 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; 
} 

редактировать (добавлено более осветление): HTML5 приближается к нам, все больше и больше устройств, которые используют его вместо вспышки, что усложняет вложение YouTube видео, к счастью, youtube предоставляет специальный встраиваемый iFrame с обработкой всех проблем совместимости с встраиванием видео, но теперь ранее работающий метод наложения видеообъекта на полупрозрачный div больше не действителен, теперь я не могу добавить <param name="wmode" value="transparent"> к объекту , потому как теперь это iFrame, поэтому как добавить непрозрачный div поверх встроенного видео iframe?

+1

Похоже YouTube полностью исправило проблему. –

+1

Я все еще вижу проблему в Chrome. – scribu

+0

@scribu это могут быть проблемы с флэш-памятью или я что-то упустил, я протестировал на локальном сервере. –

ответ

210

Information from the Official Adobe site about this issue

Вопрос в том, когда вы вставляете ссылку YouTube:

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

в качестве плавающего фрейма, режим окна по умолчанию оконный, который по существу придает ему г-индекс больше, то все остальное, и это будет накладывать на что-либо.

Try добавляя этот параметр GET к вашему URL:

= непрозрачный режим окна

так:

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

Это должно быть wmode = opaque. – ybakos

+1

Информация от Adobe о проблеме: [http://kb2.adobe.com/cps/155/tn_15523.html](http://kb2.adobe.com/cps/155/tn_15523.html). Только для записи. – Wacek

10

Хм ... на этот раз другое? http://jsfiddle.net/fdsaP/2/

Renders in Chrome fine. Вам нужен кросс-браузер? Это действительно помогает быть конкретным.

EDIT: Youtube Отрисовывает object и embed, без явного множества WMODE, что означает, что по умолчанию в «окно», которое означает, что она перекрывает все . Вам нужно либо:


а) Хост-страницу, которая содержит код объекта/EMBED себя и добавить WMODE = «прозрачный» PARAM элемент объекта и атрибута вставлять, если вы выбираете для обслуживания обоих элементов

b) Найдите способ для youtube, чтобы указать их.


+0

Да, я выяснил, в чем проблема: в firefox и chrome он работает с обычным фоном, добавив, что непрозрачность заставляет его сиять ... ваше тоже сияет. –

+0

отредактировал пример iframe, чтобы посмотреть, как выглядит мой взгляд. http://jsfiddle.net/fdsaP/6/ –

+0

Итак, вы хотите, чтобы непрозрачность применялась к элементу/встроенному элементу внутри 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; 
} 

«указатель события: None» изменит поведение наложения так, что он может быть физически непрозрачным. Конечно, это будет работать только в хороших браузерах.

+0

safari 4, chrome и firefox3.6 все еще щелкает через ?? –

+1

Разве это не то, что вы хотите? – Codebeef

+0

Я пытаюсь разместить встроенное видео youtube за непрозрачным фоном для совершенно эстетических целей :) –

1

Я провел целый день возиться с CSS, прежде чем я нашел anataliocs кончик. Добавить wmode=transparent в качестве параметра в URL 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> 

Это позволяет IFRAME наследовать Z-индекс контейнера таким образом ваш непрозрачный <div> бы перед IFRAME.

15

Обратите внимание, что режим окна = прозрачное исправление работает, только если это первое так

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

Не

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

спасибо за подсказку –

+0

это простейшее решение ... работающий .. thankyou +1 –

Смежные вопросы