javascript - 滚动元素上的渐变在Safari中突然消失

标签 javascript jquery html css safari

我正在使用一个名为ParallaxFade的Javascript函数并对其进行了更改,因此该元素不会完全淡化为opacity: 0。在Chrome中可以正常工作,但是当我在Safari中向上滚动(超出默认位置,在顶部触发橡皮筋)时,该元素完全消失。

我尝试将代码重置为淡化1-(scrollPos/100)而不是分数0.01+(75/scrollPos)的线性方式,并且在两种浏览器中都可以正常工作。

function parallaxFade() {
    var scrollPos = $(this).scrollTop();
    $('#element').css({
        'background-position' : '50% ' + (-scrollPos/1)+"px"
    });
    $('#element').css({
        'margin-top': (scrollPos/2)+"px",
        'opacity': 0.01+(75/scrollPos)
    }); 
}

$(document).ready(function(){
    $(window).scroll(function() {
        parallaxFade();
    });
});


我真的不想恢复为将元素一直淡入opacity: 0的默认线性方式。有什么我可以忽略的简单事情吗?这是我从头开始构建的第一个网站(不使用CMS),所以请原谅我的无知。

最佳答案

我突然想到,问题可能出在scrollPos变为0时。快速的if语句测试scrollPos > 0修复了该问题。不再出现故障淡入淡出/滚动:

function parallaxFade() {
    var scrollPos = $(this).scrollTop();
    if (scrollPos > 0) {
        $('#element').css({
        'background-position' : '50% ' + (-scrollPos/1)+"px"
    });
    $('#element').css({
        'margin-top': (scrollPos/2)+"px",
        'opacity': 0.01+(75/scrollPos)
    }); 
}

关于javascript - 滚动元素上的渐变在Safari中突然消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57657498/

相关文章:

javascript - ngTouch 的 ngClick 阻止复选框和视频在大多数移动设备上工作

JavaScript 和正则表达式 : Split and keep delimiter

javascript - Google Maps Javascript - 放大时禁用 3d View

javascript - UL 标签 - 根据等级添加等级

javascript - 如何在 jQuery 和 SASS 中制作一个轻轻闪烁的按钮?

javascript - 不确定为什么 .css() 不会改变 div 质量

javascript - 正则表达式删除引号内的空格

javascript - 添加向上滚动到动画面板

javascript - 如何跨域获取iframe contentWindow高度

javascript - 在后台加载图像而不应用 CSS 样式