在CSS動畫中,我們常常需要讓元素先減速運動,然后再加速到目標位置。這種效果可以通過CSS屬性來實現。
.box { animation-name: speed; animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1); animation-duration: 2s; } @keyframes speed { 0% { transform: translateY(-100px); } 60% { transform: translateY(30px); } 100% { transform: translateY(0); } }
上述代碼中,我們使用了cubic-bezier函數來定義了一個先減速后加速的運動軌跡。函數的四個參數分別代表起點、控制點1、控制點2及終點的坐標,這里我們定義了一個淡入淡出的動作。
animation-timing-function屬性可以讓動畫效果更為流暢,可以像例子中一樣使用cubic-bezier函數來自定義運動軌跡,也可以使用ease-in-out等內置的運動模式。
animation-duration屬性定義了動畫的持續時間,我們設置為2s,也可以根據具體需求調整。在我們的例子中,元素先沿Y軸負方向運動100px,然后在到達60%的時候向Y軸正方向運動30px,最后到達目標位置。
這就是如何使用CSS來實現元素先減速后加速的運動效果。通過巧妙地應用animation-timing-function和animation-duration屬性,我們可以輕松地創造出各種動態效果,讓網頁更加生動有趣。