Сейчас: 08:40:03   26-го апреля 2024 г.
UsefulScript.ruСкриптыГрафикаСлайд-шоу картинок из папки
47
155

Слайд-шоу всех изображений из папки

Раньше мы уже рассматривали такие скрипты как Плавная смена изображений на jQuery и Скрипт выбора случайного изображения из указанных папок.


Теперь мы хотим предложить Вам скрипт, в котором были объединены два рассмотренных ранее скрипта. Сделано это было для того, чтобы не прописывать вручную все необходимые для слайд-шоу изображения, а загружать их автоматически из указанной папки.


Пример работы получившегося скрипта Вы можете наблюдать чуть ниже.



Для того чтобы создать на своем сайте такое же слайд-шоу из изображений, в указанной папке, Вам понадобится подключить библиотеку jQuery:

JavaScript код:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">
</script>

Далее в том месте Вашей странички, где Вы планируете показывать слайд-шоу, добавьте следующий код:

HTML код:
<div style="height: 20px; text-align: center;">
 <
img src="image/time/colon.gif" alt="" id="slide_show">
</
div>

Где image/time/colon.gif - URL адрес первого показываемого изображения. Это необходимо для того, чтобы в то время, пока грузится Ваша страничка (и скрипт соответственно тоже), на экране первоначально было изображение.


Как Вы могли заметить, изображение мы разместили внутри блока DIV высотой в 20 пикселей. Это сделано для того, чтобы при смене изображений, когда первое изображение пропало, а второе еще не появилось, не происходило "скачка" содержимого странички вверх. Это происходит из-за того, что в момент пропадания изображение получает свойство display: none; и его высота на короткий промежуток времени становится равной нулю. Из-за этого происходит сдвиг всего контента страницы на размер изображения вверх, а после появления изображения его размер вновь изменяется и контент странички сдвигается вниз.


Теперь Вам остается только разместить наш скрипт смены изображений где-нибудь ближе к концу странички, который найдет все изображения в указанной папке и будет менять их по очереди. Для этого скопируйте данный код:

JavaScript код:
<script type="text/javascript">
<?
php
$images 
= array();
$folder 'image/time/';
$array_to_js 'var imgs=[';
$all_files scandir($folder);
for (
$i=2$i<=sizeof($all_files)-1$i++) {
    
$array_to_js.='"'.$folder.$all_files[$i].'",';
}
echo 
substr($array_to_js,0,-1).'];';
?>

var 
0;
var 
time 800;
play setInterval("chgImg()"3000);

