Makalenin ana içeriğinden daha yavaş bir hızda kenar çubuğu kaydırmaya sahip olmaya çalışıyorum Böylece görüntü daha uzun süre kalacaktır. Öğe, ekranın üstüne ulaştığında kilitlenir.Her iki öğenin aynı anda sonlanabilmesi için başka bir öğenin kaydırma hızı için çarpma katsayısı nasıl hesaplanır (görünümün üst kısmı)
Buna benzer yaklaşımlar gördüm, ancak genellikle sabit konumlandırılmış elemanlara dayanıyorlar.
Nasıl davranması gerektiğini görmek için altta JSFiddle örneğine bakın.
HTML
</div>
<div class="container">
<div class="main">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
<div class="sidebar">
1
<br />2
<br />3
<br />4
<br />5
<br />6
<br />7
<br />9
<br />10
<br />1
<br />2
<br />3
<br />4
<br />5
<br />6
<br />7
<br />9
<br />10
<br />
<br />4
<br />5
<br />6
<br />7
<br />9
<br />10
<br />
<div class="data">
0
</div>
<br /> END
</div>
</div>
<div class="footer">
</div>
CSS
.header {
width: 100%;
min-height: 300px;
}
.container {
margin: 0 auto;
width: 80%;
overflow:hidden;
background-color: #FF00FF;
display: block;
}
.main {
width: 65%;
float: left;
min-height: 800px;
background-color: #00ff00;
}
.sidebar {
width: 30%;
float: right;
min-height: 400px;
background-color: #ff0000;
}
.container.fixed .sidebar {}
.footer {
clear: both;
min-height: 2000px;
width: 100%;
}
JS
$(document).ready(function() {
$(window).scroll(function() {
var sb = $('.sidebar');
var mn = $('.main');
var cn = $('.container');
var height = $(window).height();
var mnStart = mn.offset().top;
var mnHeight = mn.height();
var sbHeight = sb.height();
var sbLock = cn.height() - sb.height();
var scrolled = $(window).scrollTop();
var sbScroll = -(scrolled - mnStart) * ((height - mnHeight)/(height - sbHeight));
if (scrolled >= mnStart && sbScroll <= sbLock) {
sb.css({
transform: 'translate3d(0,' + sbScroll + 'px,0'
});
} else if (scrolled < mnStart){
sb.css({
transform: 'translate3d(0,' + 0 + 'px,0'
});
} else if (sbScroll > sbLock){
sb.css({
transform: 'translate3d(0,' + sbLock + 'px,0'
});
}
});
});
ise Bu fiddle JSFiddle (short main content)'a bir göz atın ve bu JSFiddle (long main content) ile karşılaştırın, betiğin gerçekten ana içerik uzunluğunun değişimi ile iyi çalışmadığını görebilirsiniz.
Ana içeriğiyle aynı alt konuma ulaşana kadar kenar çubuğunu kolayca kaydırmak için ihtiyacım olan çarpma faktörünü nasıl hesaplayabildiğimi anlamaya çalışıyorum. Eğer örnekte gördüğünüz gibi 1.
Cevabınız için teşekkür ederiz. İlk seçenekle ilgili olarak: Evet Sabit konumlandırmayı belirli bir dereceye kadar kullanabilirim, ancak sınırlamaları nedeniyle bunu önlemek isterim. Ayrıca, sabit bir çarpım faktörü belirleme seçeneğinizi de inceledim, ancak efekt, makaleden makaleye çok farklı olabilir. İkinci seçeneğiniz, "hareket eden" bir kenar çubuğudur. Bu, sorunumun dışarıdan genişleyen kenar çubuğu içeriğiyle nasıl çözüleceğinden emin değilim. Bunun nedeni, kullanıcının sayfaya kaydırmasıyla görünür hale gelmesidir. Her ne kadar ben herhangi bir sorunu çözdüğümü hissetmiyorum. – sankorati