首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于div位置在向上滚动上滑动画

基于div位置在向上滚动上滑动画
EN

Stack Overflow用户
提问于 2015-12-10 09:51:41
回答 1查看 136关注 0票数 1

我试图通过使.header的背景向上滑动来创建一个更平滑的过渡,而不是在div "1“的底部到达页面顶部并且.header背景从白色变为透明时消失。我试图通过向CSS和jQuery添加类.BGupTranisition (//up scroll - else{)来实现这一点,但这不起作用?有人能指出我做错了什么吗??:-)

代码语言:javascript
复制
var lastScrollTop = 0;
$(window).on('scroll', function() {
    var header = $('.header');
    var stage0 = $('.stage-0');
    var scrollTop = $(window).scrollTop();
    if (scrollTop > lastScrollTop) {
        // down scroll
        if (scrollTop > stage0.offset().top + stage0.height()) {
            header.addClass('hide');
        }
    } else {
        // up scroll
        if (scrollTop <= stage0.offset().top + stage0.height()) {
            header.removeClass('headerBGchange headerLIchange');
        } else {
            header.removeClass('hide').addClass('headerBGchange headerLIchange BGupTranistion');
        }
    }
    lastScrollTop = scrollTop;
});
代码语言:javascript
复制
.header {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
    -webkit-align-items: center;
    -ms-flex-align: center;
    align-items: center;
    height: 80px;
    -webkit-transition: top .5s ease;
    transition: top .5s ease;
    position: fixed;
    width: 100%;
    top: 0;
    background-color: transparent;
    overflow: hidden;
}

.header ul {
    margin: 20px;
    padding: 0;
}

.header ul li {
    display: inline-block;
    margin-right: 20px;
    color: white;
}

.header ul li:last-child {
    margin-right: 0;
}

.hide {
    top: -80px;
}

.headerBGchange {
    Background: white;
}

.BGupTranistion {
   <!--slide back up animation-->
}

.header.headerLIchange ul li {
    color: Blue;
}
.stage {
    color: #fff;
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
    -webkit-justify-content: center;
    -ms-flex-pack: center;
    justify-content: center;
    -webkit-box-align: center;
    -webkit-align-items: center;
    -ms-flex-align: center;
    align-items: center;
    height: 100vh;
    background-color: bisque;
    font-size: 48px;
	
}
.stage-0 {
    background: black;
}

.stage-1 {
    background: #030202;
}

.stage-2 {
    background: #060505;
}

.stage-3 {
    background: #080707;
}

.stage-4 {
    background: #0b0a09;
}

.stage-5 {
    background: #0e0c0b;
}

.stage-6 {
    background: #110e0e;
}

.stage-7 {
    background: #141110;
}

.stage-8 {
    background: #161312;
}

.stage-9 {
    background: #191515;
}

.stage-10 {
    background: #1c1817;
}

.stage-11 {
    background: #1f1a19;
}

.stage-12 {
    background: #221d1c;
}

.stage-13 {
    background: #241f1e;
}

.stage-14 {
    background: #272120;
}

.stage-15 {
    background: #2a2422;
}

.stage-16 {
    background: #2d2625;
}

.stage-17 {
    background: #302827;
}

.stage-18 {
    background: #322b29;
}

.stage-19 {
    background: #352d2c;
}

.stage-20 {
    background: #38302e;
}

.stage-21 {
    background: #3b3230;
}

.stage-22 {
    background: #3e3432;
}

.stage-23 {
    background: #413735;
}

.stage-24 {
    background: #433937;
}
代码语言:javascript
复制
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<div class="header">
  <ul>
    <li>Home</li>
    <li>About</li>
    <li>Contact</li>
  </ul>
</div>
<div class="stage stage-0">1</div>
<div class="stage stage-2">3</div>
<div class="stage stage-4">5</div>
<div class="stage stage-6">7</div>
<div class="stage stage-8">9</div>
<div class="stage stage-10">11</div>
<div class="stage stage-12">13</div>
<div class="stage stage-14">15</div>
<div class="stage stage-16">17</div>
<div class="stage stage-18">19</div>
<div class="stage stage-20">21</div>
<div class="stage stage-22">23</div>

EN

回答 1

Stack Overflow用户

发布于 2015-12-10 10:12:42

请注意,背景是div的一个属性,它占据与div本身相同的区域。话虽如此,如果不移动div的内容而不使用text属性,就不能移出div的背景。

这个问题的解决方案是,如果你在.header { background: /* linear-gradient value here */ }中使用垂直的linear-gradient颜色,或者你可以在div.header后面创建另一个白色背景的div,当你想要的时候滑动起来,并使div.header背景透明。

第一种方法要求您根据javascript中的滚动值来计算值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34192383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档