07.10.2011, 11:42
|
Новичок на форуме
|
|
Регистрация: 30.09.2011
Сообщений: 2
|
|
Комментарии под фотографиями
Добрый день.
Задался целью добавить комментария Facebook API под фото-галлерею на FancyBox или LightBox, идея приходит только одна - генерировать на php отдельные iFrame страницы, но php для меня как луна. Возможно кто-то уже делал подобное или подскажет что-то.
Заранее спасибо.
|
|
12.10.2011, 13:54
|
Аспирант
|
|
Регистрация: 29.04.2010
Сообщений: 51
|
|
Для меня наоборот php - земля.
Не пойму как сделать.
Скачал примеры по fancybox, сделал как с картинками, но вместо картинки вставляю в ссылку путь к php файлу и передаю параметр
image.php?id_image=10
В файле image.php забираю параметр, и вывожу на экран картинку <img src="'.$_GET['id_image'].'.jpg">
Вот в самом простом варианте так.
Все выводит, все хорошо, Но проблема в размере окна fancybox.
слишком высокие картинки не умещаются в область отведенную для fancybox и появляется полоса прокрутки в окне fancybox.
Мне нужно, чтобы высота fancybox была равна высоте картинки + 100 px, для вывода комментариев под картинкой. Как это сделать, ума не приложу.
Я думаю понятно объяснил.
Вот настройки fancybox:
<script type="text/javascript">
$(document).ready(function(e) {
$("a.gallery2").fancybox(
{
"padding" : 20, // отступ контента от краев окна
"zoomOpacity" : true, // изменение прозрачности контента во время анимации (по умолчанию false)
"zoomSpeedIn" : 500, // скорость анимации в мс при увеличении фото (по умолчанию 0)
"zoomSpeedOut" :800, // скорость анимации в мс при уменьшении фото (по умолчанию 0)
"zoomSpeedChange" : 1000, // скорость анимации в мс при смене фото (по умолчанию 0)
"frameWidth" : screen.width-350, // ширина окна, px (425px - по умолчанию)
"overlayShow" : true, // если true затеняят страницу под всплывающим окном. (по умолчанию true). Цвет задается в jquery.fancybox.css - div#fancy_overlay
"overlayOpacity" : 0.8, // Прозрачность затенения (0.3 по умолчанию)
"hideOnContentClick" :false, // Если TRUE закрывает окно по клику по любой его точке (кроме элементов навигации). Поумолчанию TRUE
"centerOnScroll" : false // Если TRUE окно центрируется на экране, когда пользователь прокручивает страницу
});
});
</script>
вот так вывожу картинки:
<a class="gallery2" href="image.php?id=900"><img src="путь до привьюшки"></a>
Помогите плиз, бъюсь второй день ((
Последний раз редактировалось neon_tmn, 12.10.2011 в 13:57.
|
|
12.10.2011, 14:21
|
Аспирант
|
|
Регистрация: 29.04.2010
Сообщений: 51
|
|
В общем мне нужно заставить fancybox растягиваться по высоте в зависимости от того, что у менаходится в php файле. Либо, каким-то, не знаю каким способов передавать в свойство frameHeight значение высоты картинки+100. Высоту кратинки я могу получить в php, либо с помощью javascript (но только после полной загруки картинки). или в ссылке для каждого изображения передавать высоту и получать ее в этом же скрипте, например так:
<a class="gallery2" href="image.php?id=900&height=500"><img src="путь до привьюшки"></a>
<a class="gallery2" href="image.php?id=905&height=820"><img src="путь до привьюшки"></a>
<a class="gallery2" href="image.php?id=804&height=1250"><img src="путь до привьюшки"></a>
Вот как то так. В принципе последний вариант с размером в ссылке я думаю простой и легко реализуемый, но опять же у меня не получается.
|
|
13.10.2011, 06:53
|
Аспирант
|
|
Регистрация: 29.04.2010
Сообщений: 51
|
|
Если делаю только так
$('a.gallery2').click(function () {alert('fff');})
Тогда при нажатии на картинку у меня появляется алерт fff, но не появляется картинка, вообще больше ничего не происходит.
Если делаю только так:
$("a.gallery2").fancybox(
{
"padding" : 20, // отступ контента от краев окна
"zoomOpacity" : true, // изменение прозрачности контента во время анимации (по умолчанию false)
"zoomSpeedIn" : 500, // скорость анимации в мс при увеличении фото (по умолчанию 0)
"zoomSpeedOut" :800, // скорость анимации в мс при уменьшении фото (по умолчанию 0)
"zoomSpeedChange" : 1000, // скорость анимации в мс при смене фото (по умолчанию 0)
"frameWidth" : screen.width-350, // ширина окна, px (425px - по умолчанию)
"frameHeight" : 333,
"overlayShow" : true, // если true затеняят страницу под всплывающим окном. (по умолчанию true). Цвет задается в jquery.fancybox.css - div#fancy_overlay
"overlayOpacity" : 0.8, // Прозрачность затенения (0.3 по умолчанию)
"hideOnContentClick" :false, // Если TRUE закрывает окно по клику по любой его точке (кроме элементов навигации). Поумолчанию TRUE
"centerOnScroll" : false // Если TRUE окно центрируется на экране, когда пользователь прокручивает страницу
});
Тогда само собой загружается fancybox и картинка появляется в новом окне.
Если делаю все вместе:
$('a.gallery2').click(function () {alert('fff');})
$("a.gallery2").fancybox(
{
"padding" : 20, // отступ контента от краев окна
"zoomOpacity" : true, // изменение прозрачности контента во время анимации (по умолчанию false)
"zoomSpeedIn" : 500, // скорость анимации в мс при увеличении фото (по умолчанию 0)
"zoomSpeedOut" :800, // скорость анимации в мс при уменьшении фото (по умолчанию 0)
"zoomSpeedChange" : 1000, // скорость анимации в мс при смене фото (по умолчанию 0)
"frameWidth" : screen.width-350, // ширина окна, px (425px - по умолчанию)
"frameHeight" : 333,
"overlayShow" : true, // если true затеняят страницу под всплывающим окном. (по умолчанию true). Цвет задается в jquery.fancybox.css - div#fancy_overlay
"overlayOpacity" : 0.8, // Прозрачность затенения (0.3 по умолчанию)
"hideOnContentClick" :false, // Если TRUE закрывает окно по клику по любой его точке (кроме элементов навигации). Поумолчанию TRUE
"centerOnScroll" : false // Если TRUE окно центрируется на экране, когда пользователь прокручивает страницу
});
Тогда алерт не появляется, загружается только картинка в новом окне fancybox.
Так как мне из click передать в значение высоты:
$("a.gallery2").fancybox(
{
......
"frameHeight" : значение полученное из click-a,
......
});
Сделать бы как то так например:
$('a.gallery2').click(function () {
var height;
height = 500;
return height;
})
но как мне получить эту функцию без click потом ума не приложу.
Последний раз редактировалось neon_tmn, 13.10.2011 в 06:57.
|
|
13.10.2011, 07:38
|
Аспирант
|
|
Регистрация: 29.04.2010
Сообщений: 51
|
|
Или может если кто знаком с плагином этим, подскажите как сделать высоту резиновую?
|
|
16.10.2011, 11:09
|
Аспирант
|
|
Регистрация: 29.04.2010
Сообщений: 51
|
|
И так, пришел к следующему:
function parseGetParams() {var $_GET = {};var link; link= $('a.gallery2').attr("href"); var __GET = link.split("&"); for(var i=0; i<__GET.length; i++) {var getVar = __GET[i].split("=");$_GET[getVar[0]] = typeof(getVar[1])=="undefined" ? "" : getVar[1];}return $_GET;}
function ht()
{
var GETArr = parseGetParams();
s=GETArr['height']*1+350;
return s;
}
$("a.gallery2").fancybox(
{
"padding" : 20, // отступ контента от краев окна
"zoomOpacity" : true, // изменение прозрачности контента во время анимации (по умолчанию false)
"zoomSpeedIn" : 500, // скорость анимации в мс при увеличении фото (по умолчанию 0)
"zoomSpeedOut" :800, // скорость анимации в мс при уменьшении фото (по умолчанию 0)
"zoomSpeedChange" : 1000, // скорость анимации в мс при смене фото (по умолчанию 0)
"frameWidth" : screen.width-350, // ширина окна, px (425px - по умолчанию)
"overlayShow" : true, // если true затеняят страницу под всплывающим окном. (по умолчанию true). Цвет задается в jquery.fancybox.css - div#fancy_overlay
"overlayOpacity" : 0.8, // Прозрачность затенения (0.3 по умолчанию)
"hideOnContentClick" :false, // Если TRUE закрывает окно по клику по любой его точке (кроме элементов навигации). Поумолчанию TRUE
"centerOnScroll" : false, // Если TRUE окно центрируется на экране, когда пользователь прокручивает страницу
"frameHeight" : ht()
});
Теперь осталось две проблемы.
1. в самую первую функцию в link= $('a.gallery2').attr("href"); у меня всегда попадает только адрес первой ссылки. То есть на какую ссылку бы я ни нажал, всегда будет адрес первой ссылки. А мне нужно получить адрес нажатой ссылкит.
2. Ссылки вида:
<a class="gallery2" href="/script/jqp.php?id=1&height=550">1</a>
Выдают адрес, хоть и самой первой ссылки но все же выдают.
А ссылки вида:
<a class="gallery2" href="/script/jqp.php?id=1&height=550"><img src="/image.jpg"></a>
Выдают ошибку, типа нету адреса. что-то вроде undefinded.
Осталось совсем чуть чуть до решения вопроса, помогите пожалуйста. Тут даже вопрос уже не по fancybox, а чистый javascript.
Последний раз редактировалось neon_tmn, 16.10.2011 в 14:56.
|
|
17.10.2011, 15:16
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
1. Это потому что скрипт отрабатывает один раз, при загрузке страницы, а не каждый раз при клике на фотке.
Слайдерописатели в основном пишут код для себя и поддерживать или расширять его тяжело, в виду его малой вменяемости.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
|
|