У меня есть div #HangerLeft, который автоматически генерируется css.right с помощью jQuery для размещения в левой части страницы на основе ширины тела.Он позиционируется абсолютно.
function hangerLeft() {
var hangerPosition = (jQuery("body").innerWidth() / 2) + (990 / 2);
jQuery("#HangerLeft").css("position","absolute").css("right", hangerPosition +"px").css("top","20px");
}
Внутри div #HangerLeft у меня есть #scrollWrapper div без позиционирования, а внутри #scrollWrapper у меня есть #scrollBox.#ScrollBox находится в абсолютном положении.
#scrollWrapper { width:130px; height:400px; border:1px solid #fff;}
#scrollBox { position: absolute; top: 100; margin-top: 25px; padding-top: 0px;}
#scrollBox.fixed { position: fixed; top: 0;}
#scrollBox сидит, пока вы не прокрутите.Когда вы прокручиваете верхнюю часть #scrollBox, div javascript добавляет класс, чтобы сделать положение #scrollBox фиксированным, а не абсолютным.
<script>
$(function () {
var msie6 = $.browser == 'msie' && $.browser.version < 7;
if (!msie6) {
var top = $('#scrollBox').offset().top - parseFloat($('#scrollBox').css('margin-top').replace(/auto/, 0));
$(window).scroll(function (event) {
// what the y position of the scroll is
var y = $(this).scrollTop();
// whether that's below the form
if (y >= top) {
// if so, ad the fixed class
$('#scrollBox').addClass('fixed');
} else {
// otherwise remove it
$('#scrollBox').removeClass('fixed');
}
});
}
});
</script>
В Firefox и IE это работает нормально.
В Safari и Chrome после попадания javascript #scrollBox div #scrollBox выпрыгивает из div #HangerLeft в середину страницы и игнорирует расположение #HangerLeft.
Я боролся с этим в течение 2 недель и в растерянности.
Любая помощь будет принята с благодарностью.