Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 31.07.2016
Сообщений: 10

Как сделать плавную прокрутку на JS без jQuery?

12.08.2016, 00:42. Показов 2395. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ни как не могу догнать... Распишите всё пожалуйста по поподробней
К примеру вот менюшка:
HTML5
1
2
3
4
5
6
7
<nav id="navMenu">
    <ul>
        <li><a href="#new1">New One</a></li>
        <li><a href="#new2">New Two</a></li>
        <li><a href="#new3">New Three</a></li>
    </ul>
</nav>
Вот DIV'ы:
HTML5
1
2
3
<div id="new1">...</div>
<div id="new2">...</div>
<div id="new3">...</div>
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.08.2016, 00:42
Ответы с готовыми решениями:

Как сделать плавную прокрутку по клику в меню к элементу страницы?
Как сделать плавную прокрутку по клику в меню к элементу страницы? Напишите, пожалуйста, подробнее: Что, куда писать, от чего будет...

Реализовать плавную прокрутку
Здравствуйте. Меня волнует (точнее, очень-очень БЕСИТ) один момент: когда в приложениях, созданных с помощью VB6 прокручиваешь объект с...

Как сделать скролл без jQuery?
как зделать скролл без всяких библиотек

8
Эксперт JSЭксперт HTML/CSS
 Аватар для mrtoxas
3827 / 2677 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
12.08.2016, 00:56
Это вы распишите поподробней. Что и где должно происходить?
0
0 / 0 / 0
Регистрация: 31.07.2016
Сообщений: 10
12.08.2016, 13:33  [ТС]
Я имел ввиду что бы при нажатии на ссылки в меню, страница плавно прокручивалась к определённому DIV'у...
0
Эксперт JSЭксперт HTML/CSS
 Аватар для mrtoxas
3827 / 2677 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
12.08.2016, 14:59
CSS
1
2
3
4
[id^="new"]{
  height:100vh;
  border:1px solid black;
}
HTML5
1
2
3
4
5
6
7
8
9
10
11
<nav id="navMenu">
    <ul>
        <li><a href="#new1">New One</a></li>
        <li><a href="#new2">New Two</a></li>
        <li><a href="#new3">New Three</a></li>
    </ul>
</nav>
 
<div id="new1"><h1>1</h1></div>
<div id="new2"><h1>2</h1></div>
<div id="new3"><h1>3</h1></div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
document.querySelectorAll('[href^="#new"]').forEach(function(lnk) {
  var speed = 3;
  lnk.onclick = function() {
    var w = window.pageYOffset,
      hash = this.href.replace(/[^#]*(.*)/, '$1');
    t = document.querySelector(hash).getBoundingClientRect().top
    start = null;
    requestAnimationFrame(step);
    function step(time) {
      if (start === null) start = time;
      var progress = time - start,
        r = (t < 0 ? Math.max(w - progress / speed, w + t) : Math.min(w + progress / speed, w + t));
      window.scrollTo(0, r);
      if (r != w + t) {
        requestAnimationFrame(step)
      } else {
        location.hash = hash
      }
    }
  }
});
Результат
0
$ su
 Аватар для ntlinuxnt
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
12.08.2016, 15:24
mrtoxas, ему нужен плавный переход к якорю.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для mrtoxas
3827 / 2677 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
12.08.2016, 15:47
Так это же и сделано
0
0 / 0 / 0
Регистрация: 31.07.2016
Сообщений: 10
12.08.2016, 18:04  [ТС]
Спасибо большое
0
Эксперт JSЭксперт HTML/CSS
 Аватар для mrtoxas
3827 / 2677 / 1521
Регистрация: 12.07.2015
Сообщений: 6,672
Записей в блоге: 4
12.08.2016, 18:18
Лучший ответ Сообщение было отмечено ntlinuxnt как решение

Решение

andrewsitro, Рано Код выше только в хроме и опере работает. Вот, вроде бы везде рабочий:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var linkNav = document.querySelectorAll('[href^="#new"]'),
    V = 2;  // скорость
for (var i = 0; i < linkNav.length; i++) {
  linkNav[i].addEventListener('click', function(e) {
    e.preventDefault();
    var w = window.pageYOffset,
        hash = this.href.replace(/[^#]*(.*)/, '$1'); 
        t = document.querySelector(hash).getBoundingClientRect().top, 
        start = null;
    requestAnimationFrame(step);
    function step(time) {
      if (start === null) start = time;
      var progress = time - start,
          r = (t < 0 ? Math.max(w - progress/V, w + t) : Math.min(w + progress/V, w + t));
      window.scrollTo(0,r);
      if (r != w + t) {
        requestAnimationFrame(step)
      } else {
        location.hash = hash
      }
    }
  }, false);
}
1
0 / 0 / 0
Регистрация: 31.07.2016
Сообщений: 10
14.08.2016, 12:04  [ТС]
Теперь точно спасибо ;-)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.08.2016, 12:04
Помогаю со студенческими работами здесь

Как сделать плавную анимацию?
У моей программы лишь 1 задача: двигать одну картинку повверх другой по нажатию той, или иной кнопки. Происходит это мгновенно после...

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

Как сделать POST запрос с ответом без jQuery?
Использую ajax из jquery, но мне он по сути не нужен Можно перевести из ajax в ванильный javascript, чтобы обрабатывался ответ? ...

Как сделать плавную анимацию картинки?
Доброго времени суток, господа. Есть картинка. Нам нужно чтобы она бегала по диагонали плавно туда-сюда (обратно тоже плавно !!!). Помогите...

Как сделать плавную прозрачность картинки?
есть картинки на background и надо чтоб она постепенно становилась прозрачной. сверху вниз и у другой снизу вверх. и чтоб ещё чуть чуть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru