我已經制作了一個小的CSS下拉按鈕/菜單,我現在試圖動畫。動畫css下拉懸停菜單
我不得不徘徊在父母的時候開始從display: none
去display:block
菜單,但我不能動畫這一點 - 所以我試圖交換到opacity: 0, height: 0
到opacity: 1, height: auto
但這導致與菜單一些奇怪的功能。讓我告訴你我的意思。這裏是原來的菜單代碼:
HTML:
<div className="account-dropdown">
<button className="dropbtn">
<FormattedMessage
id="header.account"
defaultMessage={`Account`} />
</button>
<div className="dropdown-content">
<a>Order History</a>
<a>Settings</a>
<a onClick={logOut}>Logout</a>
</div>
</div>
的SCSS:
.account-dropdown {
position: relative;
display: inline-block;
&:hover {
.dropdown-content {
display: block;
}
.dropbtn {
color: red;
}
}
.dropbtn {
border: none;
cursor: pointer;
margin: 2rem 1rem;
transition: all 0.3s;
color: black;
background-color: #fff;
}
.dropdown-content {
display: none;
padding: 3rem 3rem 1rem 3rem;
position: absolute;
top: 5rem;
left: -17.6rem;
background-color: #fff;
min-width: 250px;
width: 100%;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2);
border: solid 1px #e8e8e8;
z-index: 1;
color: rgba(0, 0, 0, 0);
transition: all 0.3s;
&:after, &:before {
bottom: 100%;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
}
&:after {
border-color: rgba(255, 255, 255, 0);
border-bottom-color: #ffffff;
border-width: 7px;
left: 75%;
margin-left: 26px;
}
&:before {
border-color: rgba(113, 158, 206, 0);
border-bottom-color: #e8e8e8;
border-width: 8px;
left: 75%;
margin-left: 25px;
}
a {
text-align: left;
color: black;
padding-bottom: .8rem;
text-decoration: none;
display: block;
cursor: pointer;
transition: all 0.3s;
&:hover {
color: black;
}
&:last-child {
margin-top: .4rem;
padding-top: .8rem;
border-top: solid 1px #e8e8e8;
}
}
}
}
這是在小提琴上運行(不REMS或SCSS瓦爾)https://jsfiddle.net/tqf1r0mm/7/
當我將顯示器交換爲不透明度和高度時,這裏是一個小提琴 - >https://jsfiddle.net/tqf1r0mm/10/。
你可以看到動畫是非常棒的,而且如果你將鼠標懸停在賬戶按鈕下方,菜單打開(我只想在用戶懸停帳戶時打開它)。
關於如何解決這個問題,以獲得一個很好的流暢動畫的任何想法?任何建議都會很棒。謝謝!
您是否想要添加別的東西? – ajmajmajma
抱歉,這是我第一次在這裏回答,我編輯了答案,我的意思是你可以取代高度:0;和高度:自動;通過可見性:隱藏;和可見性:可見; – Argenis