summaryrefslogtreecommitdiff
path: root/examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala
diff options
context:
space:
mode:
authorLi Haoyi <haoyi@dropbox.com>2014-11-26 03:31:52 -0800
committerLi Haoyi <haoyi@dropbox.com>2014-11-26 03:31:52 -0800
commit0ae3b5b47a7e1a3a8ae31817bc7b10ca9c054f54 (patch)
tree8f05bf9c9be4640ec4ea005538f2340cae5ee3fc /examples/demos/src/main/scala/scrollmenu/ScrollMenu.scala
parentca124817c53d50dc81c7817d37f3c5fc08e0c565 (diff)
downloadhands-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.scala18
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{