javascript - div 当我在页面上时淡入,当我滚动时淡出

标签 javascript jquery html

在我的网站中,我希望某个 div 仅在显示页面的该部分时才会出现,并且在滚动时淡入和淡出。

我的代码如下:

bio.html

<div ng-controller="bioCtrl" id="bio">
    <h1 style="color:white">Here goes my biography</h1>

    <div id="bioContainer" style="display: none">
        <h3>My Name</h3>
        <p>Hi my name is Pluto and here I write some stuff about my bio.</p>
    </div>
</div>

JavaScript 如下

bio.js

angular.module('allApps').controller('bioCtrl', function($scope, $location, $window) {

    $(window).bind("scroll", function() {
        if ($(this).scrollTop() > 520) {
            $("#bioContainer").fadeIn();
        } else {
            $("#bioContainer").stop().fadeOut();
        }
    });
});

实际上,这工作得很好,但是,正如您所看到的,我说过当我滚动超过 520px 时必须开始淡入淡出。 现在,520px 对于我的计算机窗口来说已经足够了,但如果我有一个更小或更大的显示器,它将有一个不同的值,所以我想要的是当我进入“#bio”部分时淡入开始。

最佳答案

使用.offset().top获取#bio的顶部位置,然后只需调整if语句来检查是否$(this).scrollTop() 大于该值。

$(window).bind("scroll", function() {
    var fadeHere = $("#bio").offset().top
    if ($(this).scrollTop() > fadeHere) { 
        $("#bioContainer").fadeIn();
    } 
    // . . . 

#bio到达窗口顶部时,这将导致淡入。如果您希望在 #bio 首次出现在窗口底部时淡入,请使用

var fadeHere = $("#bio").offset().top - $(window).height()

这是一个工作 fiddle :https://jsfiddle.net/zqwhnkns/

关于javascript - div 当我在页面上时淡入,当我滚动时淡出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36604654/

相关文章:

javascript - 使用正则表达式替换或删除 javascript 中两个字符之间的特定字符

javascript - 不使用 eval() 绘制图形

javascript - 在 Angular 树组件上使用过滤器

javascript - 如何在谷歌图表中添加新的Y刻度

jquery - 菜单中的内容在重新加载/刷新页面时闪烁

jquery - 观察 jQuery 中的显示变化

javascript - 如何根据区域坐标显示一个div

javascript - 灯箱上带有 slider 的图库

javascript - jQuery:如何获取所选单元格的列标题和行标题

javascript - 无法显示进度条