• Robert Knight's avatar
    Correctly handle overflowing content when choosing scroll anchor · 0e835086
    Robert Knight authored
    Fix two issues found while testing HTML side-by-side mode with a BBC
    news article [1]:
    
    1. When traversing the DOM tree to choose a scroll anchor, elements were
       skipped if their bounding rect (`element.getBoundingClientRect()`) did
       not intersect the viewport. This however did not account for content
       which overflows the element but is still visible to the user because it
       is not clipped.
    
    2. The code used the intersection of the scroll root's bounding client rect and
       `(0, 0, window.innerWidth, window.innerHeight)` to get the viewport
       rect. In [1] the root element's bounding rect only covers the top
       (100vw, 100vh) pixels of the document, and most of the actual content
       of the page overflows that area. Resolve the issue by always using
       `(0, 0, window.innerWidth, window.innerHeight)` as the viewport,
       except when explicitly overridden (eg. in tests)
    
    [1] https://www.bbc.co.uk/news/world-europe-60693166
    0e835086
Name
Last commit
Last update
.github Loading commit data...
bin Loading commit data...
dev-server Loading commit data...
docs Loading commit data...
embedding-examples Loading commit data...
images Loading commit data...
requirements Loading commit data...
scripts Loading commit data...
src Loading commit data...
.babelrc Loading commit data...
.dockerignore Loading commit data...
.eslintignore Loading commit data...
.eslintrc Loading commit data...
.gitignore Loading commit data...
.npmignore Loading commit data...
.npmrc Loading commit data...
.prettierignore Loading commit data...
.python-version Loading commit data...
CODE_OF_CONDUCT Loading commit data...
Dockerfile Loading commit data...
Jenkinsfile Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
codecov.yml Loading commit data...
gulpfile.mjs Loading commit data...
package.json Loading commit data...
pyproject.toml Loading commit data...
requirements-dev.in Loading commit data...
rollup-boot.config.mjs Loading commit data...
rollup-tests.config.mjs Loading commit data...
rollup.config.mjs Loading commit data...
tailwind.config.mjs Loading commit data...
tox.ini Loading commit data...
tsconfig.json Loading commit data...
yarn.lock Loading commit data...