Skip to content

Commit

Permalink
Fix sidebar scroll, fixed #63
Browse files Browse the repository at this point in the history
  • Loading branch information
QingWei-Li committed Jan 27, 2017
1 parent b032041 commit 7db1f10
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 20 deletions.
22 changes: 21 additions & 1 deletion src/event.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ export function scrollActiveSidebar () {
let hoveredOverSidebar = false
const anchors = document.querySelectorAll('.anchor')
const sidebar = document.querySelector('aside.sidebar')
const sidebarHeight = sidebar.clientHeight

const nav = {}
const lis = sidebar.querySelectorAll('li')
let active = sidebar.querySelector('li.active')
Expand Down Expand Up @@ -48,7 +50,25 @@ export function scrollActiveSidebar () {

li.classList.add('active')
active = li
!hoveredOverSidebar && !sticky.noSticky && active.scrollIntoView(false)

// scroll into view
// https://github.com/vuejs/vuejs.org/blob/master/themes/vue/source/js/common.js#L282-L297
if (!hoveredOverSidebar && !sticky.noSticky) {
const currentPageOffset = 0
const currentActiveOffset = active.offsetTop + active.clientHeight + 40
const currentActiveIsInView = (
active.offsetTop >= sidebar.scrollTop &&
currentActiveOffset <= sidebar.scrollTop + sidebarHeight
)
const linkNotFurtherThanSidebarHeight = currentActiveOffset - currentPageOffset < sidebarHeight
const newScrollTop = currentActiveIsInView
? sidebar.scrollTop
: linkNotFurtherThanSidebarHeight
? currentPageOffset
: currentActiveOffset - sidebarHeight

sidebar.scrollTop = newScrollTop
}
}

window.removeEventListener('scroll', highlight)
Expand Down
20 changes: 1 addition & 19 deletions src/themes/basic/_layout.css
Original file line number Diff line number Diff line change
Expand Up @@ -193,16 +193,7 @@ main {
transition: transform 250ms ease-out;
width: $sidebar-width;
z-index: 20;
margin-bottom: 40px;

&::after {
content: '';
position: inherit;
left: calc($sidebar-width - 1px);
top: 0;
height: 100vh;
border-right: 1px solid rgba(0, 0, 0, .07);
}
border-right: 1px solid rgba(0, 0, 0, .07);

> h1 {
text-align: center;
Expand Down Expand Up @@ -384,15 +375,6 @@ body.close {
position: fixed;
}

.sidebar {
margin-bottom: 0;
border-right: 1px solid rgba(0, 0, 0, .07);

&::after {
content: none;
}
}

nav {
margin-top: 16px;
}
Expand Down

0 comments on commit 7db1f10

Please sign in to comment.