Нашел удобный вариант создания плавного скролла с Jquery. Все бы отлично но есть 1 проблема/баг. После обновления странички где-то в центре браузер автоматически перемещает меня туда, но разработчик скрипта видимо это не предвидел и если я крутну колесико мышки перемещаюсь в самое начало страницы.
Я уже сделал попытки исправить это, я нашел что проблема по видимости в переменной root
которая всегда изначально 0. Я пробовал задать ей высоту wheelDeltaY или wheelDelta, deltaY, но не работает почему-то.
Вы не могли бы взглянуть на код скрипта и корректировать его? Благодарю за внимание.
Пример на JSFiddle если так будет удобнее, а ниже код по правилам.
$(function() {
$.scrollSpeed(100, 450);
});
// Plugin: jQuery.scrollSpeed
// Source: github.com/nathco/jQuery.scrollSpeed
// Author: Nathan Rutzky
// Update: 1.0.2
(function($) {
jQuery.scrollSpeed = function(step, speed, easing) {
var $document = $(document),
$window = $(window),
$body = $('html, body'),
option = easing || 'default',
root = 0,
scroll = false,
scrollY,
scrollX,
view;
if (window.navigator.msPointerEnabled)
return false;
$window.on('mousewheel DOMMouseScroll', function(e) {
var deltaY = e.originalEvent.wheelDeltaY,
detail = e.originalEvent.detail;
scrollY = $document.height() > $window.height();
scrollX = $document.width() > $window.width();
scroll = true;
if (scrollY) {
view = $window.height();
if (deltaY < 0 || detail > 0)
root = (root + view) >= $document.height() ? root : root += step;
if (deltaY > 0 || detail < 0)
root = root <= 0 ? 0 : root -= step;
$body.stop().animate({
scrollTop: root
}, speed, option, function() {
scroll = false;
});
}
if (scrollX) {
view = $window.width();
if (deltaY < 0 || detail > 0)
root = (root + view) >= $document.width() ? root : root += step;
if (deltaY > 0 || detail < 0)
root = root <= 0 ? 0 : root -= step;
$body.stop().animate({
scrollLeft: root
}, speed, option, function() {
scroll = false;
});
}
return false;
}).on('scroll', function() {
if (scrollY && !scroll) root = $window.scrollTop();
if (scrollX && !scroll) root = $window.scrollLeft();
}).on('resize', function() {
if (scrollY && !scroll) view = $window.height();
if (scrollX && !scroll) view = $window.width();
});
};
jQuery.easing.default = function (x,t,b,c,d) {
return -c * ((t=t/d-1)*t*t*t - 1) + b;
};
})(jQuery);
<!DOCTYPE html>
<html><head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<h1><b>jQuery.scrollSpeed</b> is a lightweight jQuery extension for
custom scrolling speed in modern web browsers. Supports vertical or
horizontal scrolling direction, including user-defined easing.
Singapore conversation business class, vibrant sharp Swiss Ettinger bespoke
Lufthansa discerning Toto handsome. Bulletin sleepy conversation hand-crafted
international. Washlet alluring elegant, Sunspel charming vibrant Swiss the
best Helsinki liveable lovely Singapore flat white intricate. Boulevard
Tsutaya discerning uniforms Zürich Sunspel Ettinger perfect first-class St
Moritz bespoke. Cutting-edge bulletin soft power concierge vibrant the
best. Ginza charming impeccable, izakaya hand-crafted global Lufthansa soft
power. Alluring Fast Lane hub, pintxos St Moritz intricate Nordic wardrobe
first-class boutique Boeing 787. Business class carefully curated global,
izakaya airport Helsinki Ettinger Melbourne. International cosy liveable
Sunspel ryokan Washlet ANA signature joy artisanal. Hand-crafted pintxos
bespoke soft power. Charming lovely pintxos Melbourne Toto bureaux
Singapore first-class. Impeccable Porter exquisite quality of life
liveable. Pintxos boulevard ryokan sophisticated handsome Sunspel Baggu
elegant wardrobe signature Zürich hub Ginza eclectic Beams. Airbus A380
Shinkansen bespoke, Helsinki Baggu ANA bulletin cutting-edge Swiss Gaggenau
elegant hand-crafted Singapore. Marylebone St Moritz emerging espresso
Swiss. Conversation boulevard destination Ettinger, Gaggenau St Moritz
artisanal sleepy pintxos Beams Shinkansen business class Nordic emerging.
St Moritz artisanal eclectic the best, joy Baggu Washlet wardrobe Comme des
Garçons vibrant Beams Swiss. K-pop pintxos liveable exclusive the best
global smart flat white remarkable Zürich Scandinavian tote bag Baggu
hand-crafted. Elegant pintxos Baggu Beams Swiss. Elegant Asia-Pacific
pintxos izakaya bespoke, vibrant flat white exquisite. Intricate
Scandinavian finest Baggu Gaggenau smart elegant Helsinki Airbus A380
Swiss. Bureaux smart Nordic, Lufthansa Ginza Singapore extraordinary
cutting-edge ryokan lovely Comme des Garçons perfect liveable joy Muji.
Global craftsmanship intricate, flat white Helsinki Winkreative Beams
izakaya airport ryokan artisanal Ettinger handsome Toto.</h1>
</body></html>
попробуйте сделать такую замену
root = $document.scrollTop(),
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть старый код с frameПодскажите пожалуйста как разметить используя div и css?
Всем приветИмеется бургер-меню, которое раскрывается при клике на сам бургер, который тоже меняет свою форму на вид крестика
Есть скриптЯ выделяю область на картинке и хочу вывести превью выделенной области