diff --git a/src/lib/components/PeopleList.svelte b/src/lib/components/PeopleList.svelte index 1512345..99ea071 100644 --- a/src/lib/components/PeopleList.svelte +++ b/src/lib/components/PeopleList.svelte @@ -27,7 +27,7 @@ > -
{item.name}
+
{item.name.toUpperCase()}
@{item.twitter}
diff --git a/src/lib/helpers.js b/src/lib/helpers.js index 5044fa7..6c92c35 100644 --- a/src/lib/helpers.js +++ b/src/lib/helpers.js @@ -13,7 +13,7 @@ export function rand(length) { return result; } -export function animateText (ev) { +export function animateText (ev, interval = 50) { if (!ev.target.getAttribute('data-text')) { ev.target.setAttribute('data-text', ev.target.innerHTML) } @@ -21,7 +21,7 @@ export function animateText (ev) { return; } ev.target.setAttribute('data-animate', "1") - const orig = removeMd(ev.target.getAttribute('data-text')) + const orig = removeMd(ev.target.getAttribute('data-text')).replace('&', '&') const steps = orig.length const genRand = (pos = 0, len = null) => orig.substring(pos, len).split(' ').map(x => rand(x.length)).join(' ') @@ -37,6 +37,6 @@ export function animateText (ev) { if (i === steps) { ev.target.setAttribute('data-animate', "0") } - }, 50*i) + }, interval * i) } } \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 7663da3..f8e65be 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -9,11 +9,13 @@ let navbar = false; const menu = [ + { title: 'Homepage', url: '', hidden: true }, { title: 'About', url: '#about' }, { title: 'Speakers', url: '#speakers' }, { title: 'Program', url: '#program' }, { title: 'Sponsors', url: '#sponsors' }, - { title: 'Ticket', url: '#ticket', class: 'button' } + { title: 'Ticket', url: '#ticket', class: 'button' }, + { title: 'FAQ', url: '#faq', hidden: true } ]; onMount(async () => { @@ -23,6 +25,40 @@ animateText({ target: el }) } }, 0) + + let lastScrollTop = null + + setInterval(() => { + const scrollTop = document.documentElement.scrollTop || document.body.scrollTop + if (lastScrollTop === scrollTop) { + return null; + } else { + lastScrollTop = scrollTop + } + console.log('x') + const arr = [] + for (const mi of menu) { + const el = document.getElementById(mi.title.toLowerCase()) + const pos = el.getBoundingClientRect() + //console.log(mi.title, pos.top, pos.bottom) + if (pos.top <= 100 && pos.bottom > 100) { + arr.push([ mi, pos.top, pos.bottom ]) + } + } + const choosed = arr[arr.length-1] + if (choosed) { + //console.log('choosed = ', choosed[0].title) + const currentHash = window.location.hash + const hash = choosed[0].url + if (hash !== currentHash) { + if (hash === '') { + history.replaceState(null, null, ' '); + } else { + history.replaceState(null, null, hash); + } + } + } + }, 1000) }); @@ -39,7 +75,7 @@
- {#each menu as mi} + {#each menu.filter(i => !i.hidden) as mi} {/each}
@@ -56,7 +92,7 @@ {/if} -
+
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 0a27e8c..1dff811 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -4,6 +4,12 @@ import { animateText } from '$lib/helpers'; export let data; + + function animateTopic (el) { + for(const e of el.target.getElementsByClassName('animate-topic')) { + animateText({ target: e }) + } + } @@ -24,8 +30,8 @@
Key themes
{#each data.config.themes as ti} -
-
{ti.title}
+
+
{ti.title.toUpperCase()}