Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   opacity и animate (https://javascript.ru/forum/dom-window/51287-opacity-i-animate.html)

sloyi 31.10.2014 16:11

opacity и animate
 
Ребят подскажите пожалуйсата

есть код

$(window).scroll(function(){
	        var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
	        if (scrollTop > 1000)
	            {
	            $("#hid").css("display","block");
	            $("#hid").animate({'opacity':'0.8'},1000);
	            }
	        if (scrollTop < 1000)
	            {
	            $("#hid").css("display","none");
	            $("#hid").css("opacity","0");
	            }
	 
	    });


<a id="a-hid" href="#logoTop">
<div id="hid" class="poyv-div"> </div>
</a>
[/html]


почему когда мы скролим на самый верх он ставит в свойство "opacity: " сначала 0 потом 0.8. а так все идеально работает за исключением вот этого бага а из за него последущая анимация не работает

рони 31.10.2014 16:25

sloyi,
птому что animate останавливать надо

рони 31.10.2014 16:28

sloyi,
$(window).scroll(function(){
	        var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
	        if (scrollTop > 1000)
	            {
	            $("#hid").stop().css("display","block")
	            .animate({'opacity':'0.8'},1000);
	            }
	        else
	            {
	            $("#hid").stop().css({"display":"none", "opacity":"0"});
	            }

	    });

sloyi 31.10.2014 16:38

Вооо))0 спасибо работает

только щас понять не могу как сделать чтоб когда меньше тысячи он тоже плавно изчезал

sloyi 31.10.2014 17:12

я сделал следущим образом

var scrollTop =  document.documentElement.scrollTop;
		if (scrollTop > 1000)
			{
			$("#hid").stop().css("display","block")
			$("#hid").animate({'opacity':'0.8'},500);
			}
		else
	        {
	        $("#hid").stop()
			$("#hid").animate({'opacity':'0'},500);
	        }


но мне надо еще сделать чтоб display none ставил сразу как закончиться анимация не могу понять как. ставил и он либо нечего не делал либо ставил значение none сразу как происходит действие т.е. до того как закончилась анимация

рони 31.10.2014 17:39

sloyi,
смотрите параметры animate и добавляйте css в callback, callback это функция которая выполнится когда анимация закончится

sloyi 31.10.2014 18:05

Спасибо большое все сделал)))
$(window).scroll(function(){
	    var scrollTop =  $(this).scrollTop();
		if (scrollTop > 300)
			{
			$("#hid").stop().css("display","block")
			$("#hid").animate({'opacity':'0.8'},500);
			}
		else
	        {
	        $("#hid").stop()
			$("#hid").animate({'opacity':'0'}, 500, function()
				{
				$("#hid").css("display","none");
				}
			);
	        }
	});


Часовой пояс GMT +3, время: 14:57.