S3.Blog

21 Ноября 2024
A A A   RSS-лента
"Я знаю, что ничего не знаю, но многие не знают и этого". Сократ [?].

JavaScript: Lytebox

Дата последнего изменения: 5 Октября 2009
Метки статьи: Готовые решения, Фиксы & Хаки, JavaScript, © Авторское
Очень популярным стало открытие картинки на сайте в слое поверх всего, не открывая дополнительных окон. Удобно, красиво, быстро, в общем супер. Родоначальником был Lightbox, сейчас он называется LightBox2 . Всё в нем хорошо, кроме одного - что бы LightBox заработал надо дополнительно подключить библиотеки prototype.js и scriptaculous.js , а я большой любитель автономных скриптов all-in-one, которые умеют делать то же, что и матёрые jQuery и Prototype собратья, но состоящие из одного файла.


Похожие материалы:




Сергей (гость) • ответить
Отлично! Спасибо огромное. Только подскажите "чайнику": как изменить цветовую гамму. У меня в Мозиле - раскрывается серая, а Explorer и Opera - голубая! Мне везде серая нужна! Где и что "подкрутить" надо?
С уважением,
Александрответить
в файле lytebox.js 34ая строчка:
function LyteBox() {
/*** Start Global Configuration ***/
this.theme = 'blue'; // themes: grey (default), red, green, blue, gold

меняете blue на grey и будет вам счастье
Сергей (гость) • ответить
...Понял!!! Все впо ссылке configurations.html на этой странице (это я для таких же "чайников" отписал)
Но в Мозиле ваша замечательная добавка this.navType = 3 - не появляется!!! А жаль... Может опять я чего не длглняю?
С уважением
Александрответить
В примерах посмотрите на "Группа изображений"
там как раз navType=3 - снизу prev/next , а если подвести мышь к левой или правой стороне просматриваемого изображения, то появится еще и там навигация
Сергей (гость) • ответить
Ваша правда! Только, в моем случае (я использую iframe) не срабатывает.
Если есть авторский интерес к недочетам вашего замечательного продукта - могу прислать ссылку (по E-mail) на мою "больную" страничку. Скажите куда?
Если нет - и на том огромное спасибо! Очень полезная штука получилась!
С уважением
Александрответить
ну во-первых продукт не мой - я всего лишь пофиксил несколько недоделок
а во-вторых: я не доктор, но посмотреть могу
пиши сюда: s3 (=собака=) smtp.ru
Сергей (гость) • ответить
Спасибо!
А как сделать, чтобы в режиме rel="lyteshow[vacation]" . при открытии картинки Слайдшоу не запускалось автоматически, а только после нажатия Play? Вот тогда, наверное и будет счастье
Александрответить
файл lytebox.js, строка 381

Если пользователь кликнул не на первую картинку слайда, то в слайдшоу автоматически поставить паузу, иначе начать показывать слайды
this.isPaused = (this.slideNum != 0 ? true : false);

замените её на эту:
this.isPaused = true;

теперь при клике на любую картинку слайдшоу не запустится, пока пользователь не нажмет на Play
Валерий (гость) • ответить
Приведите пример (превьюшка) 80х60 при нажатии запускался lytebox а то по примеру
<a href="images/image-1.jpg" rel="lytebox" title="Image Description">Image #1</a>
только как ссылка.
Александрответить
А разве у вас не работают примеры из раздела "Примеры"?
grin (гость) • ответить
Спасибо... наконец-то нашел)))
!!! Неужели так много писанины, для простого показа картинок???(это я про файл lytebox.js,)
Дмитрий (гость) • ответить
подскажите пожалуйста как поменять цвет фона, надписи и т.д? стоит синий, а нужен черный.
Александрответить
если просто на черный, то в lytebox.js в самом начале есть строка:
this.theme = 'blue'; // themes: grey (default), red, green, blue, gold

