Я пытаюсь следовать этому уроку: http://jqueryfordesigners.com/fixed-floating-elements/.
Проблема в том, что всякий раз, когда фиксированное позиционирование применяется к div, если ширина браузера изменяется, div перемещается горизонтально, чтобы поместиться в окне просмотра,В учебном примере http://static.jqueryfordesigners.com/demo/fixedfloat.html этого не происходит.
Это мой код (все находится внутри относительного позиционирования #wrapper):
CSS:
#cart {
position: absolute;
right: 0;
width: 270px;
}
#target {
width: 270px;
height: 200px;
background-color: blue;
background-position: 50% 50%;
background-repeat: no-repeat;
position: absolute;
top: 250px;
right: 0;
padding: 0;
border-radius: 15px 15px 0 0 ;
}
#drag-here {
width: 270px;
height: 0;
background-image: url(drag-here.png);
background-repeat: no-repeat;
display: none;
position: absolute;
top: 470px;
right: 0;
}
#cart-list {
display: none;
position: absolute;
top: 430px;
right: 0;
list-style-type: none;
}
.sticky #target {position: fixed; top: 5px;}
.sticky #drag-here {position: fixed; top: 225px;}
.sticky #cart-list {position: fixed; top: 185px;}
HTML:
<section id="cart">
<div id="target" class="target-listen"></div>
<div id="drag-here"></div>
<ul id="cart-list">
</ul>
</section>
JQuery:
sticky = false;
initialOffset = $("#target").offset().top - 5;
$(window).scroll(function () {
if ($(this).scrollTop() >= initialOffset) {
if (!sticky) {
$("#cart").addClass("sticky");
sticky = true;
}
}
else {
if (sticky) {
$("#cart").removeClass("sticky");
sticky = false;
}
}
});
Вы можете посмотреть мою страницу здесь: http://www.brandcoffee.it/test/brandapart/imagick.php