JavaScript Positions - Cheatsheet

Cheatsheet para lidar posições em navegadores com JavaScript

Posicionamento de objeto com relação ao scroll da página

function getCoords() {
  const body = document.body
  const docEl = document.documentElement

  const scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop
  const scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft

  const clientTop = docEl.clientTop || body.clientTop || 0
  const clientLeft = docEl.clientLeft || body.clientLeft || 0

  const top = scrollTop - clientTop
  const left = scrollLeft - clientLeft

  return { top: Math.round(top), left: Math.round(left) }
}

Movimentar scroll do navegador lentamente para posição

window.scroll({
  top: 0,
  left: 0,
  behavior: 'smooth',
})

Verificar se elemento está na tela

function isElementInViewport(el) {
  const rect = el.getBoundingClientRect()
  return (
    rect.top >= 0 &&
    rect.left >= 0 &&
    rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
    rect.right <= (window.innerWidth || document.documentElement.clientWidth)
  )
}

Comentários