JS/CSS解决方案的滚动事件,与移动Safari兼容
JS/CSS Solution for on scroll events, compatible with mobile Safari
在许多web应用程序中,我经常需要一个JS和/或CSS解决方案,允许我随着用户在页面上向下/向上滚动而(增量)更改对象的CSS值。
http://codepen.io/bsley/pen/gGyhmfunction EasyPeasyParallax() {
var scrollPos = $(document).scrollTop();
$('.header').css({ 'opacity': 1-(Math.min(scrollPos/70,1)) });
};
$(document).ready(function() {
$('body').bind('mousewheel', EasyPeasyParallax);
});
以上代码的问题是双重的。
它只允许我控制基于PX变量的数学,而不是相对于屏幕的高度或宽度的任何百分比。
Mobile Safari不兼容
请告诉我如何在满足上述两点的情况下完成相同的工作?
要解决移动safari问题,绑定scroll
事件而不是mousewheel
。
$(document).ready(function() {
$('window').bind('scroll', EasyPeasyParallax);
});
就百分比而言,您必须使用其他值自己计算它们。
function EasyPeasyParallax() {
var scrollPos = $(document).scrollTop(),
bodyHeight = $('body').height(),
viewportHeight = $('window').height(),
scrollPercentage = (scrollPos / bodyHeight) * 100;
$('.header').css({ 'opacity': 1-(Math.min(scrollPos/70,1)) });
};
可以将.css样式内联到纯javascript中。只使用:
var nodes = document.getElementsByClass('header');
var i = 0;
for(var i = 0; i < nodes.length; i++){
nodes[i].style.opacity = .5;
nodes[i].style.left = someLeftVal + '%';
}
你可以计算任何你需要的百分比
关于第二点(我相信你已经知道如何解决第一个问题)…
移动浏览器(尤其是Safari)不支持真实的 'scroll'事件。它们只是在目标停止滚动后触发一次滚动事件。视图在滚动时停止渲染,所以你不能根据scrollTop动态改变"不透明性"。你需要的是一个像' isscroll '这样的库来处理滚动事件
相关文章:
- 防止在移动Safari(iPad/iPhone)中长按/长按默认上下文菜单
- html视频javascript播放方法在移动Safari中不起作用
- 检测通过移动 Safari 中的 JavaScript 关闭浏览器选项卡
- 在移动 Safari 上向下拖动时,触摸事件停止触发 - iPad HTML5
- jQuery .play() 在移动 Safari 上不起作用
- 如何将Javascript事件附加到移动Safari后退按钮
- 移动safari浏览器的滚动问题
- 删除的DOM元素仍然显示在移动safari(iOS 5.1)中
- window.open()没有'无法在添加到主屏幕的移动Safari web应用程序中工作
- jQuery:jQuery.val()在移动Safari和Chrome中不起作用
- 来自第三方身份验证的 Firebase 身份验证数据在移动 safari iOS8 中始终为空
- Facebook移动Safari无法正常工作
- 当用户在移动 Safari 浏览器上离开页面时暂停声音
- jQuery 显示在移动 Safari 上的 标签上
- 在移动 Safari 中隐藏/显示内联 SVG 时遇到问题
- 移动 Safari 垂直滚动 - 如何在 Javascript 中检测窗口何时停止移动
- iOS 移动 Safari 服务工作进程缓存限制
- JavaScript DOM 在 touchmove 中的更改延迟到移动 Safari 上的滚动结束
- 移动 Safari 不接受 HTML5 Meter 输入值
- 移动 Safari 中的 HTML5 仪表