3 回答

TA貢獻2065條經(jīng)驗 獲得超14個贊
您可以連接兩個或更多轉(zhuǎn)換,visibility這次是方便的。
div {
border: 1px solid #eee;
}
div > ul {
visibility: hidden;
opacity: 0;
transition: visibility 0s, opacity 0.5s linear;
}
div:hover > ul {
visibility: visible;
opacity: 1;
}
<div>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
不要忘記transition
屬性的供應(yīng)商前綴)
更多細節(jié)在本文中

TA貢獻1936條經(jīng)驗 獲得超7個贊
在本文發(fā)表時,如果您嘗試更改display
屬性,所有主流瀏覽器都會禁用CSS過渡,但CSS動畫仍然可以正常工作,因此我們可以將它們用作解決方法。
示例代碼: - (您可以相應(yīng)地將它應(yīng)用于您的菜單) 演示
將以下CSS添加到樣式表: -
@-webkit-keyframes fadeIn { from { opacity: 0; } to { opacity: 1; }} @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; }}
然后將fadeIn
動畫應(yīng)用于父hover上的子項: - (當(dāng)然設(shè)置display: block
)
.parent:hover .child { display: block; -webkit-animation: fadeIn 1s; animation: fadeIn 1s;}
更新2019 - 也支持淡出的方法:
(有些JS需要)
// We need to keep track of faded in elements so we can apply fade out later in CSS
document.addEventListener('animationstart', function (e) {
if (e.animationName === 'fade-in') {
e.target.classList.add('did-fade-in');
}
});
document.addEventListener('animationend', function (e) {
if (e.animationName === 'fade-out') {
e.target.classList.remove('did-fade-in');
}
});
div {
border: 5px solid;
padding: 10px;
}
div:hover {
border-color: red;
}
.parent .child {
display: none;
}
.parent:hover .child {
display: block;
animation: fade-in 1s;
}
.parent:not(:hover) .child.did-fade-in {
display: block;
animation: fade-out 1s;
}
@keyframes fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fade-out {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
<div class="parent">
Parent
<div class="child">
Child
</div>
</div>
添加回答
舉報