これは愚かな質問かもしれませんが、私は苦労しています。私はjavascriptによってトリガされた小さな画面用のスライドイン・アウトナビゲーションメニューが必要です。これは私が現在持っているものです。逆JavascriptトリガーCSSアニメーション
HTML
<nav class="responsive">
<ul class="nav-list unstyled">
<li class="nav-item"><a href="#">Shop</a></li>
<li class="nav-item"><a href="#">Our Story</a></li>
<li class="nav-item"><a href="#">Information</a></li>
<li class="nav-item"><a href="#">Magazine</a></li>
<li class="nav-item"><a href="#">Contact</a></li>
</ul>
</nav>
SCSS
nav.responsive {
ul {
text-align: center;
list-style-type: none;
padding: 0;
margin: 0;
display: none;
transform: translateX(-100%);
background-color: #fafafa;
li {
a {
display: block;
padding: 12px;
border-bottom: 1px solid #dadada;
}
}
&.menu-list-active {
display: block;
animation: slide-in 0.5s forwards;
}
}
@media only screen and (min-width: 720px) {
ul {
display: block;
transform: none;
li {
display: inline-block;
a {
border-bottom: none;
}
}
}
}
div.nav-mobile {
display: block;
height: 48px;
width: 48px;
position: absolute;
top: 0;
right: 0;
background-color: #999999;
cursor: pointer;
&.menu-button-active {
background-color: #555555;
}
@media only screen and (min-width: 720px) {
display: none;
}
}
}
@keyframes slide-in {
100% { transform: translateX(0); }
}
Javascriptを
// Create the mobile navigation toggle button
var mobile = document.createElement('div');
mobile.className = 'nav-mobile';
document.querySelector('nav.responsive').appendChild(mobile);
// Set some variables
var mobileNav = document.querySelector('.nav-mobile');
var navList = document.querySelector('.nav-list');
// Handle showing the menu
mobileNav.onclick = function() {
this.classList.toggle('menu-button-active');
navList.classList.toggle('menu-list-active');
};
これはうまくいき、メニューは私が望むようにスライドしています。しかし、nav-mobile
ボタンをクリックしたときに再度スライドしてもらいたい。私は最初にul
をアニメーション化しようとしましたが、それは画面サイズが縮小されたときに、私が望まないメニューをスライド表示することを意味します。ページが小さな画面に読み込まれるとき、メニューが表示されないようにするのが理想的です。
私が望むようにこれを動作させる方法はありますか?ここ
EDIT
Codepen:
http://s.codepen.io/mikehdesign/debug/wgLxYp/bZMQWyLvZYVA
ここでは 'animation'ではなく' transition'を使用してください。問題が解決します。ですから、 'アニメーション:slide-in .5s'はあなたのulそのものに' transition:transform .4s'とすべきです。その後、常にトランジションがきれいにアニメーション化されます。 – somethinghere