Module: Asciidoctor::Html::Scroll

Defined in:
lib/asciidoctor/html/scroll.rb

Overview

Due to mobile dynamic viewport heights, we need custom code for reliable anchor scrolling.

Constant Summary collapse

SCROLL =
"(function() {\n  const page = document.getElementById('page');\n  let scrolledOnce = false;\n  function scrollToElement(e) {\n    e && e.preventDefault();\n    scrolledOnce = true;\n    const href = location.hash;\n    const id = href.substring(1);\n    const target = document.getElementById(id);\n    if(!target) return;\n\n    const rect = target.getBoundingClientRect()\n    page.scrollTo({\n      top: rect.top + page.scrollTop,\n      left: 0,\n      behavior: 'smooth'\n    });\n  }\n  addEventListener('hashchange', scrollToElement);\n  addEventListener('load', function() {\n    !scrolledOnce && scrollToElement();\n  });\n})();\n"