ページの静的要素内にホバリング ボタンを配置するために、2 つの JavaScript メソッドを使用しています。中央に配置されたボタンは、最初の要素内に入力され、絶対位置を使用します。親要素の測定値を取得するために使用しているコード:
// calculate if the element is in the visible window
function elementVisibleRect(element) {
element = $(element);
var rect = {
top: Math.round(element.offset().top),
left: Math.round(element.offset().left),
width: Math.round(element.outerWidth()),
height: Math.round(element.outerHeight())
};
var scrollTop = $(window).scrollTop();
var windowHeight = $(window).height();
var scrollBottom = scrollTop + windowHeight;
var elementBottom = Math.round(rect.height + rect.top);
if (scrollTop < rect.top && scrollBottom > elementBottom) {
return rect;
}
if (scrollTop > rect.top) {
rect.top = scrollTop;
}
if (scrollBottom < elementBottom) {
rect.height = scrollBottom - rect.top;
} else {
rect.height = windowHeight - (scrollBottom - elementBottom);
}
return rect;
}
この情報を使用し、ボタンを中央に配置するため
// center the element based on visible screen-frame
function elementPosition (element) {
var visibleRect = elementVisibleRect(element);
$('.editHoverButton').css({
top: visibleRect.top + ((visibleRect.height / 2) - ($('.editHoverButton').outerHeight() / 2)),
left: visibleRect.left + (visibleRect.width / 2) - ($('.editHoverButton').outerWidth() / 2)
});
}
今私の問題は、サードパーティのライブラリが親DIVの位置をブラウザのデフォルトの「静的」から「相対」に変更する必要があることです。これにより、2番目の関数で計算が中断されます。
遅いかもしれませんが、何を試しても、親要素の位置が相対的に設定されている場合にこれを機能させる方法がわかりません。計算がうまくできていないようで、頭が痛くなり始めています。助言がありますか?
編集 - JSFIDDLE を追加