2017-02-21 7 views
0

私はこれをどこから始めるべきかわからないが、私は数日間、ページ上の選択/クリックされたピクセル内の要素を取得する方法を見つけようとしている。私は同僚からこの機能に出くわしたが、私はそれが何をするか見当がつかない:クリックしたピクセル内の要素を取得しますか?

簡単に言えば
function onclick(e){ 
    var x = e.clientX, 
     y = e.clientY; 

    $("*").filter(function(){ 
     position.left > x && position.left + width < x; 
     /*same for height*/; 
    }); 
} 

、私はピクセルをクリックして、そのピクセル内にあるDIV /要素を取得できるようにする必要があります。要素が不透明度とZ-インデックスで重なり合っているため、たとえばdiv .classと言っているだけのアプリでは簡単ではありません。 enter image description here

+0

「ピクセル内」とはどういう意味ですか?ピクセルが存在する要素を意味しますか? – isherwood

+0

@isherwood基本的に、クリックがある場所は、それが選択する要素です。 DOMを無視し、実際にはパディング、幅、余白などではない部分をつかむだけです。 –

+0

何が起こるのかを知るには、いくつかのCSSを使って 'a {color:transparent;背景:赤; } 'text要素は矩形であり、CSSクリッピングが適用されていない他のすべての要素と同様です。あなたがクリックした要素の文字列に関連付けられたテキストエンジンに従って、クリックした場所が空白か否定スペースかを判断するには、文字通り魔法の近くで実行する必要があります。だから私は、これが本当にファンシーで精巧なコードマジックなしでは不可能だと確信しています。 –

答えて

0

変数positionwidthが定義されていないので、問題に示されるようにコードが動作しないであろう、しかし、その基本的な考え方が正しい - ループのすべての要素を介してAの座標を比較します各要素のボックスをクリックします。

自分自身で試してみたいです。スニペットの代わりに作業デモhereを移動しました。

+0

**編集:** SOのスニペット環境がこの例ではあまりにも多かったので、デモを外部ページに移動しました。 –

+0

それは私が欲しかったことです。答えを受け入れるつもりです。私が読んだことから、これはあなたが得るほど良いものです。ありがとう。 –

0

文書内のどこをクリックしても、クリックされた要素がログに記録されます。

$(document).click(function(e) { 
 
    console.log(e.target); 
 
});
.box { 
 
    width: 50px; 
 
    height: 50px; 
 
    background: blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class='box'></div>

+0

これはまさに私が望んでいないものであり、うまく動作しません。私のアプリケーションの要素は、Z-インデックスと不透明度が重なっているため、クリックした要素を選択するだけでは、クリックしたピクセルに基づいて区別することができません。 –

+0

私はほとんどそれが可能だと思います。もし私が間違っていて、それが可能であれば、たくさんのコードが必要になります。* –

+0

@Kinduserかなり可能で、それほどコードではありません。私の答えを見てください。 iframe、border-radiusesなどでやっているような面白い質問を扱っていますが、実際にはもっと多くの作業が必要になります。 –

0

あなたは、xとy COORDSで要素を取得したい場合は、document.elementFromPoint(x, y);を使用することができます。 ドキュメントの場合はhereをご覧ください。

function onclick(e){ 
    var x = e.clientX, 
     y = e.clientY, 
     el = document.elementFromPoint(x, y); 
} 

Fiddle here

+0

私が期待したように。それは動作しません。 https://jsfiddle.net/af2m32sv/2/ –

+0

これはクールな方法ですが、一番上にクリックされた要素のみを返します。提供されたMDNの記事はそれについてはっきりしています。 –

関連する問題