File tree 1 file changed +17
-2
lines changed
1 file changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -875,6 +875,21 @@ let referencePane = {
875
875
} ,
876
876
} ;
877
877
878
+ function getAbsoluteOffset ( el , offsetName ) {
879
+ // "offsetTop" => "borderTopWidth", "offsetLeft" => "borderLeftWidth"
880
+ const borderWidthName = offsetName . replace ( / o f f s e t ( .* ) / , 'border$1Width' ) ;
881
+ let d = el [ offsetName ] ;
882
+ for ( let parent = el . offsetParent ; parent ; parent = parent . offsetParent ) {
883
+ if ( ! parent . offsetParent ) {
884
+ break ;
885
+ }
886
+ const parentStyle = getComputedStyle ( parent ) ;
887
+ const parentBorderWidth = parentStyle [ borderWidthName ] ;
888
+ d += ( parseFloat ( parentBorderWidth ) || 0 ) + parent [ offsetName ] ;
889
+ }
890
+ return d ;
891
+ }
892
+
878
893
let Toolbox = {
879
894
init ( ) {
880
895
this . $outer = document . createElement ( 'div' ) ;
@@ -914,8 +929,8 @@ let Toolbox = {
914
929
this . entry = entry ;
915
930
this . $pinLink . textContent = menu . _pinnedIds [ entry . id ] ? 'Unpin' : 'Pin' ;
916
931
this . $outer . classList . add ( 'active' ) ;
917
- this . top = el . offsetTop - this . $outer . offsetHeight ;
918
- this . left = el . offsetLeft - 10 ;
932
+ this . top = getAbsoluteOffset ( el , ' offsetTop' ) - this . $outer . offsetHeight ;
933
+ this . left = getAbsoluteOffset ( el , ' offsetLeft' ) - 10 ;
919
934
this . $outer . setAttribute ( 'style' , 'left: ' + this . left + 'px; top: ' + this . top + 'px' ) ;
920
935
this . updatePermalink ( ) ;
921
936
this . updateReferences ( ) ;
You can’t perform that action at this time.
0 commit comments