移動端:active,:hover無法很好觸發動畫的解決方案
1:問題環境:
用css3定義了一個動畫,使用:hover偽類調用動畫時在移動端不能很好的進行動畫.
2:解決方案:
定義一個open類,滿足open類的情況下觸發動畫
使用js事件去控制動畫,當滑動的時候加上open類,然后延遲與動畫相同的時間移除open類
這樣就能很好的控制動畫了
3:附上demo
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <title></title> <style> .nav{width:100%;height: 200px;background-color: blue;} /*動畫調用滿足條件*/ .nav.open{-webkit-animation:change 2s linear running} /*定義動畫*/ @-webkit-keyframes change{ from{height: 200px;} to{height: 300px;} } </style> </head> <body> <div class="nav"></div> <script type="text/javascript"> var nav=document.querySelector('.nav');//獲取div nav.addEventListener("touchstart",StartAnimation,false);//添加觸摸事件 //開始動畫 function StartAnimation() { document.querySelector('.nav').className="nav open";//添加open類 setTimeout('StopAnimation()',2000);//延遲關閉動畫 移除open類 } //結束動畫 function StopAnimation() { document.querySelector('.nav').className="nav"; } </script> </body> </html>