【Webフロントエンド】移動端H 5の開発で遭遇したピット
2248 ワード
textarea textareaの下部は常に親要素と間隔を置いており、vertical-align:middleを設定することで を除去できます. textareaの高度適応ソリューションで、最大高さを制御する必要がある場合はclassにmax-heightを設定すれば になります.
メニューの長押しを禁止する
*セレクターを使用しているので、a要素も含めているので注意して、a要素を避ける必要がある場合は、もう1つnotを追加します
しょうてんフォーカスを失うのはos行為であり、ブラウザ制御ではないため、現在の入力ボックスにフォーカスがあることを実現するには、他の要素をクリックした後にフォーカスを失うことなく、クリックイベントを自分で処理して入力ボックスに再びフォーカスを取得させることでこの効果を実現することができる . focusとblurの2つのイベントはバブルをサポートしません(ただしキャプチャをサポートします)、バブルをサポートするイベントはfocusinとfocusoutで、イベントの発生順序:focusin->focus->focusout->blur tabindexプロパティを設定することで、元のフォーカスを取得できない要素がフォーカス を取得できるようにすることができる.
仮想キーボード入力パネルの外部をクリックするときに仮想キーボードを収納し、フォーカスで解決するのが面倒な場合(パネルに入力ボックスだけでなく他の要素がある場合)は、パネル上の1階のコンテナにクリック処理イベント(vueなら@touchstart.capture)を追加し、イベント処理コードで判断することができます.クリックされた要素がパネル上の要素なのかパネル外の要素なのかを決定し、パネルが を隠すかどうかを決定する.
クリッククリックとダブルクリックを判別するために、touchendイベント300 ms後には他の操作がなく、clickイベントが発生し、clickイベントはタッチイベントの終了を示す.したがって、クリックによってフローティングレイヤが消失するというシーンは、注意しないとクリックスルーが発生しやすく、すなわちフローティングレイヤがtouchendを使用して自分を消失させるが、フローティングレイヤの下のクリック位置にはちょうど要素がclickイベントをバインドしているので、その要素のclickイベントがトリガーされ、クリックスルーが発生する.フローティングレイヤがclickイベントを使用するか、フローティングレイヤのtouchendがpreventDefaultでclickを無視します.
animation animation-delayは、アニメーションの初回起動時のみ遅延しますが、ループアニメーションであれば、次回からはこの遅延はありません. アニメーションの再生を制御するには、animationを1つのclassに設定し、アニメーションを再再生する必要がある場合は、まずこのclassを削除してからこのclassを追加すればよいのですが、ここでは単純にこの2つのステップを一緒に置くだけでブラウザに最適化される可能性があることに注意してください.次の3つの方法があります 削除後強制ブラウザ再描画 追加
除去後と追加との間には時間間隔 がある. settimeoutで実行され、ブラウザは を最適化しません.
メニューの長押しを禁止する
// css ios
*:not(input):not(textarea) {
-webkit-user-select: none; /* disable selection/Copy of UIWebView */
-webkit-touch-callout: none; /* disable the IOS popup when long-press on a link */
}
// android body h5 contextmenu
window.document.body.addEventListener('contextment', function(e) {
e.preventDefault();
});
*セレクターを使用しているので、a要素も含めているので注意して、a要素を避ける必要がある場合は、もう1つnotを追加します
しょうてん
仮想キーボード
クリック
animation
element remove class;
void element.offsetWidth; // reflow
add class;
element remove class;
setTimeOut(element add class, 100);
setTimeout(() => {
element remove calss;
element add class;
}, 100);