Автоматический lightbox для всех картинок на странице

Есть замечательная статья "Автоматический lightbox для всех картинок на странице", но буквально капли удобства использования данному решению не хватает.

И не хватает самую малость, если применить стиль для превью получившейся картинки, ну скажем задать для неё сдвиг влево (style="float: left;"), или сделать отступ (style="margin-left: 10px; margin-right: 10px;"), то все эти стили скрипт просто вырежет. Поэтому немного отредактируем его, а вернее одну строчку из этого скрипта. Смотрим скрипт lighbox_prepair.js с комментариями, строка №29. Заменим её на такую:

$('<a class="fancyLink" rel="gallery" href="'+domain_path+img_real_path+img_real_name+'.'+dot_arr[dot_arr.length-1]+'"><img src="'+imgs[i].src+'" style="'+imgs[i].style.cssText+'" alt="'+imgs[i].alt+'" title="'+imgs[i].title+'" /></a>').insertBefore(imgs[i]); // вставляем перед картинкой ссылку, с классом 'fancybox', на полноразмерную картинку и саму превью картинки

Что же здесь мы изменили?

А изменили мы здесь, вернее добавили вызов для превью картинки стиля, если таковой имеется, а также атрибутов alt и title, тоже в общем то бывает не лишним.

Ну и на последок для особо ленивых, кто хочет получить всё и сразу в одном месте приведу весь скрипт  lighbox_prepair.js с добавками, которые чуть выше были проделаны.

jQuery(document).ready(function()

{

	/*lightbox autothumb*/

	var i,j,z,key = '';

	var imgs=$('img'); //выбираем все картинки со страницы

	var flag=false; //флаг для обозначения нужно ли применять lightbox

	var imgs_count=$('img').length;

	if (imgs_count>0) {  //если на странице есть картинки то работаем

		for(i=0; i<imgs_count; i++){

			var arr=imgs[i].src.split('/'); //делим всю строчку src на части чтобы убрать лишнее

			for (key in arr) {

				if (arr[key] == 'autothumbs.php?img=') {  //если есть у src картинки есть autothumbs.php?img= значит мы на верном пути

					flag=true; //ставим флаг для включения lightbox

					var path_start=key; //позиция в массиве arr с которой начинается путь к картинке

					img_scr=arr[arr.length-1]; //берем имя картинки

					img_name_arr=img_scr.split('_'); //дели его на части чтобы убрать размер добавленный для autothumbs.php

					var img_real_name=''; //составляем имя

					for(j=0; j<img_name_arr.length-2; j++){

						img_real_name=img_real_name+img_name_arr[j];

						if(j<img_name_arr.length-3) img_real_name=img_real_name+'_';

					}


					var img_real_path='',domain_path='';

					var start=parseInt(path_start)+1;

					for(z=start;z<arr.length-1; z++) img_real_path=img_real_path+arr[z]+'/'; //составляем путь к картинке

					for(j=0;j<start-1; j++) domain_path=domain_path+arr[j]+'/'; //составляем имя домена

					dot_arr=img_scr.split('.'); //делим имя картинки на части чтобы вычленить расширение


					$('<a class="fancyLink" rel="gallery" href="'+domain_path+img_real_path+img_real_name+'.'+dot_arr[dot_arr.length-1]+'"><img src="'+imgs[i].src+'" style="'+imgs[i].style.cssText+'" alt="'+imgs[i].alt+'" title="'+imgs[i].title+'" /></a>').insertBefore(imgs[i]); // вставляем перед картинкой ссылку, с классом 'fancybox', на полноразмерную картинку и саму превью картинки

					$(imgs[i]).remove(); // удаляем оригинал превью картинки

				}

			}

		}

	}

	if (flag===true) { //если флаг поставлен, то применяем ко всем ссылкам с классом 'lightBox' скрипт lightbox

		$('a.lightBox').lightBox();

	}

});

04.06.2012