being advisedの後にjQueryアニメーションからCSSアニメーションに切り替えてモバイルメニューアニメーションをよりスムーズにするために、スマートフォンに表示されるモバイルメニューのアニメーションがジャーキーであり、改善するために何をすべきかわかりません。スマートフォンで私のシンプルなCSSトランジションアニメーションがぎこちないのはなぜですか?
JS:
$('.header__menu_icon').click(function() {
var allClasses = 'right_0 right_280 right_minus_280';
$('.mobile_menu, .wrap').removeClass(allClasses);
if ($('.wrap').css('right') == '0px') {
$('.wrap').addClass('right_280');
}
else {
$('.wrap').addClass('right_0');
}
});
CSS:
.mobile_menu {
width: 280px;
position: absolute;
right: -280px;
}
.right_0 {
right: 0 !important;
}
.right_280 {
right: 280px !important;
}
.right_minus_280 {
right: -280px !important;
}
body,
.wrap,
.mobile_menu {
transition: all 0.2s ease-in-out;
}
HTML:
<body>
<div class='wrap'>
<div class='header'>
<div class='mobile_menu'>
...
</div>
</div>
</div>
</body>
EDIT:以下@ GaijinJimの回答に基づいて 新しいコード。
JS:
$('.header__menu_icon').toggle(function() {
$('.wrap').removeClass('mobile_menu_opening mobile_menu_closing');
$('.wrap').addClass('mobile_menu_opening');
}, function() {
$('.wrap').removeClass('mobile_menu_opening mobile_menu_closing');
$('.wrap').addClass('mobile_menu_closing');
});
CSS:
@keyframes mobile_menu_opening {
0% {
transform: translateX(0px);
}
100% {
transform: translateX(-280px);
}
}
@keyframes mobile_menu_closing {
0% {
transform: translateX(-280px);
}
100% {
transform: translateX(0px);
}
}
.mobile_menu_opening {
animation-name: mobile_menu_opening;
animation-duration: 2s;
}
.mobile_menu_closing {
animation-name: mobile_menu_closing;
animation-duration: 1s;
}
.wrap {
position: relative;
}
すべてのトランジションではなく、特定のプロパティを使用してみてください。 – Musa
[こちら](https://blog.alexmaccaw.com/css-transitions)について読むことができるCSS Transformsを使用することをお勧めします。これはあなたの携帯に大きなパフォーマンス上の影響を与えます。 – GaijinJim
これに関するすべてのニュース? – GaijinJim