nyawach
1/8/2018 - 11:18 PM

rootからtargetのスクロール量を計算する

rootからtargetのスクロール量を計算する

/**
 * rootからtargetのスクロール量を計算する
 */
export default function calcOffsetTop(target: HTMLElement, root: HTMLElement = document.body) {
  if(!target) throw new Error('[no target]');

  let elm: HTMLElement = target
  let offset: number   = 0

  while(true) {
    offset += elm.offsetTop
    if(elm.offsetParent === root) break
    elm = elm.offsetParent as HTMLElement
  }

  return offset;
}