function 
chgImg() {
$(
'#slide_show').fadeOut(time, function() {
  $(
this).attr('src'imgs[n]).fadeIn(time);
});

n++;
if (
n>=imgs.length0;
}
</script>

Как видите, сам код действительно получился очень маленьким и не содержит кучи излишних функций. Но при таком небольшом коде есть и свои маленькие минусы. Например, все изображения должны быть в одной папке (подпапки не поддерживаются) и в папке с изображениями не должно быть других файлов.

Дата создания: 16:56:30 13.04.2013 г.
Дата обновления: 19:51:15 26.08.2013 г.
Посещений: 30476 раз(а).

Комментарии посетителей (49 шт.):
Sergey1917
2
# 812
(12:49:18  21.04.2013 г.)

Два слайд-шоу на одной странице, в разных местах, будут работать?
Ответить

Administrator
1
# 814
(20:33:11  22.04.2013 г.)

Если немного "подкрутить" скрипт, то будут. То, насколько придется модифицировать скрипт, зависит от того, должны ли отличаться папки с изображениями, интервалы смены изображений и т.д.
Ответить

Sergey1917
0
# 837
(21:56:34  11.05.2013 г.)

А как все-таки запустить два слайд-шоу? Одно, например, в шапке сайта, другое - в правой колонке. Естественно, что папки с картинками будут разными и интервал смены тоже разный.
Ответить

Administrator
1
# 839
(13:12:01  12.05.2013 г.)

Для этого придется скопировать повторно JavaScript код, в котором нужно изменить имена переменных, чтобы избежать конфликтов.
Подробнее на нашем форуме - http://usefulscript.ru/forum/showthread.php?tid=203
Ответить

Эдуард
1
# 822
(01:21:16  04.05.2013 г.)

Да, хороший скрипт. Мне очень понравился! Скажите, пожалуйста, что нужно прописать, чтоб выходило изображение случайным образом?
Сколько раз обновлял у себя на сайте страничку, постоянно выходит изображение по списку от A,B....Z...
За ранее благодарен за помощь!
Ответить

Administrator
0
# 823
(16:05:43  04.05.2013 г.)

Для начала удалите следующие строки:
var n = 0;
n++;
if (n>=imgs.length) n = 0;
А строчку $(this).attr('src', imgs[n]).fadeIn(time); замените на:
$(this).attr('src', imgs[Math.floor(Math.random()*(imgs.length-1))+1]).fadeIn(time);
Ответить

Эдуард
0
# 824
(19:37:07  04.05.2013 г.)

Доброго вечера! Спасибо вам большое за помощь! Да, действительно сейчас картинки выходят случайным образом! Здорово!
Ответить

Old_Hunter
1
# 1064
(12:56:43  26.08.2013 г.)

Спасибо, все работает, только при смене картинок страница прокручивается вверх, прыжок такой получается. Как это исправить?
Ответить

Administrator
-1
# 1065
(19:39:21  26.08.2013 г.)

Это происходит из-за того, что когда первая картинка гаснет, то она получает свойство display: none; Следовательно, размер изображения становится равным нулю и страничка сдвигается вверх. Далее появляется новая картинка, которая уже имеет размер. Отсюда и скачек.
Для того чтобы избавиться от "прыжков" рекомендуем Вам разместить изображение с id="slide_show" внутри какого-нибудь элемента с заданной высотой (например, <div style="height: 50px;">).
P.S. Скрипт в теме немного подкорректировал для устранения данного недостатка.
Ответить

sergey37
0
# 1128
(10:42:47  15.09.2013 г.)

А на пхп это как то можно перевести? У меня пара сайтов на инстантсмс, так, там при подключении любой сторонней джава, конфликты начинаются. Хотел кнопки как у вас поставить (вверх и вниз) как поставил кнопки, сразу перестала работать переписка между пользователями.
Ответить

Administrator
0
# 1131
(12:41:50  15.09.2013 г.)

На одном PHP работать не будет, т.к. PHP - серверный язык, а JavaScript выполняется непосредственно в браузере пользователя.
Чтобы не было конфликтов используйте jQuery.noConflict();, подробнее.
Ответить

Александр
0
# 1554
(19:34:45  30.03.2014 г.)

Отличный скрипт, ни с чем у меня не конфликтует. Большое спасибо!
Может подскажите, как его доработать, чтобы появились стрелочки, которые можно перещелкивать для ускоренного перехода между страницами? Заранее спасибо!
Ответить

Administrator
0
# 1556
(20:00:05  30.03.2014 г.)

Вот код простой кнопки, которая позволяет перейти к следующему изображению:
<input type="submit" value="Дальше" onclick="chgImg()">
Ответить

Артем
0
# 1758
(02:04:37  22.07.2014 г.)

Добрый день! На сколько сложно, и возможно ли в принципе, реализовать эффект смены картинок?
Ответить

Administrator
0
# 1759
(20:29:20  22.07.2014 г.)

А разве сейчас не реализован эффект смены картинок? Или Вы имеете ввиду свой собственный эффект смены? К сожалению, стандартный набор функций по эффектам смены изображений на jQuery не богат, так что, скорее всего, придется использовать какой-нибудь плагин.
Ответить

Артем
0
# 1769
(23:09:35  27.07.2014 г.)

Эффект смены картинок, конечно же, реализован. Если я Вас правильно понял, то для смены картинок с другим эффектом необходимо подключить какой-нибудь плагин. Если вас не затруднит, можете привести такой пример.
Ответить

Administrator
0
# 1770
(23:25:17  27.07.2014 г.)

Например, поищите по запросу "jquery cycle.js" и найдете отличный плагин с большим количеством эффектов смены изображений.
Ответить

Артем
0
# 1777
(18:23:23  29.07.2014 г.)

Добрый день! Нужна помощь, чтобы "подружить" Ваш модуль и слайд jQuery Cycle Plugin. Это код смены изображения для плагига:
$(document).ready(function() {
$('#slide').cycle({fx:'scrollLeft', speed:1000, timeout:2000});
});
Куда мне его прописать, чтобы он заработал с Вашим скриптом?
P.S. По отдельности они работают, я проверял.
Ответить

Administrator
0
# 1779
(23:14:02  29.07.2014 г.)

Для этого стоит оставить только ту часть скрипта, которая отвечает за поиск и вывод всех изображений из папки. Например, так:
<div id="slide">
<?php
$folder = 'image/';
$all_files = scandir($folder);
for ($i=2; $i<=sizeof($all_files)-1; $i++) echo '<img src="'.$folder.$all_files[$i].'"/>';
?>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#slide').cycle({fx:'scrollLeft', speed:1000, timeout:2000});
});
</script>
Ответить

