diff options
| author | Fuwn <[email protected]> | 2023-12-18 16:33:43 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-12-18 16:33:43 -0800 |
| commit | e538968af114375e090e2b7e251e6a6a1bcf8223 (patch) | |
| tree | 92e1301f04cb1babf83be9da76f5a28fcbe5708d /src/routes/schedule | |
| parent | feat(schedule): hoverable cover (diff) | |
| download | due.moe-e538968af114375e090e2b7e251e6a6a1bcf8223.tar.xz due.moe-e538968af114375e090e2b7e251e6a6a1bcf8223.zip | |
fix(schedule): off-screen clipping
Diffstat (limited to 'src/routes/schedule')
| -rw-r--r-- | src/routes/schedule/+page.svelte | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/routes/schedule/+page.svelte b/src/routes/schedule/+page.svelte index b86221b2..9868e308 100644 --- a/src/routes/schedule/+page.svelte +++ b/src/routes/schedule/+page.svelte @@ -13,15 +13,25 @@ let hoveredItem: SubsPleaseEpisode | null = null; let imageStyle = ''; + let imageHeight = 0; const onMouseMove = (event: MouseEvent) => { const imageWidth = 300; const offset = 10; + let imageLeft = 0; + let imageTop = 0; + const image = document.getElementsByClassName('hover-image')[0] as HTMLImageElement; - imageStyle = + image.onload = () => (imageHeight = image.height); + imageLeft = event.pageX + imageWidth + offset > window.innerWidth - ? `top: ${event.pageY + offset}px; left: ${event.pageX - imageWidth - offset}px;` - : `top: ${event.pageY + offset}px; left: ${event.pageX + offset}px;`; + ? event.pageX - imageWidth - offset + : event.pageX + offset; + imageTop = + event.pageY + imageHeight + offset > window.innerHeight + ? event.pageY - imageHeight + : event.pageY + offset; + imageStyle = `top: ${imageTop}px; left: ${imageLeft}px;`; }; </script> |