2016-06-24 7 views
0

私は潜在的に重複する可能性のある透明なdivを持っています。それらは、明示的なCSS z-orderまたはデフォルトのDOM順序付けによって、「zオーダー」に配置することができます。 スタイル指定によれば、DOM順序付け、z-インデックスおよびdisplayスタイルの多くの組み合わせが、要素の結果的に有効なz位置にすべて影響します。別のdivの上にdiv(z-index)があります。

シンプルな明示的なZ-インデックスに頼るのではなく、より一般的なスタイルルールに従って、特定の参照オブジェクトの上(または下)にあるすべての要素を見つけるにはどうすればよいですか?

私の質問の焦点は、zオーダーにのみあります。 "find"とは、上/下の要素を選択または反復する(javascript/jquery)アルゴリズムを持つことを意味します。

ノート:ドキュメントを探して、私は

https://www.smashingmagazine.com/2009/09/the-z-index-css-property-a-comprehensive-look/

一つは、「レンダリングを問い合わせることができればそれがベストだろう

https://philipwalton.com/articles/what-no-one-told-you-about-z-index/

よりも読むことが少し優れていると思いますエンジン "とは何とかして - 指定されたxy位置ですべてのクリックが(その場所で)トップ要素を直接トリガしているので、情報はすでにどこかに...!?

+1

「すべての要素を見つける」と記述しますか?あなたはどのようにそれらを見つけたいですか?JS /開発者用ツール? –

+0

答えが広すぎるいくつかのHTML、CSS、JSのコード例を挙げて、少し明確にすることができますか? – adamk22

+0

ページのすべての表示要素をループします。現在のZ-indexよりも小さい、または等しいZ-indexの前のすべての要素は、前にあり、残りは、後にあります。 –

答えて

0

これは重複している要素をすべて見つける方法ですが、私はそれらをz-indexでどのように注文するかはわかりません。あなたが言ったように、Zインデックスの順序に影響を与える多くのオプションがあります。これを行うには巨大なコードが必要です。すべての要素を数回ループする必要があるため、パフォーマンスについては不明です。

$("div").on("click", function() { 
      var div = $(this); 
      $('body').find('*').each(function() { 
       if($(this).width() > 0 && $(this).height() > 0) { 
        if((($(this).offset().left <= div.offset().left && $(this).offset().left+$(this).width() >= div.offset().left) 
         || ($(this).offset().left < div.offset().left+div.width() && $(this).offset().left > div.offset().left)) 
         && (($(this).offset().top <= div.offset().top && $(this).offset().top+$(this).height() >= div.offset().top) 
         || ($(this).offset().top < div.offset().top+div.height() && $(this).offset().top > div.offset().top) 
         )) { 
         console.log($(this)); 
        } 
       } 
      }); 
      return false; 
     }); 
+0

変更他のアンダーレイイベントをブロックしたくない場合はtrueを返すfalseを返します –

+0

ありがとうございます - xyの場合、これは私に必要なアイデアを与えます。 'z ordering'に関して、要素の複数回の訪問が必要であると本当に思います。私の編集した質問から、「どこかの場所でトップの要素が直接トリガーされているので、どこかの場所にその情報が既に存在しています。 ...!? " – sebhaase

関連する問題