前提・実現したいこと
CSSでカクつく動作を直したです。
次のソースコードで、<li>b</li>
をクリックしたら.fadeOut()
する機能があります。
その際の<li>c</li>
の移動を、現状のカクっではなく、スルっと上になめらかに移動したいのですが、どのように書けばよろしいでしょうか?
発生している問題
カクついてしまう
該当のソースコード
html
1<ul> 2 <li>a</li> 3 <li>b</li> 4 <li>c</li> 5</ul>
css
1li { 2 width: 200px; 3 height: 30px; 4 margin: 10px; 5 background: pink; 6}
jQuery
1$('li').click(function(){ 2 $(this).fadeOut(); 3});
試したこと
CSSでtransition
を追加するだけで解決できると考えましたが無理でした。
css
1li { 2 transition: 2s; / transition を追加 */ 3}
ならばアニメーションを作るのかと思い次を書きましたがうまくいかず、要素が被ってしまいました。(それに作ってから気づきましたが、li
の高さが可変なのでtranslateY(-30px)
では対応できなそうです。)
CSS
1li.surutto { 2 animation: surutto 2s both; /* surutto を追加 */ 3} 4 5/* アニメーションを作る */ 6@keyframes surutto { 7 0% { 8 transform: translateY(0px); 9 } 10 100% { 11 transform: translateY(-30px); 12 } 13}
jQuery
1$('li').click(function(){ 2 $(this).fadeOut(); 3 $(this).next('li').addClass('surutto'); // surotto を追加 4});
回答2件
あなたの回答
tips
プレビュー