Сейчас: 16:09:01   19-го апреля 2024 г.
UsefulScript.ruСкриптыРазныеСлайдер под спойлером
7
17

Скрипт слайдера, спрятанного под спойлер

Ранее мы уже рассматривали несколько различных скриптов для создания спойлеров на сайте. На этот раз мы предлагаем Вам еще один скрипт, основным отличием которого от предыдущих будет наличие нескольких заголовков и всего одного тела спойлера, содержимое которого будет меняться в зависимости от того, на какой заголовок спойлера был произведен клик.


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


Для наглядной демонстрации работы предлагаемого нами скрипта, обратите внимание на три заголовка спойлеров, находящихся чуть ниже. По клику по каждому из них, появится слайдер с первым изображением из группы. При помощи стрелок <<< и >>> можно будет прокручивать изображения в группе:


<<< >>>

Важным моментом в нашем скрипте является то, что при переходе к другой группе изображений (при клике по другому заголовку спойлера) скрипт запоминает последнее просмотренное изображение, на котором Вы остановились. При возвращении к данной группе показ изображений начнется именно с того, на котором Вы остановились.


Для реализации подобного слайдера под спойлером Вам потребуется подключить у себя на сайте библиотеку jQuery следующим образом:

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

Далее необходимо разместить заголовки и тело спойлера для отображения и скрытия слайдера:

HTML код:
<div style="text-align: center;">
<
div class="sp_links" id="sp_0">Заголовок № 1</div>
<
div class="sp_links" id="sp_1">Заголовок № 2</div>
<
div class="sp_links" id="sp_2">Заголовок № 3</div>
</
div>

<
div id="body">
 <
table style="margin: 0 auto;">
  <
tr>
   <
td id="show_back"><b>&lt;&lt;&lt;</b></td>
   <
td id="slide_show"></td>
   <
td id="show_forward"><b>&gt;&gt;&gt;</b></td>
  </
tr>
 </
table>
</
div>

Не забываем в шапку сайта между тегами <head> и </head> добавить стили для правильного отображения и работы слайдера и спойлеров:

HTML код:
<style type="text/css">
 
#body { display: none; font-style: italic; }
 #show_back, #show_forward, .sp_links { cursor: pointer; }
 
.sp_links displayinline-blockwidth200pxmargin5pxborder-radius7px;
 
text-aligncenterfont-weightboldcolor#0000FF; border: 1px solid #333333; }
 
.selected background-color#CCCCCC; }
</style>

Теперь остается добавить JavaScript код, который будет показывать и скрывать содержимое спойлера при кликах по заголовкам, а также отвечающий за работу слайдера:

JavaScript код:
<script type="text/javascript">
$(
document).ready(function(){
 var 
time 400;
 var 
num = [0,0,0];
 var 
imgs = [
 [
"image/img_1.png","image/img_2.png","image/img_3.png","image/img_4.png"],
 [
"image/Banner2.png","image/Banner3.png","image/Banner4.png"],
 [
"image/img_4.png","image/Banner4.png","image/img_3.png","image/Banner3.png"]
 ];

 $(
"#show_back").click(function() { num[id]--; });
 $(
"#show_forward").click(function() { num[id]++; });

 $(
"#show_back, #show_forward").click(function() {
  if (
num[id]<0num[id]=imgs[id].length-1;
  if (
num[id]>=imgs[id].lengthnum[id]=0;
  $(
"#img_show").fadeOut(time, function() {
   $(
this).attr("src"imgs[id][num[id]]).fadeIn(time);
  });
 });

 $(
".sp_links").click(function() {
  
id = $(this).attr("id").substr(3);

  if ($(
this).hasClass("selected")!=true) {
   $(
"#body").fadeOut(time, function() {
    $(
"#slide_show").html('<img src="'+imgs[id][num[id]]+'" alt="" id="img_show">');
   }).
fadeIn(time);

   $(
".sp_links").removeClass("selected");
   $(
this).addClass("selected");
  }
  else {
   $(
".sp_links").removeClass("selected");
   $(
"#body").fadeOut(time);
  }
  return 
false;
 });
});
</script>

Поясним пару важных моментов по данному скрипту. В num = [0,0,0]; хранятся номера изображений в массиве, с которых начнется просмотр для каждого спойлера в отдельности.

Т.е. запись num = [0,2,0]; означает, что для второго спойлера просмотр начнется с изображения под номером 3 в массиве изображений (т.к. отсчет начинается с 0).

imgs является двумерным массивом с адресами изображений.


При желании слайдер изображений можно будет заменить на слайдер html страничек. Таким образом возможно будет реализовать слайдер не только изображений, но и любого другого содержимого html страничек.

Дата создания: 19:16:46 12.12.2015 г.
Посещений: 11083 раз(а).

Комментарии посетителей (5 шт.):
Сергей
1
# 3080
(17:53:10  15.03.2016 г.)

Как у вас на сайте все пёстро и излишне ярко. Пять минут побыл тут - и глаза в кучку. А сайт-то, как раз, про оформление.
Ответить

Administrator
0
# 3081
(20:11:59  15.03.2016 г.)

Дизайн и оформление - моя слабая сторона, а сайт больше про скрипты.
Ответить

Сергей
0
# 3084
(12:04:45  16.03.2016 г.)

А вот скрипты, вещь хорошая. Я потому здесь и пасусь, что беру готовые скрипты, скручиваю их со своим кодом и делаю самописный сайт, а потому могу в добавок ко всем этим скриптам предложить готовый скрипт сайта setsetup.ru/05.php. На нем уже есть админка, файловый менеджер, комментарии, авторизация, модуль новостей. В общем уже полностью готовый сайт, просто берем скрипт и ставим его себе на хостинг, вот и всё - ваш сайт готов.
Ответить

Любовь
0
# 4118
(10:26:59  30.10.2017 г.)

Уважаемый, админ, подскажите, мне нужно горизонтальное меню, из которого вертикально появляется спойлер, для каждого пункта будет ссылка (скорее всего на страницу или документ), есть такое решение или что-то максимально похожее. И чтобы спойлер при открытии был поверх следующего блока, а не сдвигал всё вниз.
Ответить

Administrator
1
# 4119
(21:25:06  30.10.2017 г.)

Если я Вас правильно понял, то попробуйте скрипт выпадающего меню на jQuery.
Ответить

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

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

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

Какую CMS для сайта Вы предпочитаете?