Ars Longa, Vita Brevis

Mar 10, 2008

ProtoBox: LightBox 2 reloaded :-)

Рубрика: JavaScript
Tags: , , , ,
Vladimir @ 03:28
RSS 2.0

Новая версия известного LightBox 2 с большими возможностями

Я думаю, что многие видели LightBox 2 в действии. Но вот парадокс: заказчикам/пользователям он нравится (ох уж эти дешевые эффекты :-) ), а вот многие программисты терпеть его не могут. Мне пришлось несколько раз столкнуться с LightBox (просто интегрировать его в приложение, написанное индусами). Но один раз мне понадобилось модифицировать кое-какое поведение скрипта, и я залез внутрь...
Из того, что мне ужасно не понравилось: LightBox использует библиотеку Prototype, но написан совершенно не в ее стиле - больше напоминает хаотичный набор функций. Вторая неприятная особенность - повторное изобретение велосипеда: многие функции, существующие в Prototype, зачем-то были написаны заново :-) Я, конечно, понимаю, что в предыдущих версиях Prototype таких функций, возможно, не было, но ведь прогресс не стоит на месте :-). Разметка, которую генерирует LightBox тоже очень несовершенна —видимо, Lokesh Dhakar не очень дружит с CSS. Но самое неприятное: использование обработчиков событий из DOM0 (например, element.onclick = function() { }). Интересно, для чего Prototype реализует Event.observe/Event.stopObserving? Ведь использование методов DOM2 для работы с событиями более удобно (и в плане расширяемости скрипта)!

Есть и мелкие баги: известно, что в Internet Explorer 6 не очень просто перекрыть <select> каким-нибудь HTML-элементом (по умолчанию <select> все равно будет сверху). Для этого в LightBox реализованы функции hideSelectBoxes()/showSelectBoxes() (и аналогичные для элементов <object> и <embed>). Казалось бы, все хорошо, но... проблемы появились, когда на странице присутствовали элементы <select> с visibility: hidden. LightBox их открыл. Аналогично со скрытыми элементами <object>.

Казалось бы, что это всё мелочи… Согласен, но когда таких мелочей очень много, и для добавления простой функциональности приходится переписывать большие куски кода, это очень раздражает. Пришлось переписать :-)

Из новой функциональности:

  • возможность перетаскивания окна с картинкой (из разряда "дешевые эффекты"; для этого требуется наличие dragdrop.js из Scriptaculous);
  • возможность прсмотра изображений по кольцу (после последнего изображения идёт первое);
  • возможность использования существующего оверлея (тот самый затемнённый экран);
  • возможность задания максимальной высоты и ширины изображения (пока в пикселях);
  • возможность защиты изображения путём наложения прозрачного GIF'а сверху (ну очень уж заказчик настаивал);
  • скрывание <object>/<embed> стало опциональным.

Улучшения по сравнению с оригиналом:

  • упрощена разметка;
  • код полностью переписан;
  • вместо ID используются классы;
  • отпала необходимость скрывать <select> для IE6.

Еще одно достоинство — код полностью совместим с оригинальным LightBox 2.

Пример использования:





    


    
    
    
    
    
    





    
    
    
    



Скачать ProtoBox.

Связанные записи

Комментарии к статье "ProtoBox: LightBox 2 reloaded :-)" (6) »

  1. [March 13, 2008 19:11] Tigress:

    Кстати, очень нужная и хорошая вещь! Автору большое спасибо! :-)

    #1
  2. #2
  3. [April 11, 2008 12:16] дмитрий:

    интересный скрипт, но к сожалению скачать не получается(

    #3
  4. [April 11, 2008 13:55] Vladimir:

    Дмитрий, очень странно, у меня прямая ссылка работает: http://static2.sjinks.org.ua:8080/protobox.zip.

    Отправил Вам архив по email.

    #4
  5. [April 23, 2008 19:31] Paul_K:

    Спасибо! Решились многие проблемы разом! Очень нужные фиксы, плагин замечательный!

    #5
  6. [April 23, 2008 20:03] Vladimir:

    Спасибо за отзыв! Кстати, есть версия ProtoBox и для WordPress, если вдруг нужно.

    #6

RSS feed for comments on this post. TrackBack URL

Оставить комментарий к записи "ProtoBox: LightBox 2 reloaded :-)"

Изображения должны быть включены!

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, Вы выражаете своё согласие с Правилами комментирования.

Subscribe without commenting