Георгий
0
# 1775
(10:43:53  29.07.2014 г.)

Здравствуйте!
1. Подскажите, если картинки из определенной папки разного размера (например, 750х466 и 800х600) будет ли работать скрипт?
2. Как адаптировать скрипт под большие изображения и разного размера?
Заранее благодарю!
Ответить

Administrator
0
# 1778
(22:37:40  29.07.2014 г.)

Скрипт будет работать независимо от размеров изображений. Что Вы подразумеваете под адаптацией скрипта под большие изображения?
Если Вам нужно сделать все изображения одинакового размера, то просто укажите после id="slide_show" требуемый размер (например, width=800).
Если Вам необходимо уменьшить большие изображения до какого-то значения, а меленькие показывать без изменений, то заменить HTML код из темы на такой:
<div style="width: 800px; height: 600px; text-align: center;">
<img style="max-width: 800px; max-height: 600px; src="image/img.png" alt="" id="slide_show">
</div>
И тогда изображения более 800х600 будут отображаться внутри блока DIV с размером 800х600, а более маленькие - такими, какие есть.
Ответить

Аркадий
0
# 1812
(17:21:13  19.08.2014 г.)

Здравствуйте, огромное спасибо за скрипт. А как сделать, чтобы изображения менялись по нажатию на кнопку, но можно было включить функцию слайд-шоу? Как кнопку сделать понимаю <input type="submit" value="Дальше" onclick="chgImg()">. А как выключить-включить слайд-шоу?
Ответить

Administrator
0
# 1814
(20:51:14  19.08.2014 г.)

Для начала удалите строчку автостарта слайд-шоу: play=setInterval("chgImg()", 3000);
Для включения/выключения функции слайд-шоу используйте код:
<input type="submit" value="Запустить" onclick="play=setInterval('chgImg()', 3000)">
<input type="submit" value="Остановить" onclick="clearInterval(play)">
Ответить

Иван
0
# 1939
(03:48:41  03.10.2014 г.)

Доброго времени суток.
Подскажите, возможно ли вставить в оформление слайдера кнопки Следующая и Предыдущая?
Ответить

Administrator
0
# 1940
(11:43:04  03.10.2014 г.)

Чтобы не загромождать комментарии, получившийся скрипт выложил на наш форум - http://usefulscript.ru/forum/showthread.php?tid=301
Ответить

Вася
1
# 1967
(13:07:09  15.10.2014 г.)

Почему-то все время выходит ошибка "Uncaught SyntaxError: Unexpected token ] ", и сам скрипт не работает.
Ответить

Administrator
0
# 1970
(20:43:45  15.10.2014 г.)

Посмотрите исходный код странички и строчку, в которой ошибка. Похоже, что либо где-то случайно добавили символ "]", либо при формировании массива изображений произошел сбой.
При просмотре исходного кода странички обратите внимание на строчку с переменной imgs. Она должна быть примерно такая: var imgs=["image/time/img0.gif","image/img1.gif","image/img2.gif","image/img3.gif"];
Ответить

Gunz
0
# 1978
(18:14:26  19.10.2014 г.)

Здравствуйте, а как сделать, чтобы вывод был рандомный, но картинки не повторялись?
Ответить

Administrator
0
# 1979
(22:09:22  19.10.2014 г.)

Для этого нужно добавить функцию перемешивания массива. Перед var n = 0; добавьте строку:
imgs = imgs.sort(function() { return Math.random() - 0.6; });
Ответить

Spiker
0
# 2005
(21:56:58  27.10.2014 г.)

Здравствуйте! Подскажите, пожалуйста. Есть три слайд-шоу, которые берут изображения из одной папки. Как сделать, чтобы каждый блок показывал свою картинку? А то получается, что одинаковые...
Ответить

Administrator
1
# 2006
(22:33:18  27.10.2014 г.)

Тут надо смотреть, что именно Вам надо получить в итоге... Как самый простой вариант, добавьте по аналогии изображения с id slide_show2 и slide_show3, и замените всю функцию function chgImg() {...} на такую:
function chgImg() {
n = n + 3;
if (n>=imgs.length) n = 3;
$('#slide_show').fadeOut(time, function() { $(this).attr('src', imgs[n-2]).fadeIn(time); });
$('#slide_show2').fadeOut(time, function() { $(this).attr('src', imgs[n-1]).fadeIn(time); });
$('#slide_show3').fadeOut(time, function() { $(this).attr('src', imgs[n]).fadeIn(time); });
}
Ответить

Дмитрий
0
# 2304
(10:21:21  06.03.2015 г.)

Скрипт хороший, но нашел один очень неприятный момент. Если мы попадаем на другую страницу, где материал находится в другой категории, то скрипт не работает. Т.е. если скрипт будет находится на странице http://site.ru, то нормально. Но если url будет вида http://site.ru/category/main.html то перестают отображаться фото.
Не находит уже данную категорию. Проблема в относительном пути. Где прописать абсолютный путь к директории? Пытался прописать в переменную $folder="http://site.ru/images". Тогда скрипт не работает. Помогите решить задачку.
Ответить

Administrator
0
# 2307
(17:25:22  07.03.2015 г.)

Описываем переменные:
$folder = $_SERVER['DOCUMENT_ROOT'].'image/time/';
$folder2 ='http://usefulscript.ru/image/time/';
Далее в строчке: $array_to_js.='"'.$folder.$all_files[$i].'",'; заменяем $folder на $folder2.
Ответить

Леонид
0
# 2310
(13:03:01  10.03.2015 г.)

Добрый день! Отличный скрипт и простой в использовании. Адаптировал под себя. Единственный вопрос:
Как сделать, чтобы картинки были ссылками, каждая на свою?
Заранее спасибо!
Ответить

Administrator
0
# 2334
(22:16:31  14.03.2015 г.)

Вы имеете ввиду добавить ссылки на сами картинки? Если да, то оберните изображение тегом <a>:
<a href=""><img src="image/time/colon.gif" alt="" id="slide_show"></a>
А в JavaScript коде перед строчкой $(this).attr('src', imgs[n]).fadeIn(time); добавьте строчку:
$(this).parent('a').attr('href', imgs[n]);
Ответить

Andrey
0
# 2364
(02:06:23  30.03.2015 г.)

Добрый день! Такая проблема: в скрипте не исполняется php часть кода. Сайт собран на modx всё разбито на чанки и сниппеты. В head исполняются только скрипты java. Как заставить работать?
Ответить

Administrator
0
# 2366
(19:50:59  30.03.2015 г.)

Только на JS сделать нельзя, т.к. JS не имеет доступа к файловой системе.
Ответить

Марина
0
# 2408
(12:17:04  21.04.2015 г.)

Добрый день!
Подскажите, пожалуйста, как добавить ваш скрипт на страничку сайта Wordpress? Если просто добавляю в текст страницы, то не работает почему-то.
Ответить

Марина
-1
# 2409
(13:16:16  21.04.2015 г.)

