ホバーイベントに反応するJavascriptによるDOMの変更や、:hoverセレクターによって適用されるさまざまなCSSルールを含むCSSレイアウトの問題をデバッグしたいことがよくあります。
通常、私はFirebugを使用して、問題を引き起こしている要素を調べ、そのCSSプロパティが何であり、それらのプロパティがどこから来ているのかを調べます。ただし、ホバリングが関係している場合、マウスをFirebugパネルに移動するとすぐに、関心のある要素がホバリングされなくなり、適用されるCSSルールが異なるため、( JSのホバー)DOMが変更されます。
duringホバーイベントとしてDOMを検査するために、DOMの状態と:hoverのアプリケーションを「フリーズ」できる方法はありますか?
もちろん、この種の問題をデバッグする方法に関する他のアイデアは大歓迎です。
_:hover
_を使用する要素にonmouseover
関数ハンドラーを追加します。その関数内で、知りたい要素でconsole.info(element)
を呼び出します。
_myHoverElement.onmouseover = function() {
console.info(document.getElementById("someotherelementofinterest"));
};
_
Firebugをアクティブにしてこれを実行すると、要素はfirebugコンソールで検査できるようになります。
Firebugでこれを行うことができますが、少し「バギー」です。要素を調べてから、HTMLタブ、たとえばDOMタブをクリックして、HTMLタブに戻ると、右側の「スタイル」CSSタブに矢印ドロップダウンセレクターがあり、そこで選択できます。 :アクティブにするその要素のホバー状態。表示するためにタブを切り替える必要があることを吸うが、それは私のために動作します。
リンクを検査するとき、FirebugはデフォルトのCSS状態、つまりa:linkに適用されたスタイルを表示します。デフォルトでは、:hoverおよび:activeスタイルは表示されません。幸いなことに、[スタイル]をクリックして適切なオプションを選択すると、リンクの状態を変更できます。
Firebugでは、HTMLビューで右側のパネルを見て、「スタイル」タブを見つけます。下矢印をクリックして、[:hover
。
Firefox(v33.1.1)の場合:
In Chrome(バージョン35):
Dojoなどの一部のJavaScriptツールキットは、スタイルに:hoverではなくdijitButtonHoverなどのCSSクラスを使用します。
そのため、[スタイル]タブ:ホバートリックは機能しません。
代わりに、HTMLタブでNode(CSSクラスの変更者))を右クリックし、[属性変更時に中断]をクリックします。
また、その要素を調べて、スタイルのタブに小さなドロップダウン矢印があるはずです。 「Show User Agent」、「Expand Shorthand Properties」などがあり、その下にさらに2つあるはずです(ホバー状態の何かを検査していると思います):active
および:hover
を選択 :hover
そして、あなたは黄金色になるはずです。
cSSの問題については、Web開発者プラグインは非常に貴重です:
http://chrispederick.com/work/web-developer/
ロードすると、2つのツールを自由に使用できます。
マウスオーバーされた要素上のファイルからCSSを継承し、shift-ctrl-yを使用します
計算されたcss(.cssファイルにない、またはjqueryなどの.cssメソッドを介して適用されるインラインstyle =が適用されることを含む)-shift-ctrl-fを押します
後者は、要素に適用されるすべてのクラスも返します。
もちろん、隠しフィールドやCookieの編集など、フォームの優れたデバッグ(侵入テストに使用できます)など、他の優れた用途もあります。
私は同じ問題を抱えていて、Firebugでホバーオブジェクトを検査することはできませんでしたが、SafariのWebインスペクターは現在の状態をフリーズして検査を許可します。 SafariのWebインスペクターをアクティブにするには、ターミナルに次の行を入力してSafariを再起動します。
defaults write com.Apple.Safari WebKitDeveloperExtras -bool true
ブラウザでホバー要素をアクティブにし、右クリックして「要素の検査」を選択します。ページは現在の状態でフリーズしますので、一瞬のオブジェクトを思いのままに調べることができます。
Firebugには完璧なソリューション(マウスオーバー/ホバーシミュレーション効果)はありません。
ただし、firebugでホバー状態を編集する方法はいくつかあります。
:active
と共に:hover
状態を追加します
a:hover, a:active { ... }
要素の上にマウスを置いて、ドラッグして離すと、アクティブのままになります。
:hover
状態を.hover
クラスに変換します
(Firebugの[スタイル]タブで)ソースファイルをクリックして、CSSルールを編集できます。
それからもちろん、要素から.hover
クラスを追加(および削除)します。
私はこの投稿が少し古いことを知っていますが、Googleでこれを見つけた人のために、マウスを動かすだけでHTML/CSSレイアウトを視覚化できるクロスブラウザツールを作成しました。ホバー状態の要素を簡単に表示できます。
新しいFirefoxバージョン(少なくともv57以降)では、インスペクターのUIは他の回答が投稿されたときとは少し異なります。エレメントの:active
/:hover
/:focus
状態を有効にしてフリーズするには、それを検査し(右クリック-> [エレメントの検査])、インスペクターで次をクリックします。
結果:
ソース (画像はCC-BY-SA v2.5、Mozilla Contributorsでライセンスされています)
私はしばしば、ホバーされたイベントを「フリーズ」するために、いくつかの代替CSSまたはJavascriptを作成します。 Firebugで完全に微調整し、ホバーを元に戻します。
はい、ホバー状態をトリガーするときに「要素を検査」を右クリックできます。これはFirebugとWebKitでうまくいきました。