我正在为希望将视差效果应用于所有前景元素(无背景视差)的客户开发网页。这个网站的宽度为1234像素,高度为9000像素(所有图像,大背景图像和带前景元素透明度的PNG),并且有几个前景元素。我已经使用带有iscroll.js的stellar.js来创建一个基于iOS的新滚动条。 视差是平滑而简单的,你向下滚动,元素上升,反之亦然,但我遇到的问题(我已经联系了stellar.js开发人员,但我还在等待答案,希望他看到这个:))我有这种弹性效果,在某些情况下它会将我的视口卡在某个scrollTop上。让我们说,我加载网络,一切都很好,但突然我转到页面的顶部(例如,它发生在任何scrollTop),它反弹并显示像iOS一样的“棋盘格”,然后它就像一个停止从顶部向下几个像素,当我尝试从那里向上滚动时,它会反弹回那个位置。
我在SO搜索了一些有这个问题的帖子,并且在某种程度上帮助我的答案(从一开始我就遇到了这个问题,但我甚至无法向下滚动)就是这个:
iScroll Not scrolling content, just bounces back to top
那篇文章描述了我与stellar / iscroll相同的问题,并且更改这些CSS属性帮助我最小化反弹,但它仍然会发生。我为#wrapper
#scroller
元素尝试了很多高度组合,但是接下来的回答意味着我的#scroller
比内容高得多,所以当我向下滚动时我会看到这个巨大的黑色背景,直到它反弹到内容的底部。
我会为你提供一些代码,因为它没有完成而无法分享网页,我的客户要求我不要分享。
这是在<head>
,我在这里初始化插件,我从移动视差(http://markdalgleish.com/2012/10/mobile-parallax-with-stellar-js/)上的stellar.js教程中获取了模板:
<meta name="viewport" content="width=device-width, initial-scale=0.62, maximum-scale=0.62, minimum-scale=0.62, user-scalable=no">
<script src="js/vendor/jquery-1.9.1.min.js"></script>
<script src="js/vendor/iscroll.js"></script>
<script src="js/vendor/jquery.stellar.js"></script>
<script type="text/javascript">
function loaded() {
var ua = navigator.userAgent,
isMobileWebkit = /WebKit/.test(ua) && /Mobile/.test(ua);
if (isMobileWebkit) {
$('html').addClass('mobile');
}
$(function loaded(){
var myScroll;
if (isMobileWebkit) {
setTimeout(function () { myScroll = new iScroll('wrapper', { useTransform: true, useTransition: false } ); }, 5000);
setTimeout(function () { myScroll.refresh() }, 10000);
$('#scroller').stellar({
scrollProperty: 'transform',
positionProperty: 'transform',
});
} else {
$.stellar({
horizontalScrolling: false,
});
}
});
};
document.addEventListener('DOMContentLoaded', function () { setTimeout(loaded, 100); }, false);
document.addEventListener('DOMContentLoaded', loaded, false);
</script>
<body onload="loaded()">
<div id="wrapper">
<div id="scroller">
<div id="fg" data-role="content">
<!-- all the backgrounds, I load them with the js preloader and apply them as a background-image -->
<div id='rff-bg0'></div>
<div id='rff-bg1'></div>
<div id='rff-bg2'></div>
<div id='rff-bg3'></div>
<div id='rff-bg4'></div>
<div id='nav-bar' data-position="fixed"> <-- This nav-bar has to be fixed because is used to navigate the web
<!--some buttons here-->
</div>
<!-- lots of divs, these are the foreground parallax elements, all with the data-stellar-ratio="", this is working great -->
</div>
</div>
</div>
</body>
CSS,我将分享影响视差的特定部分,包括恒星插件和iscroll插件,这个片段也取自上面提到的恒星教程:
.mobile body {
overflow: hidden;
}
.mobile #wrapper {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 100%;
height: 9052px;
z-index: -1;
background-color: #000;
}
.mobile #scroller {
height: 20000px;
background-color: #000;
}