130 lines
3.2 KiB
Stylus
130 lines
3.2 KiB
Stylus
// Sidebar Navigation
|
|
.sidebar-nav {
|
|
font-size: $font-size-small;
|
|
height: 0;
|
|
margin: 0;
|
|
overflow: hidden;
|
|
padding-left: 0;
|
|
pointer-events: none;
|
|
transition: $transition-ease;
|
|
transition-property: height, visibility;
|
|
visibility: hidden;
|
|
|
|
.sidebar-nav-active & {
|
|
height: "calc(%sem + 1px)" % $line-height-base;
|
|
pointer-events: unset;
|
|
visibility: unset;
|
|
}
|
|
|
|
li {
|
|
border-bottom: 1px solid transparent;
|
|
color: $sidebar-nav-color;
|
|
cursor: pointer;
|
|
display: inline-block;
|
|
transition: $transition-ease;
|
|
transition-property: border-bottom-color, color;
|
|
|
|
&.sidebar-nav-overview {
|
|
margin-left: 10px;
|
|
}
|
|
|
|
&:hover {
|
|
color: $sidebar-nav-hover-color;
|
|
}
|
|
}
|
|
}
|
|
|
|
.sidebar-toc-active .sidebar-nav-toc, .sidebar-overview-active .sidebar-nav-overview {
|
|
border-bottom-color: $sidebar-highlight;
|
|
color: $sidebar-highlight;
|
|
transition-delay: $transition-duration;
|
|
|
|
&:hover {
|
|
color: $sidebar-highlight;
|
|
}
|
|
}
|
|
|
|
// For TOC/Overview scrolling
|
|
.sidebar-panel-container {
|
|
align-items: start;
|
|
display: grid;
|
|
flex: 1;
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
padding-top: 0;
|
|
transition: padding-top $transition-ease;
|
|
|
|
.sidebar-nav-active & {
|
|
padding-top: 20px;
|
|
}
|
|
}
|
|
|
|
.sidebar-panel {
|
|
animation: deactivate-sidebar-panel $transition-duration ease-in-out;
|
|
grid-area: 1 / 1;
|
|
height: 0;
|
|
opacity: 0;
|
|
overflow: hidden;
|
|
pointer-events: none;
|
|
transform: translateY(0);
|
|
transition: $transition-ease;
|
|
transition-delay: 0s;
|
|
transition-property: opacity, transform, visibility;
|
|
visibility: hidden;
|
|
|
|
// Apply transform to both panels when sidebar nav is active,
|
|
// to the TOC panel when switching between Overview and TOC regardless of
|
|
// whether the sidebar nav is active
|
|
.sidebar-nav-active &,
|
|
.sidebar-overview-active &.post-toc-wrap {
|
|
transform: translateY(-20px);
|
|
}
|
|
|
|
// Delay TOC transform transition when switching from TOC to Overview and
|
|
// deactivating the sidebar nav at the same time, to prevent the TOC panel
|
|
// from moving too fast
|
|
// https://github.com/next-theme/hexo-theme-next/pull/323#issuecomment-1420780965
|
|
.sidebar-overview-active:not(.sidebar-nav-active) &.post-toc-wrap {
|
|
transition-delay: 0s, $transition-duration, 0s;
|
|
}
|
|
|
|
.sidebar-overview-active &.site-overview-wrap,
|
|
.sidebar-toc-active &.post-toc-wrap {
|
|
animation-name: activate-sidebar-panel;
|
|
height: auto;
|
|
opacity: 1;
|
|
pointer-events: unset;
|
|
transform: translateY(0);
|
|
// The visibility delay is intentionally set to 0s to accommodate
|
|
// the visibility change on initial page load.
|
|
transition-delay: $transition-duration, $transition-duration, 0s;
|
|
visibility: unset;
|
|
}
|
|
|
|
&.site-overview-wrap {
|
|
// Flexbox layout makes it possible to reorder the child
|
|
// elements of .site-overview-wrap through the `order` CSS property
|
|
flex-column();
|
|
gap: 10px;
|
|
justify-content: flex-start; // TODO: Optimize the duplicate with flex-column()
|
|
}
|
|
}
|
|
|
|
@keyframes deactivate-sidebar-panel {
|
|
from {
|
|
height: var(--inactive-panel-height, 0);
|
|
}
|
|
to {
|
|
height: var(--active-panel-height, 0);
|
|
}
|
|
}
|
|
|
|
@keyframes activate-sidebar-panel {
|
|
from {
|
|
height: var(--inactive-panel-height, auto);
|
|
}
|
|
to {
|
|
height: var(--active-panel-height, auto);
|
|
}
|
|
}
|