19 lines
367 B
TypeScript
19 lines
367 B
TypeScript
|
export function scrollIntoView(el: HTMLElement | null | undefined) {
|
||
|
if (!el) {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
const boundingRect = el.getBoundingClientRect()
|
||
|
const scrollY = window.scrollY
|
||
|
|
||
|
if (
|
||
|
boundingRect.top > (scrollY + window.innerHeight) ||
|
||
|
boundingRect.top < scrollY
|
||
|
) {
|
||
|
el.scrollIntoView({
|
||
|
behavior: 'smooth',
|
||
|
block: 'center',
|
||
|
inline: 'nearest',
|
||
|
})
|
||
|
}
|
||
|
}
|