Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.02.2019, 11:11
Новичок на форуме
Отправить личное сообщение для morfiy Посмотреть профиль Найти все сообщения от morfiy
 
Регистрация: 20.02.2019
Сообщений: 1

Плавающий блок, замирающий над футером
здравствуйте!

Требуется помощь в разборе скрипта (4)
http://shpargalkablog.ru/2013/09/scroll-block.html

http://sticky01.blogspot.com/2013/09/4.html ---- на этом сайте скрипт реализован

На свой сайт(http://uraltehline.ru/category/produkcija/) скрипт подключил, все необходимые стили указал и id указал, но при прокрутке, возникает ошибка
===
Uncaught TypeError: Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not of type 'Element'.
at Ascroll (sb-fixed.js:7)
===

(function(){
var a = document.getElementById('#sidebar-fixed'), b = null, P = 0; // если ноль заменить на число, то блок будет прилипать до того, как верхний край окна браузера дойдёт до верхнего края элемента. Может быть отрицательным числом
window.addEventListener('scroll', Ascroll, false);
document.body.addEventListener('scroll', Ascroll, false);
function Ascroll() {
if (b == null) {
var Sa = getComputedStyle(a, ''), s = '';
for (var i = 0; i < Sa.length; i++) {
if (Sa[i].indexOf('overflow') == 0 || Sa[i].indexOf('padding') == 0 || Sa[i].indexOf('border') == 0 || Sa[i].indexOf('outline') == 0 || Sa[i].indexOf('box-shadow') == 0 || Sa[i].indexOf('background') == 0) {
s += Sa[i] + ': ' +Sa.getPropertyValue(Sa[i]) + '; '
}
}
b = document.createElement('div');
b.style.cssText = s + ' box-sizing: border-box; width: ' + a.offsetWidth + 'px;';
a.insertBefore(b, a.firstChild);
var l = a.childNodes.length;
for (var i = 1; i < l; i++) {
b.appendChild(a.childNodes[1]);
}
a.style.height = b.getBoundingClientRect().height + 'px';
a.style.padding = '0';
a.style.border = '0';
}
var Ra = a.getBoundingClientRect(),
R = Math.round(Ra.top + b.getBoundingClientRect().height - document.querySelector('footer').getBoundingClient Rect().top + 0); // селектор блока, при достижении верхнего края которого нужно открепить прилипающий элемент; Math.round() только для IE; если ноль заменить на число, то блок будет прилипать до того, как нижний край элемента дойдёт до футера
if ((Ra.top - P) <= 0) {
if ((Ra.top - P) <= R) {
b.className = 'stop';
b.style.top = - R +'px';
} else {
b.className = 'sticky-sb';
b.style.top = P + 'px';
}
} else {
b.className = '';
b.style.top = '';
}
window.addEventListener('resize', function() {
a.children[0].style.width = getComputedStyle(a, '').width
}, false);
}
})()

С чем это может быть связано и как устранить ошибку ?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плавающий блок, замирающий над футером Navaho Элементы интерфейса 69 24.06.2020 23:53
Как сделать плавающий блок, который... Greatest_Duke jQuery 8 03.12.2017 02:26
Плавающий блок на чистом JS "дергается" Gedonist Общие вопросы Javascript 0 16.05.2016 20:14
При hover блок выезжает над бордером родительского элемента Vladislav306907 jQuery 2 18.01.2016 17:39
Плавающий блок, не работает часть кода в joomla 3 Kuzma jQuery 1 06.05.2015 09:28