jquery - 我的 header 收缩转换未能触发我错过了什么?

标签 jquery css css-transitions

标题 http://www.loganyoung.za.net

应该发生什么:

  • 标题栏和 Logo 应在用户向下滚动时平滑缩小,然后在用户位于页面顶部时恢复到完整大小
  • 菜单栏应固定在缩小的标题栏底部,否则会完全消失

发生了什么:

  • 正常滚动;标题栏不会停留在 View 中,也不会发生任何转换。

我已经根据 this Animated Resizing Header On Scroll blog article 构建了转换.

呈现的标记如下所示:

<div class="mdl-layout mdl-js-layout">
    <header class="mdl-layout__header mdl-layout__header--scroll portfolio-header">
        <div class="mdl-layout__header-row portfolio-logo-row">
            <div class="mdl-layout__title">
                <div class="portfolio-logo"></div>
                <h1 class="mdl-layout__title">Software Development Portfolio</h1>
            </div>
        </div>
        <div class="mdl-layout__header-row portfolio-navigation-row mdl-layout--large-screen-only">
            <nav class="mdl-navigation mdl-typography--body-1-force-preferred-font">
                <a class="mdl-navigation__link" href="/">Portfolio</a>
                <a class="mdl-navigation__link" href="/about.php">About</a>
                <a class="mdl-navigation__link" href="/contact.php">Contact</a>
            </nav>
        </div>
    </header>
    <main class="mdl-layout__content">

    </main>
</div> <!-- end .mdl-layout container -->

<script>
    function Scroll() {
        window.addEventListener('scroll', function(e) {
            var Y = window.pageYOffset || document.documentElement.scrollTop;
            var Header = $(".portfolio-header");

            if (Y > 300)
            {
                Header.addClass("smaller");
            }
            else
            {
                Header.removeClass("smaller");
            } 
        });
    }
    window.onload = Scroll();
</script>

这是 CSS。我知道此处没有向上移动菜单的规则,但根据引用站点上的示例, Logo 至少应缩小。

/* Header scrolling */
.portfolio-header. {
    will-change: height;
    transition: height 0.3s;
    -o-transition: height 0.3s;
    -ms-transition: height 0.3s;
    -moz-transition: height 0.3s;
}
/* logo and menu both go into .mdl-layout__header-row divs */
.portfolio-header .mdl-layout__header-row:first-child {
    will-change:height;
    transition: all 0.3s;
    -o-transition: all 0.3s;
    -ms-transition: all 0.3s;
    -moz-transition: all 0.3s;
}
.portfolio-header.smaller {
    min-height: 64px;
}
.portfolio-header .mdl-layout__header-row.smaller {
    min-height: 64px;
}

我确实觉得我在这里错过了什么。这是什么?

最佳答案

您必须在 .portfolio-header 上指定高度。目前你只指定了新的高度,但没有任何动画开始的地方:

.portfolio-header {
    height: 300px;
}

关于jquery - 我的 header 收缩转换未能触发我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41832137/

相关文章:

html - CSS 过渡不起作用?

css - 应用文本溢出 :ellipses properly

伪元素上的 CSS3 转换 ( :after, :before) not working?

javascript - Ajax 调用卡住了 Internet Explorer 中的 UI,但在 Firefox 中工作正常

javascript - 异步函数回调返回值

CSS :not selector element of another class

javascript - 如何按范围移动文本

html - 为什么在 CSS 属性未更改时会发生 css 转换?

jquery - 使用 jquery css() 函数更改 'a' 属性也会更改 :hover, a :acive, a:focus 属性

jquery ajax加载图片在IE中不显示