вот меняете там значение на одно из предложенных.
а если хотите с изысками, что б было не похоже на всех остальных, то редактируйте файл стилей lytebox.css
Дмитрий (гость) • ответить
Подскажите почему не появляется крестик закрытия? В нижнем правом углу ничего нету, хотя при наведении курсор активируется. Спасибо.
Александрответить
начнем с того - какой у вас браузер? проверил в ие7, ие8 и фф - все ок.
второй вопрос: банерорезалки, антивирусы со всякими спам-фильтрами и т.д. стоят? А что будет если их отключить? Крестик появится?
Борис (гость) • ответить
У меня, допустим, ие8, но креста в правом нижнем нет... Отключить бановырезалки, спам фильтры и т.д.? Хм... Почему-то на Вашем сайте работает без отключения, а у меня на копьютере (в локальном режиме) надо отключать? А как я буду об этом посетителей своего сайта предупреждать? - Мол зашедшие ко мне на сайт, просьба колющие, режущие и прочие интсрументы отключить!
Александрответить
а у меня на копьютере (в локальном режиме)

скорее всего у вас не верные пути на картинки, которые прописываются в файле стилей lytebox.css
tylerfgответить
Помогите, пожалуйста: у меня в index.html вызывается несколько фреймов, в центральном фрейме само содержание. Я пробовал прописывать <script type=... src="lytebox.js">...<link ... href="lytebox.css" ... />
и в index'е, и только во фрейме (top.html), и и там, и там, но у меня lytebox не пашет, а открывает картинку во весь top.html.
В джумле, конечно, никаких проблем нет с лайтбоксом (там сайт без фреймов), а вот тут незадача.(
tylerfgответить
и еще: на джумле у меня часы на javascript используются (Clock3D.class), в общем, открывающийся лайтбокс их не затеняют и они выводятся прямо поверх картинки. Можно ли как-то решить подобную проблему?
Александрответить
Извините, но я не совсем понял суть проблемы с ифреймом.
напишите мне на емейл s3 [гав] smtp.ru - обсудим более подробно
Евгений (гость) • ответить
Александр, добрый день. Всегда были вопросы к этому скрипту, хотя использую только его!
1) Подскажите как убрать толщину белой рамки в 12 пикселов? this.borderSize = 12; так чтобы вокруг выдаваемого изображения не было белой рамки или она была бы равна 0, а внизу оставалась белая полоска для надписей и кнопки закрыть. автор советует при изменении этой опции лезть в цсс и что-то соответственно менять, но что? где точно? можно примером?
2) Можно ли перенести нижнюю белую рамку с надписями подсказок и кнопкой закрыть противоположно наверх? Если да, то прошу оочень подробно рассказать как.
3) Можно ли всплывающему окну, которое всплывает сейчас, без изменений о которых я писал выше, поставить фон. Вообще фон на весь размер окна. Вместо белых полей чтобы был установленный мной фон либо в цсс либо фон картинкой. Поподробнее плиииз!
Александрответить
1. lytebox.css
#lbImageContainer, #lbIframeContainer { padding: 10px; }

2. lytebox.js
найти: objLytebox.appendChild(objDetailsContainer);
заменить на: objLytebox.insertBefore(objDetailsContainer, objLytebox.firstChild);
и немного подкрутить lytebox.css для #lbDetailsContainer

3. lytebox.css
#lbOverlay { background-image: url(http://путь-к-картинке.jpg); }
Евгений (гость) • ответить
Александр, ну супер, большое спасибо! Буду пробовать... Если все сработает - будет на сайте очень гармонично смотреться лийтбокс со всеми этими дополнениями. (будут вопросы - напишу)
Евгений (гость) • ответить
Кстати, сразу есть вопрос, который давно меня интересует, тоже очень. Хотелось бы этот лийтбокс использовать вместо модальных окон на сайет. К примеру, только на главной странице, время от времени проводятся акции с сезонными и праздничными скидками. Как организовать через лийтбокс его всплывание через секунд 5-7, где внутри всплывшего окошка будет вставлена акционная хтмлстраница или изображение. Чтобы пользователь потом просто его закрыл - в общем как везде, только чтобы через наш любимый лайтбокс все это прошло. (желательно чтобы это срабатывало и на ИЕ 6 так же как в хроме 258 )
Александрответить
Самое простое - это так:
внутри своего html размести ссылку из примера в статье, и назначь ей id, например так:
<a id="test_link" href="https://yahoo.com" rel="lyteframe" rev="width: 400px; height: 300px;">Yahoo</a>


можно ссылку спрятать назначив стиль: display: none

