2

По какой-то причине это работает во всех основных браузерах, но не в IE (сюрприз, сюрприз).Липкий контейнер прокрутки не работает в IE

$(function() { 
var stickyDiv = $('#js-sticky-wrap'); // div to clone 
var clonedCss = 'js-sticky-fix'; // css class with fixed positioning 
stickyContainer(stickyDiv, clonedCss); 

function stickyContainer(stickyDiv, clonedCss, clonedWidth) { 
    if (clonedWidth === undefined) { // use original container width 
     var clonedWidth = $(stickyDiv).width(); 
    } 

    var menuTop = stickyDiv.offset().top; // Capture visible content height 
    var menuClone = stickyDiv.clone(true).addClass(clonedCss); // Clone current div, apply fixed style 
    var dropShadow = $('<div class="js-drop-shadow"></div>').hide(); 
    // Append dropshadow style 
    stickyDiv.append(dropShadow); 

    $(window).bind('scroll', function() { 
     var scrollY = window.pageYOffset; // get total px from vertical scroll 
     if (scrollY > menuTop) { // they scrolled > than the original offset 
      if (menuClone.parent().length === 0) { 
       stickyDiv.addClass(clonedCss).width(clonedWidth); 
       menuClone.after(stickyDiv.parent()); 
       dropShadow.show(); 
      } 
     } else { 
      stickyDiv.removeClass(clonedCss); 

      dropShadow.hide(); 
      menuClone.remove(); 
     } 

    }); 
} 

});

Example on jsfiddle

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

+0

@lostinplace Прокрутка вниз в окне результата. –

ответ

2

window.pageYOffset не не поддерживается IE до версии 9. Попробуйте использовать его как это:

var scrollY; 
if (typeof(window.pageYOffset) == 'number') { 
    scrollY = window.pageYOffset; 
} 
else { 
    scrollY = document.documentElement.scrollTop; 
} 
+2

это тоже не сработает, замените menuClone.after (stickyDiv.parent()); с menuClone.appendTo (stickyDiv.parent()); – lostinplace

+0

Я отредактировал ответ, но он ожидает экспертного обзора – lostinplace

+0

Ну, это, безусловно, помогло решить проблему его липкости, но, конечно, IE не позволяет мне легко, и это ввело другую проблему. Спасибо, тем не менее, вам и @lostinplace. –

Смежные вопросы