Создать ответ 
Доработка скрипта последовательного появления элементов
Автор Сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #1
Доработка скрипта последовательного появления элементов
В данной теме хотим предложить Вам немного доработанную версию скрипта Последовательного появления элементов. Суть доработки заключается в том, что появление элементов начинается только тогда, когда страничка была прокручена до месторасположения данных элементов.

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

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

Меньше слов, больше кода Big Grin :
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<style type="text/css">
img.fade { display: none; }
</style>

<div class="fade_block">
<img class="fade" src="image/img_1.png" alt="">
<img class="fade" src="image/img_2.png" alt="">
<img class="fade" src="image/img_3.png" alt="">
<img class="fade" src="image/img_4.png" alt="">
</div>


<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){

window.onscroll = function() {
$('img.fade').each(function(){
if ($(window).scrollTop()>=$('.fade_block').offset().top-$(window).height() && $(window).scrollTop()<=$('.fade_block').offset().top) $('img.fade').fade_img();
});
}
$.fn.fade_img = function (ops) {
var $elem = this;
var res = $.extend({ delay: 600, speed: 600 }, ops);
for (var i=0, pause=0, l=$elem.length; i<l; i++, pause+=res.delay) $elem.eq(i).delay(pause).fadeIn(res.speed);
return $elem;
};
});
</script>

</html>
06.12.2014 19:00:19
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #2
RE: Доработка скрипта последовательного появления элементов
Для устранения недостатка, связанного с тем, что появление элементов начинается только после прокрутки странички, следует после строк:
Код:
return $elem;
};

добавить всего одну строчку:
Код:
if ($(window).scrollTop()>=$('.fade_block').offset().top-$(window).height() && $(window).scrollTop()<=$('.fade_block').offset().top) $('img.fade').fade_img();
23.02.2015 23:22:21
Найти все сообщения Цитировать это сообщение
nuska Не на форуме
Рядовой
*

Сообщений: 2
У нас с: Feb 2015
Сообщение: #3
RE: Доработка скрипта последовательного появления элементов
Большое спасибо за скрипт! Не поняла в чем разница после добавления строки, но всё равно использую.

А нельзя в этот скрипт еще и текст вставлять, чтобы он тоже был всплывающим?
24.02.2015 16:21:39
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #4
RE: Доработка скрипта последовательного появления элементов
Разница в том, что если изображения находятся в верхней части экрана, то сразу после полной загрузки странички они начнут поочередно появляться, а без дополнительной строчки кода пришлось бы немного прокрутить страничку чтобы запустить скрипт появления изображений.

Для того чтобы вместо изображений использовать любые другие элементы, достаточно в CSS коде и в JavaScript коде img.fade заменить на .fade. Блокам с появляющимся текстом следует добавить класс .fade:
Код:
<p class="fade">Появляющийся абзац!!!</p>
<div class="fade">Или обычный блок с текстом.</div>
24.02.2015 20:34:59
Найти все сообщения Цитировать это сообщение
nuska Не на форуме
Рядовой
*

Сообщений: 2
У нас с: Feb 2015
Сообщение: #5
RE: Доработка скрипта последовательного появления элементов
Обязательно попробую! Спасибо!
25.02.2015 11:02:35
Найти все сообщения Цитировать это сообщение
steyra Не на форуме
Рядовой
*

Сообщений: 1
У нас с: Jan 2016
Сообщение: #6
RE: Доработка скрипта последовательного появления элементов
Здравствуйте, у меня срабатывает это чудо не совсем корректно. При вставке нескольких div с текстом они показываются по очереди, то есть следующий появляется после исчезновения предыдущего, а ведь должны просто появиться последовательно и никуда не исчезать. В чем может быть причина?

Скрипт брала с сайта.
04.01.2016 14:54:25
Найти все сообщения Цитировать это сообщение
Admin Не на форуме
Верховный
Главнокомандующий
(Administrator)
*

Сообщений: 2,431
У нас с: Aug 2011
Сообщение: #7
RE: Доработка скрипта последовательного появления элементов
Здравствуйте.
Возможно, на работу нашего скрипта влияет какой-нибудь другой скрипт, имеющийся у Вас на сайте.

Тестируйте сначала на пустой страничке, а потом уже встраивайте на сайт.

Вот, например, рабочий код, который прекрасно работает в разных браузерах:
Код:
<div class="fade">111</div>
<div class="fade">222</div>
<div class="fade">333</div>
<div class="fade">444</div>

<style type="text/css">
.fade { display: none; }
</style>

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){
$.fn.fade_img = function (ops) {
  var $elem = this;
  var res = $.extend({ delay: 600, speed: 600 }, ops);
  for (var i=0, pause=0, l=$elem.length; i<l; i++, pause+=res.delay) {
   $elem.eq(i).delay(pause).fadeIn(res.speed);
  }
  return $elem;
};
$('.fade').fade_img();
});
</script>
04.01.2016 15:19:54
Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)


LiveInternet
© Copyright 2011-2024 by UsefulScript.ru