Добрый день! Проблема решилась установкой специального плагина для WP, т.к. по умолчанию все коды php не исполняются на сайте Wordpress. Плагин помог + удалить лишние Enter в коде, т.к. воспринимается как новый абзац <p>.
Спасибо за скрипт! Супер!
А можете еще доработать скрипт, чтобы при клике на картинке, она открывалась в Lightbox? И если на одной странице несколько таких слайд-шоу, берущих картинки из разных папок - то как открыть Lightbox с перелистыванием только из той папки, на картинку из которой я кликнула? Если это возможно, конечно.
Спасибо!
Ответить

Адина
0
# 3423
(01:35:18  20.09.2016 г.)

Скрипт - именно то, что я ищу! Но почему-то не работает. Подскажите, пожалуйста, в чем проблема.
JavaScript код 1 размещен между тегами head.
HTML код размещен в таблице с измененным значением высоты блока и image/time/colon.gif на свой путь к картинке.
JavaScript код 2 размещен сразу следом (хотя пробовала в разные места - эффекта ноль) с измененным $folder = 'image/time/'; вписала свой путь к папке с картинками.

Что-то не там разместила или надо еще где-то поменять код? Хелп!
На странице просто показывается первая картинка и все.
Ответить

Administrator
0
# 3427
(21:39:16  20.09.2016 г.)

Скрипт рабочий, проверяйте на пустой страничке (без других скриптов). Какую хоть ошибку выдает? Хостинг PHP поддерживает?
Ответить

Адина
0
# 3498
(22:23:17  09.10.2016 г.)

Спасибо, попробую на пустой.
А пока просто отображается первое изображение в папке, ссылка на которое имеется в коде.
Может, проверите? :) (ссылка удалена) картинка в самом низу.
Хостинг php поддерживает, но я туда и не лезу...
Ответить

Administrator
0
# 3499
(23:00:47  09.10.2016 г.)

Посмотрел, у Вас PHP внутри JavaScript код не обрабатывается, а выводится как JavaScript код. Если посмотреть исходный код странички, то PHP кода не должно быть видно, а вместо него должны отображаться url-ы изображений.
Ответить

Юрий
1
# 3502
(16:39:00  11.10.2016 г.)

А как решить такую проблему? Тоже столкнулся с этим.
Ответить

Administrator
0
# 3503
(17:23:17  11.10.2016 г.)

Попробуйте сменить расширение файла на PHP, либо включите обработку PHP в HTML (добавьте в файл .htaccess строчку: AddHandler application/x-httpd-php htm html). Тогда внутри html файлов можно будет размещать PHP код. Если у Вас сайт на каком-либо популярном движке, то поищите в настройках.
Ответить

eun
0
# 3583
(05:35:35  22.11.2016 г.)

Спасибо за скрипт! Работает в фоне таблицы!
Правильно ли мною понимается, что скрипт не работает через dropbox?
Ответить

Vladimir
0
# 4281
(16:07:51  13.04.2018 г.)

У меня вопрос, а как сделать без этой отображаемой картинки? Я не хочу, чтобы она на что-то менялась. Хочу, чтобы просто тупо по очереди картинки слайд-шоу перебирались без вот того что вы писали:
"Где image/time/colon.gif - URL адрес первого показываемого изображения. Это необходимо для того чтобы в то время, пока грузится Ваша страничка (и скрипт соответственно тоже), на экране первоначально было изображение."
Ответить

Ольга
0
# 4299
(09:37:37  21.05.2018 г.)

Добрый день, будьте добры подскажите как добавить текст к изображениям. Покажите для примера для одного изображения. Заранее благодарна.
Ответить

Александр
0
# 5022
(00:29:38  29.10.2023 г.)

Добрый день! У Вас php-код внутри java-скрипта. Мне нужно потом, а не в начале определять маршрут к папке с изображениями. Путь к папке формируется в php в зависимости от некоторых условий. И тогда Ваш скрипт не работает. Как можно это скорректировать?
Ответить

Закрыть
Ваше имя:
757 + 15 =
Добавить комментарий:
Ваше имя:
757 + 15 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 6

Мешает ли Вам реклама?