我假設你彈出絕對定位,所以你能做到以下幾點:
- 雖然隱蔽,彈出
top
設置爲一個巨大的負值。這將它從屏幕上移開並擺脫滾動條。
- 在懸停時,將
top
設置爲正確的值並轉換opacity
值。
- 確保您的CSS
transition
規則僅適用於opacity
屬性。
HTML
<a href="">Popup go now</a>
<div class="popup">
My cat's breath smells like cat food...
</div>
CSS
.popup {
position: absolute;
top: -2000px;
opacity: 0;
transition: opacity 1s ease-in-out;
}
a:hover + .popup,
.popup:hover {
top: 30px;
opacity: 1;
}
這裏的上述in action。
更新:添加左擺,並清理鼠標移開動畫,可以使用下面的代碼:
.popup {
position: absolute;
top: -2000px;
width: 300px;
left: 0;
opacity: 0;
/* Animate opacity, left and top
opacity and left should animate over 1s, top should animate over 0s
opacity and left should begin immediately. Top should start after 1s. */
transition-property: opacity, left, top;
transition-duration: 1s, 1s, 0s;
transition-delay: 0s, 0s, 1s;
}
a:hover + .popup,
.popup:hover {
top: 30px;
left: 30px;
opacity: 1;
/* All animations should start immediately */
transition-delay: 0s;
}
它這樣做是如下:多個
- 動畫屬性被指定(不透明度,左,頂部)。
transition-delay
防止在不透明度和左側動畫完成之前更改頂部值。這裏的技巧是,當元素爲:hover
時,不會有任何延遲(不透明度,左側和頂部動畫都會立即開始)。但是,一旦:hover
不再處於活動狀態,頂部動畫會在開始前等待1秒鐘。這給了不透明度並留下足夠的時間來完成。
這是updated example。
來源
2011-09-28 01:35:11
Pat
你試過在使用JS的動畫之後刪除元素嗎? – Kai
我知道JS是一個理想的組合,但是如果在概念化方面遇到困難,你能否詳細說明一下? jQuery在這裏會很棒... – Brian
啊,我覺得我在看視頻後更好地理解了這個問題。我製作了一個「hovercard」,計算出屏幕大小,以確保它始終顯示在窗口的邊界內(防止滾動條)。看到這個代碼:https://github.com/kaimallea/Starcraft-2-Hovercards/blob/master/js/sc2-hovercards.js#L1727,讓我知道,如果這給你一個更好的主意 – Kai