Переводчику комиксов: смена изображения при наведении курсора

На днях «Рейтинг Комиксов» принес ссылку на перевод одного потрясного веб-комикса: Fredo & Pid'jin. Но привлек он мое внимание не только своей потрясностью, но любопытным эффектом, который не использовался ни в одном другом переводе на моей памяти.



Суть его в том, что под картинкой с переводом комикса «прячется» оригинальное изображение, которое появляется, когда читатель наводит на нее курсор. Таким образом, чтобы взглянуть на оригинал, не нужно ни только переходить на другую страницу, но даже кликать мышью, достаточно просто навести указатель на изображение.

Бывалые интернет-технологи могут сходу назвать несколько способов реализации такого эффекта. There’s more than one way to do it. Способ, который в данном случае применил переводчик Fredo & Pid'jin, могут взять на вооружение и другие переводчики, если посчитают это оправданным.

HTML-код одного выпуска комикса:

<div class="comics" style="background-image: url(http://адрес.изображения.исходного/комикса);">
<img src="http://адрес.изображения.переведенного/комикса">
</div>


В CSS (на пример, в ЖЖ есть настройка «Свой CSS») добавляем строки типа:

div.comics { text-align:center; background-position:center; background-repeat:no-repeat; }
div.comics img:hover { opacity:0; filter:alpha(opacity=0); }


Важно, чтобы исходное изображение и перевод совпадали по ширине и высоте.

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

Плюсы:


  1. «Pure CSS», ура! Особенно актуально для ЖЖ, который пресекает все попытки пользователя баловаться с JavaScript.
  2. Даже если браузер не поддерживает используемые свойства и смены картинки не получится, пользователь все еще сможет полноценно читать перевод комикса.
  3. Не требует дополнительной обработки изображений: есть оригинал, есть перевод, и больше никакого шаманства в графическом редакторе.

Минусы:


  1. Лишний трафик. Оригинальные изображения будут загружаться, даже если пользователь не собирается их смотреть.
  2. Сомнительное юзабилити. Пользователь не сможет свободно двигать мышь в области картинки без того, чтобы «переключить» ее на оригинал.

Пожалуй, оба минуса в большей степени актуальны для больших страничных комиксов, которые и сами по себе довольно большие, и файлы весят немало. С другой стороны, для небольших веб-комиксов типа Fredo & Pid'jin такое решение вполне оправдано и может быть только поприветствовано.

Комментарии (13)

RSS свернуть / развернуть
+
+1
Хм. предполагается, что ни разу не понадобиться докручивать баллоны или править фон — иногда без этого русский текст просто не лезет нормально…
avatar

Duke

  • 6 июля 2010, 00:02
+
0
почему? размер баллонов никак не сказывается на размерах картинки )
avatar

Bogdan

  • 6 июля 2010, 00:29
+
+1
ну, это будет сразу видно при таком подходе. хоть пальцем тыкай.
avatar

Duke

  • 6 июля 2010, 00:56
+
0
так в этом же вся прелесть сравнения перевода с оригиналом подобным способом и есть! ) ты наконец-то видишь ВСЮ проделанную переводчиком (ретушером, тайпсеттером, шрифтовиком, редактором) работу.
avatar

Bogdan

  • 6 июля 2010, 01:27
+
+1
Если эта работа выполнена хорошо — то да, согласен. То есть получается что это заставляет работать хорошо (:
avatar

Duke

  • 6 июля 2010, 11:53
+
+4
А теперь код, который работает не только в ФФ и Опере, но и в IE 6-7-8, старой ФФ и пр.:

-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; *filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0); -moz-opacity: 0; -khtml-opacity: 0; opacity: 0;


Опять же, по возможности для поддержки офисного IE6 и старых браузеров лучше ставить псевдо-класс hover на , а не , предварительно обернув им img (все равно часто клик по комиксу ставят на след. комикс, так что уже есть):

div.comics a:hover img {-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; *filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0); -moz-opacity: 0; -khtml-opacity: 0; opacity: 0;}
avatar

Lishtenbird

  • 6 июля 2010, 02:00
+
+3
Я знал, что на тебя можно положиться (:
avatar

Gravedigger

  • 6 июля 2010, 07:45
+
+1
Еще, в принципе, можно достичь той же функциональности через display:none, но там уже нужно мудрить с position:relative и absolute.
avatar

Lishtenbird

  • 6 июля 2010, 02:02
+
0
Да, но зачем? Трафик ×2, понты веб-мастера +10, оригинальность, необходимость — ноль.
avatar

octoraul

  • 6 июля 2010, 09:34
+
+1
Не стоит недооценивать понты!
avatar

Gravedigger

  • 6 июля 2010, 21:55
+
+1
Извиняюсь за повторный оффтоп, но что это?! 0_о
Похоже на баг от стертой ветки.
avatar

Lishtenbird

  • 9 июля 2010, 16:03
+
0
Погрешности в установке на ливстрит сторонних модификаций.
avatar

Gravedigger

  • 9 июля 2010, 19:26
+
0
И вновь: 12 +18446744073709551611
avatar

Lishtenbird

  • 10 июля 2010, 13:42

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.