我有一個<div>
是conditionaly有以下兩種類型之一 -CSS3過渡工作的一種方式,但不是其他
ng-class="{'visible': sidebarShown, 'hidden': !sidebarShown}"
最初班上總是會hidden
,當visible
替換類width
, left
和opacity
屬性都使用CSS3轉換動畫。
但是,當hidden
類重新編號爲visible
時,動畫不會反轉,並且立即將所有三個屬性的新值切換爲即時。
我試着加入transition
屬性的樣式兩種.visible
和.hidden
,以及每個獨立,但在所有情況下,只有visible
動畫作品。
我在這裏做錯了什麼?
有關HTML
<div id="modal" data-ng-if="isMobile"
data-ng-class="{'visible': sidebarShown, 'hidden': !sidebarShown}">
</div>
CSS爲#modal.hidden
和#madal.visible
.mobile #modal{
position: absolute;
}
.mobile #modal.hidden{
left: 0;
opacity: 0;
width: 100%;
}
.mobile #modal.visible{
background-color: #000000;
height: 100%;
left: 271px;
opacity: 0.8;
right: 0;
width: calc(100% - 271px);
z-index: 99;
-webkit-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
}
進一步試圖
我現在發現最初缺少height
是問題。下面的代碼仍然只有一種方式。
我需要什麼 -
.mobile #modal.hidden { height: 0; }
.mobile #modal.visible { height: 100%; }
當從過渡到.hidden
的.visible
的height
應該vaule立即改變。然而,height
應該在延遲0.5s
之後轉換,以允許其他動畫完成。我已經提出了下面的代碼,但它仍然不是那裏。
.mobile #modal{
left: 0;
opacity: 0;
position: absolute;
width: 100%;
-webkit-transition: left 0.5s ease-in-out,
opacity 0.5s ease-in-out,
width 0.5s ease-in-out;
transition: left 0.5s ease-in-out,
opacity 0.5s ease-in-out,
width 0.5s ease-in-out;
}
.mobile #modal.hidden{
height: 0;
-webkit-transition: height 0 ease-in-out 0.5s;
transition: height 0 ease-in-out 0.5s;
}
.mobile #modal.visible{
background-color: #000000;
height: 100%;
left: 271px;
opacity: 0.8;
right: 0;
width: calc(100% - 271px);
z-index: 99;
}
嘗試將'transition'規則放在'.mobile#modal'而不是'.mobile#modal.visible'上。 – Xufox
轉換應該在默認情況下設置一次,似乎像#modal這裏:)。其他每個規則,但redondant –
thnks的建議,但這也行不通。我也嘗試刪除'.mobile#modal.hidden'(將屬性放置到'.mobile#modal'),但也失敗了。 –