Ninja Forms Multi-Part Form アドオンに付属のプログレス バーを使用しています。プログレス バーの設定は次のとおりです。
<div class="nf-progress-container">
<div class="nf-progress" style="width: 0%;"></div>
</div>
マルチパート フォームの後続の各パートに進むと、一部の JS または jQuery がインラインstyle
属性の幅を変更.nf-progress
div
し、各ステップが完了するとプログレス バーがいっぱいになります。
視覚化しやすいように、スタイルを適用した私の UI は次のようになります。
.nf-progress
各ステップが完了するたびにプログレス バーが divをアニメーション化するようにしたいと思います。と同じくらい簡単になると思ったtransition: width 1s ease;
のですが、うまくいきません(でも-webkit-transition
)。これが私が試したものです。
.nf-progress-container .nf-progress {
transition: width 1s ease;
-webkit-transition: width 1s ease;
}
もう少し調査したところ、transition
css プロパティを使用してインライン スタイルをアニメーション化できないことがわかりました。理由はわかりませんが、どうやらできないようです。
私は掘り下げ続け、純粋なCSSアニメーションキーフレームでここに近づく記事を見つけました.
@-webkit-keyframes progress-bar {
0% { width: 0; }
}
@-moz-keyframes progress-bar {
0% { width: 0; }
}
@keyframes progress-bar {
0% { width: 0; }
}
.nf-progress-container .nf-progress {
-webkit-animation: progress-bar 1s;
-moz-animation: progress-bar 1s;
animation: progress-bar 1s;
}
ここでの利点は、実際にある種のアニメーションを取得できることです。ただし、このアプローチの問題width:0%
は、進行状況バーのすべてのステップでアニメーションが開始されることです。要素を以前の幅から新しいインライン スタイルの幅に移行させたいと考えています。
CSSでこれを行う方法を知っている人はいますか、またはjQueryでこれを達成する方法はありますか?