diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-26 03:31:52 -0800 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-26 03:31:52 -0800 |
commit | 0ae3b5b47a7e1a3a8ae31817bc7b10ca9c054f54 (patch) | |
tree | 8f05bf9c9be4640ec4ea005538f2340cae5ee3fc /examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala | |
parent | ca124817c53d50dc81c7817d37f3c5fc08e0c565 (diff) | |
download | hands-on-scala-js-0ae3b5b47a7e1a3a8ae31817bc7b10ca9c054f54.tar.gz hands-on-scala-js-0ae3b5b47a7e1a3a8ae31817bc7b10ca9c054f54.tar.bz2 hands-on-scala-js-0ae3b5b47a7e1a3a8ae31817bc7b10ca9c054f54.zip |
fix all the problems
Diffstat (limited to 'examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala')
-rw-r--r-- | examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala b/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala index 9ce9a2b..7d718e2 100644 --- a/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala +++ b/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala @@ -61,13 +61,15 @@ class ScrollSpy(structure: Tree[String], } - private[this] var scrolling = -1 + private[this] var scrolling = false def apply() = { - dom.clearTimeout(scrolling) - scrolling = dom.setTimeout(() => start(), 200) + if (!scrolling) { + scrolling = true + dom.requestAnimationFrame((d: Double) => start()) + } } private[this] def start() = { -// scrolling = false + scrolling = false def scroll(el: dom.Element) = { val rect = el.getBoundingClientRect() if (rect.top <= 0) @@ -96,10 +98,12 @@ class ScrollSpy(structure: Tree[String], // This means it's the leaf element, because it won but there // aren't any children which won, so it must be the actual leaf tree.children.foreach(_.value.frag.classList.remove("selected")) - if (dom.location.hash != itemId) - dom.history.pushState(null, null, "#"+itemId) - scroll(menuItem.children(0)) + val top = main.scrollTop + dom.location.hash = itemId + main.scrollTop = top + + scroll(menuItem.children(0)) } menuItem.children(0).classList.add("pure-menu-selected") }else{ |