Что ж, это способ сделать это, которого я никогда раньше не видел - вы создаете совершенно пустые теги A и аккуратно размещаете их поверх другого несвязанного изображения, чтобы создать иллюзию, что у вас есть «нажимаемые» кнопки.
Сначала я объясню, почему Opera не справляется с этим, дам вам быстрый обходной путь - а затем скажу несколько слов о том, почему вы можете подумать о том, чтобы делать что-то по-другому ..
Opera не обнаруживает никаких действий мыши, потому что при некоторых обстоятельствах пытается игнорировать действия мыши над пустыми элементами (в случае, если пользователь фактически пытается щелкнуть что-то «за» этими пустыми элементами). Здесь мы пытаемся скопировать то, что делает IE - по-видимому, недостаточно точно, поскольку IE работает и Opera не работает, даже когда я удаляю ваши условные комментарии и специфическую для IE таблицу стилей.
Быстрый (и хакерский) обходной путь - убедиться, что Opera заставляет думать, что действия мыши, направленные на пустые элементы A, значительны. Например, это должен быть безобидный способ справиться с этим:
<script>if(document.addEventListener)document.addEventListener('mouseover', function(){}, true)</script>
Это добавляет один простой приемник при наведении курсора мыши, который срабатывает при наведении курсора на что угодно, включая невидимые пустые ссылки. За исключением использования небольшого количества дополнительного процессора, он абсолютно ничего не сделает, но Opera заметит, что что-то пытается наблюдать взаимодействие мыши, и элементы станут интерактивными.
Теперь код, который вы развернули, на мой взгляд, не лучший способ сделать это. Причина в том, что он не так доступен, как другие способы сделать то же самое - ни для вспомогательных технологий, ни для браузеров, которые переформатируют страницу из-за маленьких экранов или пользовательских предпочтений. Ваши ссылки не имеют абсолютно никакой информации, кроме URL - нет текста ссылки, ничего. Поскольку они относятся к одному изображению, вы также не можете дать каждой кнопке отдельный альтернативный текст.
Мое предложение будет использовать вместо этого карту изображений (HTML-элемент MAP) с соответствующими атрибутами ALT = "" и / или TITLE = "" для областей. Это способ сделать это, что должны понимать как вспомогательные технологии, так и браузеры, которым необходимо изменить предполагаемый макет вашей страницы.