Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Плавный переход по нажатию на DIV? (https://javascript.ru/forum/dom-window/50107-plavnyjj-perekhod-po-nazhatiyu-na-div.html)

Гаджи 12.09.2014 13:03

Плавный переход по нажатию на DIV?
 
Привет всем. Можно ли сделать плавный переход к якорю по нажатию на блок div. Просо переход получается, но нужно плавно чтобы работал. Можно ли такое сделать?


<div onClick="window.location='#anchor'"</div>

Viral 12.09.2014 13:08

Нет невозможного

Гаджи 12.09.2014 15:39

Ну это по нажатию на ссылку. А я спрашиваю по нажатию на блок div

ksa 12.09.2014 15:44

Цитата:

Сообщение от Гаджи
Ну это по нажатию на ссылку. А я спрашиваю по нажатию на блок div

onclick он и в Африке onclick...

Гаджи 15.09.2014 09:50

Понятно что и в африке :) а можно ли сделать так? :)

krasovsky 15.09.2014 13:15

Можно. По клику надо вычислить offset top якоря и прокрутить это расстояние минус высоту окна(window)

Гаджи 16.09.2014 09:09

А можно пример? Я пока только начинаю изучать javascript

krasovsky 16.09.2014 09:41

на jquery все достаточно просто:
var offset = $('#myAnchor').offset().top;
$('body').scrollTop(offset );

Это без плавного перехода, который можно осуществить используя метод animate (доку почитаешь). На чистом js придется попариться с циклами.
А вообще примеры в гугле ищи, таких там вагон

Гаджи 16.09.2014 10:39

<div class="product" onClick="window.location='#anchorsklad'"></div>

<script>
	var offset = $('#anchorsklad').offset().top;
	$('body').scrollTop(offset ).animate({scrollTop: destination}, 1100);
</script>


Делаю так, но переход осуществляется мгновенно. Что не так делаю?

krasovsky 16.09.2014 12:53

Цитата:

Сообщение от Гаджи
Делаю так, но переход осуществляется мгновенно. Что не так делаю?

$('body').scrollTop(offset ).animate({scrollTop: destination}, 1100);
1 откуда взялось destination?
2 ты сначала применяешь метод мгновенного скролирования, а потом его же через animate, но так как ты уже мгновенно прокрутился то эффекта не видишь. Вопрос: зачем тут это .scrollTop(offset ) если ты animate применяешь?

Гаджи 16.09.2014 13:41

Исправил на такой код. На другом форуме нашел такой же код, но почему-то переход осуществляется при обновлении. А при нажатии на div опять мгновенный переход

var peremscroll=$('#anchorsklad').offset().top;
	$('body').animate({scrollTop: peremscroll}, 1100);

krasovsky 16.09.2014 14:50

Поди по ссылке-якорю тыкаешь?
метод .preventDefault() чтоб отменить стандартное действие

Ferrum 19.09.2014 11:23

Плавный скроллинг страницы
Но тут с помощью jQuery

Гаджи 21.09.2014 20:30

это по нажатию на span. Мне нужно по нажатию на DIV


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