Вот идея, которая, на мой взгляд, будет довольно простой, даже с «простым» JavaScript (но намного проще с jQuery):
- Включите полное изображение на страницу в стиле
visibility : hidden
внутри контейнера div такого же размера. - Используйте jQuery, чтобы создать сетку из маленьких непрозрачных div, абсолютно расположенных внутри того же контейнера div, с
z-index
, который помещает их над изображением, т. е. закрываяобраз.При их создании сохраняйте ссылку на каждый элемент в массиве. - Установите для изображения значение
visibility : "visible"
- Произвольно отсортируйте вышеупомянутый массив и затем выполните цикл по нему с помощью
setTimeout
или setInterval
удаляя div на каждой итерации для постепенного раскрытия изображения.
Конечно, преимущество вышеизложенного состоит в том, что он будет работать с любым изображением без необходимости его нарезки, и учитывая, что вы упомянули 500срезами у вас не будет 500 http запросов для загрузки всех фрагментов изображения.Если вы хотите, чтобы каждое отдельное раскрытие фрагмента имело небольшой анимационный эффект, вы можете скрыть его с помощью jQuery .slideUp()
или чего-то подобного.
С другой стороны, вам может понравиться, чтобы каждый фрагмент изображения появлялся с разных сторон.направления или что-то.Для этого вы все равно можете создать сетку элементов div, но установите для каждого фон (CSS) своего изображения с соответствующими значениями смещения, чтобы каждый из них составлял отдельный фрагмент «головоломки».
РЕДАКТИРОВАТЬ: Iзабыл упомянуть, что, вероятно, уже есть плагин jQuery (если не множество плагинов), который делает подобные вещи.Я не знаю о конкретном, но вы можете заняться поиском.Вышесказанное - это только первое, что пришло в голову как способ его кодирования с нуля ...
РЕДАКТИРОВАТЬ 2: Рабочая (вроде) демонстрационная версия: http://jsfiddle.net/sEE8R/1/(Это просто какой-то хитрый код, который я безболезненно сложил, основываясь на алгоритме выше. Вместо изображения я использовал красный div, который покрывается зелеными div, которые удаляются случайным образом.)