基於此回答Overlay divs on scroll我試圖做同樣的效果。僅限Chrome瀏覽器:使用固定位置滾動功能滾動覆蓋div的問題
當你滾動的部分被覆蓋在同一個地方 - 一個堆積在下一個。
在Firefox上 - IE瀏覽器工作正常,但在Chrome上(最新版本 - 版本31.0.1650.63米),當您滾動時,下一張幻燈片開始顯示正在重疊的部分內容被反彈。
邏輯:
當下一幻燈片/部分即將設置position:fixed;
到將要重疊的部分。
基本HTML
<section class="section">
<div class="section-inner">
<div class="table-cell">
<div class="container clearfix">
//conten goes here with img etc.
</div>
</div>
<img src="imgsrc" class="secondary-background-image">
</div>
</section>
的CSS:
html, body {
height: 100%;
margin: 0;
padding: 0;
}
body {
overflow-x: hidden;
}
.section {
position: relative;
z-index: 5;
background: #FFFFFF;
}
.section-fixed {
z-index: 1;
}
.section-inner {
width: 100%;
height: inherit;
display: table;
}
.section-fixed .section-inner {
position: fixed;
top: 0;
left: 0;
z-index: 2;
}
.table-cell {
width: 100%;
display: table-cell;
vertical-align: middle;
height: inherit;
}
.section .secondary-background-image {
position: absolute;
bottom: 0;
left: 0;
}
.container {
position: relative;
width: 700px;
margin: 0 auto;
padding: 0;
}
.clearfix:before, .clearfix:after {
content:" ";
display: table;
}
.clearfix:after {
clear: both;
}
基礎JS:
$(function() {
// Set up vars
var _window = $(window),
panels = $('.section'),
winH = _window.height();
panelsY = [];
// Cache position of each panel
$.each(panels, function(i, el) {
$(this).css('height', winH);
panelsY.push(panels.eq(i).offset().top);
});
// Bind our function to window scroll
_window.bind('scroll', function() {
updateWindow();
});
// Update the window
function updateWindow() {
var y = _window.scrollTop();
// Loop through our panel positions
for (i = 0, l = panels.length; i < l; i++) {
/*
Firstly, we break if we're checking our last panel,
otherwise we compare if he y position is in between
two panels
*/
if ((i === l - 1) || (y >= panelsY[i] && y <= panelsY[i+1])) {
break;
}
};
// Update classes
panels.not(':eq(' + i + ')').removeClass('section-fixed');
panels.eq(i).addClass('section-fixed');
};
});
用一個簡單的文本內容的工作文件,http://jsfiddle.net/amustill/wQQEM/
的jsfiddle文件在chrome中工作,因爲佈局非常簡單,divs沒有屏幕高度。在我的網站,我猜是因爲divs需要屏幕的高度,而且我有很多圖像,文本等問題發生。
因此,問題發生在該部分採用類部分固定並且部分內部的位置被設置爲固定的時刻。
編輯
我把nicescroll.js也使滾動更加順暢。問題仍然存在,但「平滑」。
該網站還是jsfiddle? – Laxmana
Xmm奇怪。我測試了很多電腦,並得到了相同的結果 – Laxmana
我禁用了它們,但都沒有運氣。該網站已上架。謝謝你的幫助。新年快樂! – Laxmana