ドロップダウンがbootstrap(4.0)に陥るネイティブの方法はアニメーション化されません。折りたたまれたときのnavbarのように「スライド」を開くにはどうすればよいですか?
ドロップダウンがナビゲーションバー内にあることに注意してください。以下をご覧ください。 https://www.codeply.com/go/JKj5onR3ug
<nav class="navbar navbar-dark bg-dark">
<a class="navbar-brand" href="#">Never expand</a>
<button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#navbarsExample01" aria-controls="navbarsExample01" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse" id="navbarsExample01" style="">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#">Disabled</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a>
<div class="dropdown-menu" aria-labelledby="dropdown01">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li>
</ul>
</div>
</nav>
transform: scale
を使用して純粋なCSSでドロップダウンアニメーションを作成した方法は次のとおりです。
SCSSスタイル
.dropdown {
.dropdown-menu {
transition: all 0.5s;
overflow: hidden;
transform-Origin: top center;
transform: scale(1,0);
display: block;
}
&:hover {
.dropdown-menu {
transform: scale(1);
}
}
}
Codepen のデモを確認してください
最も簡単な方法は、「ドロップダウン」の代わりに「折りたたみ」を使用して切り替えることです。次に、collapsing
アニメーションがアクティブなときに表示されることを確認するために、少しのCSSが必要です。 position-relative
はdropdown-menu
。
.dropdown-menu.collapsing {
display:block;
}
「ドロップダウンは、Popper.jsのおかげで配置されます(ナビゲーションバーに含まれている場合を除く)。」
Navbar内のドロップダウンの配置が異なる 標準のボタンドロップダウンを使用した別の例: https://www.codeply.com/go/vJhVEh9Okd
別の方法は、 Bootstrap 3.xドロップダウンアニメーションテクニック のいずれかを使用することです。
ドロップダウンのcssをオーバーライドする必要があります。このCSSを使用してください。
.dropdown-menu {
display: block;
}
.navbar-nav .dropdown-menu {
max-height: 0;
overflow: hidden;
transition: max-height 0.5s;
}
.navbar-nav .dropdown-menu.show {
max-height: 500px;
}