Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.05.2017, 21:35
Новичок на форуме
Отправить личное сообщение для Zhekag Посмотреть профиль Найти все сообщения от Zhekag
 
Регистрация: 08.05.2017
Сообщений: 3

Помогите разобраться со скриптом!
Функции скрипта при скроллинге:
[fade]текст[/fade] - проявляет текст;
[slide-left]текст[/left] - слайдит текст слева;
[slide-right]текст[/right] - слайдит текст справа.

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

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

function init()
{
	var a=text_search();animation_elements=animation_tag_search(a),hide_elems_page_load()
}

function construct_elements_array(a)
{
	for(var b=0;b<a.length;b++)
		{
			var c=a[b],d=c.elements[0];elements_array[b]=
			{
				elements:c.elements,animation:c.animation,activated:!1,top:d.offset().top,bottom:d.offset().top+d.height()
			}
		}
}

function init_elements()
{
	for(var a=0;a<elements_array.length;a++)
		{
			var b=elements_array[a].elements,c=elements_array[a].activated;switch(elements_array[a].animation)
			{
				case"fade":for(var d=0;d<b.length;d++)c||b[d].css("opacity",0)
                	;break;case"slide-left":for(var d=0;d<b.length;d++)c||b[d].css(
					{
						position:"relative",left:-page_width
					}
					);break;case"slide-right":for(var d=0;d<b.length;d++)c||b[d].css(
					{
						position:"relative",left:page_width
					})
			}
				elements_array[a].top=b[0].offset().top
		}
}

function hide_elems_page_load()
{
	for(var a=0;a<animation_elements.length;a++)for(var b=animation_elements[a].elements,c=0;c<b.length;c++)b[c].css(
		{
			opacity:0
		})
}

function show_elems_page_load()
{
	for(var a=0;a<elements_array.length;a++)for(var b=elements_array[a].elements,c=elements_array[a].animation,d=0;d<b.length;d++)"fade"!=c&&b[d].css(
		{
			opacity:1
		})
}

function text_search()
{
	var a=[];return $.fn.mytext=function()
	{
		var a="";return this.contents().each(function()
			{
				3==this.nodeType&&(a+=this.textContent||this.innerText||"")
			}),a
	}
	,$("*").not("script").not("style").each(function(b,c)
		{
			var d=$(this).mytext();d=d.replace(/\s+/g,""),d&&0!==d.length&&null!=d&&""!=d&&""!==d&&a.push($(this))
		}),a
}

function animation_tag_search(a)
{
	for(var b=[],c=0;c<a.length;)
		{
			var d=a[c].html();if(d.indexOf("[fade]")>=0||d.indexOf("[slide-left]")>=0||d.indexOf("[slide-right]")>=0)
			{
				var e={};d.indexOf("[fade]")>=0?(a[c].html(d.replace("[fade]","")),e.animation="fade",e.elements=search_for_end_tag(a,c,"[/fade]")):d.indexOf("[slide-left]")>=0?(a[c].html(d.replace("[slide-left]","")),e.animation="slide-left",e.elements=search_for_end_tag(a,c,"[/slide-left]")):d.indexOf("[slide-right]")>=0&&(a[c].html(d.replace("[slide-right]","")),e.animation="slide-right",e.elements=search_for_end_tag(a,c,"[/slide-right]")),b.push(e),c+=e.elements.length
			}
			else c++
		}
	return b
}

function search_for_end_tag(a,b,c)
{
	for(var d=!1,e=[],f=b;0==d&&f<a.length;)
		{
			e.push(a[f]);var g=a[f].html();g.indexOf(c)>=0?(a[f].html(g.replace(c,"")),d=!0):d=!1,f++
		}
		return e
}

function animate_elements()
{
	for(var a=$(window).scrollTop()+window.innerHeight/4*3+scroll_offset,b=0;b<elements_array.length;b++)
		{
			var c=elements_array[b].elements;if(elements_array[b].top<a&&!elements_array[b].activated)
			{
				switch(elements_array[b].animation)
				{
					case"fade":for(var d=0;d<c.length;d++)c[d].delay(animation_delay).animate(
						{
							opacity:1
						}
						,
						{
							duration:1e3,easing:"swing"
						}
						);break;case"slide-left":for(var d=0;d<c.length;d++)c[d].delay(animation_delay).animate(
						{
							left:0
						}
						,
						{
							duration:1e3,easing:"swing"
						}
						)
				}
					elements_array[b].activated=!0
			}
		}
}
		var elements=null,animation_elements=[],elements_array=[],scroll_offset=0,width_offset=0,page_width=$(window).width()+width_offset,animation_delay=800;init(),$(window).load(function()
			{
				construct_elements_array(animation_elements),init_elements(),animate_elements(),animation_delay=200,show_elems_page_load()
			}
			),$(document).scroll(function()
			{
				animate_elements()
			}
			),$(window).resize(function()
			{
				page_width=$(window).width()+width_offset,init_elements()
			}
			);
</script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с скриптом alex72bel Общие вопросы Javascript 9 11.02.2016 13:44
Помогите разобраться со скриптом Валерий1996 Общие вопросы Javascript 7 13.07.2015 21:41
Подсчёт дней до конца акции - помогите разобраться со скриптом Chataine Общие вопросы Javascript 0 24.07.2011 14:48
Помогите разобраться со скриптом alinastil Элементы интерфейса 1 02.04.2011 18:41
Помогите разобраться со скриптом! Чайник Элементы интерфейса 1 13.03.2009 23:57