File tree Expand file tree Collapse file tree 3 files changed +43
-5
lines changed
Expand file tree Collapse file tree 3 files changed +43
-5
lines changed Original file line number Diff line number Diff line change @@ -143,13 +143,13 @@ async function build() {
143143 const headings = getHeadingList ( ) . filter ( ( { level } ) => level > 1 ) ;
144144 return `
145145<div class="wrapper">
146- <div class="docs-menu">
146+ <div class="docs-menu sticky ">
147147 ${ isBlog ? blogMenu : docsMenu }
148148 </div>
149149 <div class="content">
150150 ${ html }
151151 </div>
152- <div class="table-of-contents">
152+ <div class="table-of-contents sticky ">
153153 ${ headings . map ( ( { id, raw, level } ) => `<div class="toc-link"><a href="${ htmlFileName } #${ id } " class="h${ level } ">${ raw } </a></div>` ) . join ( '\n' ) }
154154 </div>
155155</div>` ;
Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ document.addEventListener('DOMContentLoaded', function(_event) {
1919 const dropdownTriggers = document . querySelectorAll ( ".dropdown .dropdown-wrapper > a" ) ;
2020 const currentVersion = document . querySelector ( '.versions-menu a.current' ) ;
2121 const dropdownBackdrop = document . querySelector ( '.dropdown .backdrop' ) ;
22+ const stickyBlocks = document . querySelectorAll ( '.sticky' ) ;
2223
2324 function toggleMenu ( ) {
2425 menu . classList . toggle ( 'active' ) ;
@@ -55,6 +56,29 @@ document.addEventListener('DOMContentLoaded', function(_event) {
5556 this . parentElement . classList . remove ( 'active' ) ;
5657 } )
5758
59+ function addStuck ( ) {
60+ stickyBlocks . forEach ( stickyBlock => {
61+ stickyBlock . classList . add ( 'stuck' ) ;
62+ } ) ;
63+ }
64+ function removeStuck ( ) {
65+ stickyBlocks . forEach ( stickyBlock => {
66+ stickyBlock . classList . remove ( 'stuck' ) ;
67+ } ) ;
68+ }
69+ let stuck = window . scrollY > 170 ;
70+ if ( stuck ) addStuck ( ) ;
71+ window . addEventListener ( 'scroll' , ( ) => {
72+ if ( ! stuck && window . scrollY > 170 ) {
73+ stuck = true ;
74+ addStuck ( ) ;
75+ }
76+ if ( stuck && window . scrollY <= 170 ) {
77+ stuck = false ;
78+ removeStuck ( ) ;
79+ }
80+ } ) ;
81+
5882 hljs . addPlugin ( new RunButtonPlugin ( ) ) ;
5983 hljs . highlightAll ( ) ;
6084} ) ;
Original file line number Diff line number Diff line change @@ -64,17 +64,24 @@ main {
6464
6565 .docs-menu {
6666 position : sticky ;
67- top : 2 rem ;
67+ top : 1 rem ;
6868 align-self : flex-start ;
6969
70- padding : 1 rem 0.5rem 1rem 0 ;
70+ padding : 0 0.5rem 1rem 0 ;
7171
7272 font-size : 0.875rem ;
7373 flex-basis : 20% ;
7474 flex-shrink : 0 ;
7575 line-height : 1.3 ;
7676
7777 border-right : 1px solid $border-color-lighter ;
78+ height : calc (100vh - 170px );
79+ overflow-y : auto ;
80+ scrollbar-width : none ;
81+
82+ & .stuck {
83+ height : calc (100vh - 2rem );
84+ }
7885
7986 @include media (' max' , ' lg' ) {
8087 display : none ;
@@ -127,10 +134,17 @@ main {
127134
128135 .table-of-contents {
129136 position : sticky ;
130- top : 2 rem ;
137+ top : 1 rem ;
131138 align-self : flex-start ;
132139 font-size : 0.875rem ;
133140 max-width : 20% ;
141+ height : calc (100vh - 170px );
142+ overflow-y : auto ;
143+ scrollbar-width : none ;
144+
145+ & .stuck {
146+ height : calc (100vh - 2rem );
147+ }
134148
135149 @include media (' max' , ' xl' ) {
136150 display : none ;
You can’t perform that action at this time.
0 commit comments