Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   плавный скролинг до анкора (https://javascript.ru/forum/jquery/21711-plavnyjj-skroling-do-ankora.html)

Ultimatum 21.09.2011 09:54

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

Я парсю хэш, а потом по таймауту, пытаюсь отправить в jquery.

но как это привязать скажем сюда, что-то ума не приложу.

$(function() {
   $('ul.nav a').bind('click',function(event){
      var $anchor = $(this);
      /*
      Если вы хотите использовать один из эффектов замедляющих анимацию:
      $('html, body').stop().animate({
      scrollLeft: $($anchor.attr('href')).offset().left
      }, 1500,'easeInOutExpo');
      */
      $('html, body').stop().animate({
         scrollLeft: $($anchor.attr('href')).offset().left
      }, 1000);
      event.preventDefault();
   });
});


Здесь идет по клику, но мне само событие не нужно.

Ultimatum 21.09.2011 10:02

есть скажем div c Id="zt-component" до которого как раз мне и надо прокрутить страницу. Я делаю примерно так после загрузки body

var $anchor = document.getElementById('zt-component');
					      /*
					      Если вы хотите использовать один из эффектов замедляющих анимацию:
					      $('html, body').stop().animate({
					      scrollLeft: $($anchor.attr('href')).offset().left
					      }, 1500,'easeInOutExpo');
					      */
					      $('html, body').stop().animate({
					         scrollLeft: $($anchor.attr('href')).offset().left
					      }, 1000);
					      event.preventDefault()

На что мне фаербаг ругается

$anchor.attr is not a function

Nightmare 21.09.2011 18:56

var self = this;
...
scrollLeft: $(self).attr('href').offset().left
//
scrollLeft: this.href.offset().left

Ultimatum 22.09.2011 11:20

почитал про this и всё ровно не могу понять как к нему привязать div
скажем если у меня прокрутка будет идти не до анкора а до дива.

document.getElementById('zt-mainbody')



скажем до

<div id="zt-mainbody"> </div>

Ultimatum 22.09.2011 12:53

Проблему скролинга вниз решил так

function scrolling_list()  {
			newString = document.location.hash.replace(/#/,'');
			 if(newString !==''){
			// newString
			setTimeout( function() {     
				$('html,body').animate({
				       scrollTop: $('#zt-mainbody').offset().top}, 2000); 
			 } , 300); 
			 } 
			};


То есть если есть некий хэш, значит скролим вниз до дива.


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