а в самом низу страницы размести этот код:
<script type="text/javascript">
setTimeout(function(){
document.getElementById('test_link').onclick();
}, 5000);
</script>


через 5 секунд после загрузки страницы будет открыт фрейм с яху-сайтом
так же можно вместо ссылки на яху указывать изображения и всё остальное, что описано в статье.
Евгений (гость) • ответить
АААААААААААА, вот это тоже оочень круто! Спасибо, буду пробовать оба варианта! Как же великолепно, что есть ваш сайт и, что вы отвечаете на такие нестандартные вопросы подробно с примером! Спасибо еще раз. Уверен, что многим тоже будет полезно все это знать, просто они не думали, что можно свои догадки и пожелания спросить и получить исчерпывающий ответ.
- Маленький отчет по предыдущим вопросам и ответам: уже перенес наверх панельку с кнопкой закрыть и описанием и убрал внешнюю рамку. Совсем другой вид, совсем другое настроение от всплывающего окошка. Пока не могу нарадоваться на это изменение, остальные буду примерять и применять, как немного улягутся личные страсти по первому "достижению"! все пункты мне очень полезны и все их, я точно знаю, что буду применять в зависимости от сайтов, а так же добавлю в уже готовые, на которых мне эти изменения "виделись" как очень нужные для гармоничности.
5 сайту, 5 автору-модератору в дневник, с занесением в журнал. )
Александрответить
Спасибо и удачи!
Евгений (гость) • ответить
РРРРРРРРРРРААботает!!!!!!!!!!
Евгений (гость) • ответить
Привет! Вот еще мысль в голову забралась. Когда на мобильном смотришь группу изображений, не всегда понятно, что можно листать дальше. и только либо нажав на картинку справа, либо увидев мелкую надпись "изображение 1 из 6" можно понять что можно листать. Как осуществить постоянное показывание срелок-картинок "пред след", а не появление по наведению курсором? Особено если попадаешь среди простых увеличений картинки на группу, которая может и не видна просто на странице - можно и пропустить интересное. (недавно сбрасывал еще почту, там тоже интересный вопрос. потом его здесь надо будет осветить тоже)
Александрответить
lytebox.css
ищи
#lbNext { width: 49%; height: 100%; background: transparent url(/img/lytebox/blank.gif) no-repeat; display: block; right: 0; float: right; }
#lbNext.grey:hover, #lbNext.grey:visited:hover { background: url(/img/lytebox/next_grey.gif) right 15% no-repeat; }
#lbNext.red:hover, #lbNext.red:visited:hover { background: url(/img/lytebox/next_red.gif) right 15% no-repeat; }
#lbNext.green:hover, #lbNext.green:visited:hover { background: url(/img/lytebox/next_green.gif) right 15% no-repeat; }
#lbNext.blue, #lbNext.blue:hover, #lbNext.blue:visited:hover { background: url(/img/lytebox/next_blue.gif) right 15% no-repeat; }
#lbNext.gold:hover, #lbNext.gold:visited:hover { background: url(/img/lytebox/next_gold.gif) right 15% no-repeat; }


и перед #lbNext.xxxxxx:hover добавь #lbNext.xxxxx
например:
#lbNext.grey, #lbNext.grey:hover, #lbNext.grey:visited:hover {


тоже самое для #lbPrev
Евгений (гость) • ответить
Александр, спасибо!. Да, так получилось! Стрелки висят, не попадают. Уже немного понимаю зачем эти добавки в #lbNext и #lbPrev. Это чтобы указать, что и в состоянии покоя (без ховеров, онпрессов, онрелизов, онмаусоверов и визитедов) показывать фоном в этом месте стрелку. Спасибо еще раз!. Для просмотра группы изображений с телефона постоянное отображение стрелок - незаменимая штука!
Евгений (гость) • ответить
я схитрил чуть, сделал второй цсс с этими добавками. оригинал в запасе

 
 
  Имя *:   Решите пример *: =
 
Полужирный Курсив Подчеркнутый Перечеркнутый
 
Вставить изображение Сделать цитатой Вставить ссылку Вставить код

Вставить смайл
 
 

 



© S3.Blog: Если критикуешь, не предлагая решения проблемы, то ты становишься частью этой проблемы.