我創建了一個固定的,動畫的導航欄,縮小滾動條。目前,如果ypos> 10,它會從150縮減到100。但是,我想爲縮小添加第二個階段。所以如果ypos> 10但是< 40,它執行狀態1,如果它大於40,它執行狀態2,這將從100縮小到50.增量縮小動畫導航欄
問題:我可以得到第一階段的工作,但是我不知道如何觀察縮小的第二個狀態,或者如何添加改變第一個的第二個類。
function shrink()
{
\t ypos = window.pageYOffset;
\t var topBar = document.getElementById("Top-Bar");
\t
\t if(ypos > 10 && ypos < 39)
\t {
\t \t topBar.classList.add("shrink");
\t }
\t else if(ypos > 40)
\t {
\t \t topBar.classList.add("secondShrink");
\t }
\t else
\t {
\t \t topBar.classList.remove("shrink");
\t \t topBar.classList.add("secondShrink");
\t }
};
window.addEventListener("scroll", shrink)
#Top-Bar
{
\t height: 150px;
\t width: 100%;
\t background-color: #ccc;
\t display: flex;
\t justify-content: center;
\t align-items: center;
\t transition: all .2s ease;
\t position: fixed;
\t z-index: 2;
}
#Top-Bar.shrink
{
\t height: 100px;
\t transition: all .2s ease;
}
#Top-Bar.shrink.secondShrink
{
\t height: 50px;
}
.content
{
\t content: "";
\t height: 1200px;
\t position: relative;
\t z-index: 1;
}
<div id="Top-Bar">
<h1>Site Title</h1>
</div>
<div class="content"></div>
我試圖重新從以下頁面的效果:http://www.newmediacampaigns.com/blog/responsive-site-header
你錯過了'else'。最後的條件 - 刪除'shrink'並添加'secondShrink' - 在頁面的每個滾動中都會發生。 – Santi
這只是一個miscopy。代碼的結構仍然不會工作,即使那裏有...這就是爲什麼我尋求幫助 –
那麼,你可能應該通過編輯你的問題來補救它,否則這將是大家指出的第一件事。在目前的形式中,你的片段絕對沒有任何用處 - 至少在'else'中,它開始生成動畫。 – Santi