2017-02-10 12 views
0

divタグ内にiframeが追加されています。 iframeのコンテンツは固有のIDを有するタグ「秒」を有する、等、ビューポート内の要素IDを取得

<p> 
<sec id='1'>some text</sec> 
<sec id='2'>some other text</sec> 
</p> 

iframeのコンテンツは、水平列幅および列ギャップを使用して拡散します。 Divはiframeの幅ごとにスクロール可能です。

私が見つけ出す必要があるのは、現在ビューポートに表示されている 'sec'タグの最初と最後のid値です。

getBoundingClientRectについては見つかりましたが、使用方法については明確ではありませんか?

また、タグの位置を確認するためにループを実行する必要があるため、処理負荷が増加しないかどうかという懸念もあります。

誰でもそれを明るくすることはできますか?ここで

+0

iframe内の位置。要素がiframeの内側に表示されているかどうかを知る必要がありますか?またはiframeがメインウィンドウの内側に表示されているかどうかをiframe内部で確認できるかどうかを知る必要がありますか? – hashchange

+0

パフォーマンスが重要な場合やjQueryを使用する場合は、私が書いたコンポーネントである[jQuery.isInView](https://github.com/hashchange/jquery.isinview)を見てみてください(そしてそれは非常に高速です)、iframeのために働きます。 – hashchange

+0

そのビューポート内に表示されているdivまたはタグのIDをすべて見つける必要があります。プラグインを使用して可視領域の最初と最後の要素を取得することは可能ですか? – pravid

答えて

0

あなたがjQuery.isInViewを使用して、IFRAME内の最初と最後の目に見える要素のidを取得することができます方法は次のとおりです。

それは返す、つまり `getBoundingClientRect`がビューポート/窓に相対的である要素は、中に含まれている
var $iframe = $(yourIframeSelector), 
    _document = $iframe[0].contentDocument, 

    $elements = $(yourElementSelector, _document), 
    $visible = $elements.inView(_document), 

    firstId = $visible.first().attr("id"), 
    lastId = $visible.last().attr("id"); 
+1

私はいくつかの変更を行う必要があったが、それは素晴らしい、ありがとう!答えとして受け入れる。 – pravid

関連する問題