Сейчас: 08:27:03   25-го апреля 2024 г.
UsefulScript.ruСкриптыРазныеСпойлер с динамич. загрузкой
11
31

Скрипт спойлера с динамической загрузкой изображений

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


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


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


Заголовок № 1 (кликните для открытия/закрытия)
Любой текст до изображения
image/img_1.png
Заголовок № 2 (кликните для открытия/закрытия)
image/img_2.png
Любой текст после изображения
Заголовок № 3 (кликните для открытия/закрытия)
Загрузка нескольких изображений
image/img_3.png image/img_4.png

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

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

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

JavaScript код:
<script type="text/javascript">
$(
document).ready(function(){
 $(
'.spoiler_head').click(function(){
     $(
this).next('.spoiler_body').fadeToggle('slow');
     $(
this).next().children('.load').each(function(){
         $(
this).attr({'src':$(this).attr('alt')});
     });
 });
});
</script>

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

HTML код:
<div class="spoiler_head">Заголовок № 1 (кликните для открытия/закрытия)</div>
<
div class="spoiler_body">
Любой текст до изображения<br>
<
img class="load" src="image/pixel.gif" alt="image/img_1.png">
</
div>

<
div class="spoiler_head">Заголовок № 2 (кликните для открытия/закрытия)</div>
<
div class="spoiler_body">
<
img class="load" src="image/pixel.gif" alt="image/img_2.png"><br>
Любой текст после изображения
</div>

<
div class="spoiler_head">Заголовок № 3 (кликните для открытия/закрытия)</div>
<
div class="spoiler_body">
Загрузка нескольких изображений<br>
<
img class="load" src="image/pixel.gif" alt="image/img_3.png">
<
img class="load" src="image/pixel.gif" alt="image/img_4.png">
</
div>

Обращаем Ваше внимание на то, что изначально в закрытых спойлерах будет загружаться файл pixel.gif (прозрачная картинка размером в 1 пиксель). Реальный же URL изображения, которое должно показываться при открытии спойлера, мы указываем в атрибуте alt!


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

HTML код:
<style type="text/css">
 .
spoiler_body displaynonefont-styleitalic; }
 .
spoiler_head {
     
cursorpointer;
     
font-weightbold;
     
text-decorationunderline;
     
color#000099;
 
}
</
style>

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

Дата создания: 19:29:10 14.03.2015 г.
Посещений: 7415 раз(а).

Комментарии посетителей (7 шт.):
Тарас
0
# 2803
(23:47:40  01.11.2015 г.)

Мне нужно чтобы загружалось другое содержимое. Сделайте его универсальным, не только для изображений.
Ответить

Administrator
0
# 2804
(00:07:22  02.11.2015 г.)

Для динамической загрузки любого содержимого лучше использовать ajax-запрос .load().
Ответить

Тарас
1
# 2805
(00:49:05  02.11.2015 г.)

Можете написать в коменте скрипт с функцией .load()? Я не очень разбираюсь, где ее вставить.
Ответить

Administrator
3
# 2806
(20:34:14  02.11.2015 г.)

Скопируйте все коды с данной темы к себе на страничку. Второй JS код замените на такой:
$(document).ready(function(){
$('.spoiler_head').click(function(){
$(this).next('.spoiler_body').fadeToggle('slow').load($(this).next('.spoiler_body').text());
});
});

HTML код спойлеров теперь будет выглядеть так:
<div class="spoiler_head">Заголовок № 1 (кликните для открытия/закрытия)</div>
<div class="spoiler_body">test.php</div>
<div class="spoiler_head">Заголовок № 2 (кликните для открытия/закрытия)</div>
<div class="spoiler_body">test2.php</div>

test.php и test2.php - странички, которые будут подгружаться в тело спойлера при клике по его заголовку.
Ответить

павел
0
# 3204
(21:46:24  06.05.2016 г.)

А если нет возможности подмены атрибутов? Ну то есть двиг сам генерит ссылку на картинку в формате
<img class="gjhj" src="/uploads/posts/2016-05/1462279566_1460388228_1439894723_paper_wars_cannon_fodder-coverart-174x300.jpg" alt="">
Что-нибудь можно сделать?
Ответить

Андрей
1
# 3867
(10:40:21  02.05.2017 г.)

Здравствуйте. Скрипт отлично работает для картинок, а подскажите как отображать картинки обернутые в тег <a> т.е. картинки-ссылки?
Ответить

Максим
1
# 4417
(18:24:39  21.02.2019 г.)

<img class="load" src="image/pixel.gif" alt="image/img_1.png">
А зачем вообще грузить src="image/pixel.gif" не лучше ли без него?
<img class="load" alt="image/img_3.png">
Ответить

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

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

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

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