DIVのピントずれ(ぼかし)実装方法
2022-01-08 11:55:02
DIVのマウスオーバーがアンチディザリングで消える
divタグ自体はonblurイベントに対応していないので、ボタンがクリックされたときにポップアップするdivの場合、onblurではできない、divのフォーカスが外れたときに消えるようにしたい。
しかし、onmouseoutとイベントを使って、DIVのフォーカスを失い、消滅させることは可能です。move outを消すためにonmouseoutを直接使うのは問題があるかもしれません。ボタンの位置とポップアップDivが重ならないと仮定すると、マウスが移動してすぐにonmouseoutイベントが発生し、あまり良いことはないでしょう。
アンチシェイク、onmouseout、onmouseoverを組み合わせて、きれいなブラーイベントを実現します。
/**
*Mouseover div event
*/
function moveOverEvent(ele,outTimer) {
let overTimer = null;
return function(){
clearTimeout(outTimer); //div is not gone in the case of moving in the div, then clear the last move out event
clearTimeout(overTimer); //anti-jitter
overTimer = setTimeout(()=>{
ele.style.display = "block";
},500);
}
}
/**
* mouseover
*/
function moveOutEvent(ele,outTimer) {
return function(){
clearTimeout(outTimer); // anti-shake
outTimer = setTimeout(()=>{ //wait 500ms after moving out, before disappearing this div
ele.style.display = "none";
},500);
}
}
それから、divにtabindex属性を追加することでblurイベントを実装できるものを見落としていたので、上記のコードは無駄かもしれません。(追記)上記の方が誤操作が少なくていいような気がします)
//After tabindex is set, the element is dashed by default and removed by outline=0 (IE sets hidefocus="true")
<div tabindex="0" outline=0" hidefocus="true"></div>
以上、本記事の全内容をご紹介しましたが、皆様の学習のお役に立てれば幸いです。また、Script Houseをより一層応援していただければ幸いです。
関連
-
ローカルフォルダから画像を読み込んで表示するHTMLサンプルコード
-
HTMLでHikvisionカメラのリアルタイム監視機能を実現
-
スクロールバーを非表示にするhtmlの簡易実装
-
HTMLのcellpaddingとcellspacing属性のグラフィックディテール
-
リンク使用時にハイパーリンクジャンプをブロックする方法
-
htmlフォームの「参照」ボタンをファイルアップロードに変更する方法
-
htmlスクロールバー・テキストエリアのプロパティ設定
-
テーブルの枠線/セルの区切り線を非表示にする方法
-
フォーム要素とプロンプトテキストの位置がずれる問題
-
セマンティックウェブページ XHTMLセマンティックマークアップ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン