2016-11-24 40 views
0

我有一個全屏覆蓋菜單。使用CSS打開和關閉可以獲得雙向過渡速度嗎?

.overlay { 
    height: 0%; 
    width: 100%; 
    position: fixed; 
    z-index: 70; 
    top: 0; 
    right: 0; 
    background-color:#415566; 
    overflow-y: hidden; 
    transition: 2.0s; 
} 

<div id="menuActive"><a href="javascript:void(0)" onclick="openNav()">&#9776;</a></div> 

<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a> 

我已經JS調用它來打開和關閉:

 function openNav() { 
     document.getElementById("navBar").style.height = "100%"; 
    } 

    function closeNav() { 
     document.getElementById("navBar").style.height = "0%"; 
    } 

是否有可能有openNav()closeNav()不同的過渡時間?目前,我只能控制兩者。

+0

想要在指定的時間段後打開和關閉嗎? –

+2

而不是更改元素高度,使用JS來切換元素類。比每個班級分配不同的過渡時間。 – skobaljic

+0

您設法爲您的JS代碼中的一個CSS屬性設置值。也許你管理它的第二個以及...? – CBroe

回答

1

您可以添加一個額外的類你.overlay修改過渡:

function openNav() { 
    var navBar = document.getElementById("navBar"); 
    navBar.style.height = "100%"; 
    setTimeout(function(){ 
     navBar.classList.add("opened"); 
    }, 2000) 
} 

function closeNav() { 
    var navBar = document.getElementById("navBar"); 
    navBar.style.height = "0%"; 
    setTimeout(function(){ 
     navBar.classList.remove("opened"); 
    }, 300) 
} 

和這個類的CSS可能是:

.opened { 
    transition: height 300ms; /* The duration you want... */ 
} 

另外,還要給予好的建議通過skobaljic在問題的評論關於使用JS來添加/刪除這類交互的類。

+0

謝謝。很好的幫助! – cmp

0

我們走吧。

function openNav() { 
$("#navBar").show(1000); 
} 

function closeNav() { 
$("#navBar").hide(); 
} 
+0

這會延遲開幕式轉換,但不會改變轉換的持續時間... –

+0

所以您想在開放時動畫? –

+0

似乎OP是要求不同的轉換時間,而不是轉換延遲... –