fix sidenote collisions

This commit is contained in:
2022-05-13 21:50:19 -07:00
parent 8d51cab348
commit 3c7732f1f4
2 changed files with 22 additions and 2 deletions

View File

@ -1,4 +1,5 @@
<script context="module">
import { onMount } from 'svelte';
import { formatDate } from './datefmt.js';
import { makeSlug } from '$lib/slug.js';
import Link from './Link.svelte';
@ -7,6 +8,25 @@
<script>
export let title, date;
// deal with sidenote collisions
onMount(async () => {
const minNoteGap = 15;
let sidenotes = Array.from(document.getElementsByClassName('sidenote'));
var prev = 0;
for (var i=0; i < sidenotes.length; i++) {
let note = sidenotes[i];
let {y, height} = note.getBoundingClientRect();
y += window.scrollY; // getBoundingClientRect is relative to viewport
if (y < prev + minNoteGap) {
note.style.top = `${prev + minNoteGap}px`;
prev = prev + minNoteGap + height;
}
else {
prev = y + height;
}
}
})
</script>
<svelte:head>