Как расположить блок над Flash

Опубликовано: 25 марта, 2009 | Рубрика: Кодинг | Тэги: , , , , | 12 Комментариев »

Проблема расположения блоков над flash-содержимым известна уже давно. Суть её заключается в следующем: если на сайте есть flash-ролик, то для расположения блока поверх него стандартных свойств CSS будет недостаточно. Указав для такого блока абсолютное позиционирование и z-index вы не добьётесь желаемого результата. Флэш всё равно окажется поверх него.

Всё дело в параметрах flash-ролика, внедряемого на веб-страницу. Один из таких параметров — Windows Mode (wmode). Данный параметр может принимать следующие значения:

  • window: установлен по-умолчанию и отображает flash как бы в своём отдельном окне браузера, вынув его из общего потока html
  • opaque: в этом режиме флэш становится частью документа и отрисовывается согласно всем правилам обычного элемента страницы
  • transparent: похож на opaque, но вдобавок ещё и позволит фону html-страницы «проглядывать» через все прозрачные элементы флэш-ролика

Демонстрация режимов работы параметра wmode во flash

Думаю уже и так всё понятно, замечу лишь, что параметр нужно указать и для object и для embed. Совсем необязательно делать это при создании и публикации flash, вы можете указать параметры прямо в коде html-документа:

<object ...>
<param name="wmode" value="transparent" />
<embed wmode="transparent" ...></embed>
</object>

Вообще-то, решение этой проблемы известно уже очень давно даже начинающим веб-дизайнерам. Я бы не стал поднимать эту тему, если бы не разработчики сайта Google. Они буквально вынудили меня это сделать. Долгое время я мирился с этой ошибкой на сайте Youtube, там выпадающий список с навигацией перекрывается флэшкой, хотя и не очень сильно. (вам нужно войти на сайт под своим паролем и при просмотре видео-ролика навести курсор на свой логин в верхней навигации).

Флэш-ролик перекрывает абсолютно позиционируемый блок на сайте Youtube

Но сегодня я обратил внимание на изменения на сайте Google Video. Сайт, очевидно, подвергся редизайну и в целом изменился в лучшую сторону. Однако и здесь присутствует эта досадная ошибка.

Флэш-ролик перекрывает абсолютно позиционируемый блок на сайте Google Video

Взглянув в html-код, можно заметить, что исправить её пытались и у них это даже получилось, но только в одном браузере — Internet Exporer. Вызывает недоумение способ, которым это было сделано. Применён трюк с пустым iframe, который был «подложен» под позиционируемый блок. Этот способ имел бы смысл, если бы речь шла о перекрытии элемента формы select в Internet Explorer. Но зачем это сделано в данном случае, мне абсолютно не понятно, как и не понятно то, почему верстальщик такой компании как Google до сих пор не в состоянии справиться с такой простой проблемой. И вообще, он тестирует сайт в других браузерах? Например в Google Chrome…

Демо

чушьничего интересногомогло быть лучшеочень интересноотлично!
Может вам будет также интересно:

12 Комментариев на “Как расположить блок над Flash”

  1. 1 Роман  (27 марта, 2009 в 18:44) :

    Выяснил, что в Linux параметр wmode не решает проблему с перекрытием flash. Если для проекта это критично, можно воспользоваться трюком с iframe.

  2. 2 alexpts  (16 декабря, 2009 в 19:26) :

    Встречался недавно с таким. Не знал. Спасибо!

  3. 3 Chkalov  (2 февраля, 2010 в 19:06) :

    В сафари 4 wmode не рабоает.
    Если есть решение – буду рад если скинете на мыло

  4. 4 Роман  (3 февраля, 2010 в 16:42) :

    Режим wmode отлично работает и в Safari. Во всяком случае в версии для Windows. На других платформах не проверял. Какая у вас операционка, Chkalov?

  5. 5 Chkalov  (4 февраля, 2010 в 15:46) :

    ХП про. Safari 4.0.4
    Пример из статьи не работает. Так же не работает меню на сайте adobe – оно залазит под флеш.

  6. 6 Роман  (4 февраля, 2010 в 16:58) :

    Даже не знаю что сказать. У меня тоже Windows XP и Safari этой же версии. Набросал быстренько пример: http://www.webcocktail.ru/sandbox/flash-and-z-index.html Если у вас блок с красной рамкой в примере расположен под обоими флеш-роликами (чего быть не должно), то… может быть стоит переустановить Safari?

  7. 7 Chkalov  (6 февраля, 2010 в 13:00) :

    Роман, поставил на другой машине заново скачанный Сафари – работает. Видимо что-то не в порядке конкретно с той версией. Спасибо.

  8. 8 jeka  (10 августа, 2010 в 16:34) :

    to Роман
    Проверял на линуксе, работает все нормально

  9. 9 Роман  (11 августа, 2010 в 14:12) :

    jeka, ну значит исправили, слава богу. Обновлений браузера уже много было, теперь в Firefox под Windows блок отображается поверх flash даже без wmode, в отличии от других браузеров.

  10. 10 Teftelkin  (11 августа, 2010 в 22:42) :

    А вот какой баг всплыл в Chrome. При добавлении флешке wmode=”opaque”, в Хроме начинает глючить курсор – перестает превращатся в палец на ссылках и кнопках (стопицот часов убилось, прежде чем я допер, что виноват именно wmode)) . А заодно – если использовать свои курсоры, пряча при этом стандартный – то картинку курсора он подставляет, но дефолтовый курсор не убирает – он весело болтается над картинкой. Если убрать wmode – все отлично работает. Доктор, ЧЯДНТ? Как лечиться? Или это совсем глобальненько?

  11. 11 Роман  (12 августа, 2010 в 12:10) :

    Teftelkin, видимо проблема действительно глобальная и решается она именно удалением параметра wmode. страница с обсуждением на форуме поддержки Google Chrome. Google был извещён об этой ошибке ещё в марте: багрепорт

  12. 12 Teftelkin  (12 августа, 2010 в 13:14) :

    Роман, спасибо за информацию!
    Все бы хорошо, вот только wmode-то я ставил неспроста, а у заказчика оказался именно Chrome. Как всегда все через ж, но теперь хоть есть, чем апеллировать =)


Есть мнение? Высказывайтесь!