diff --git a/Doc/tools/static/sidebar.js b/Doc/tools/static/sidebar.js --- a/Doc/tools/static/sidebar.js +++ b/Doc/tools/static/sidebar.js @@ -40,16 +40,25 @@ // with the sidebar collapsed var bw_margin_collapsed = '.8em'; var ssb_width_collapsed = '.8em'; // colors used by the current theme var dark_color = '#AAAAAA'; var light_color = '#CCCCCC'; + // set position: sticky on sidebar + // (browsers that don't support this will fall-back to + // positioning via scroll_sidebar) + var supportsPositionSticky = (window.CSS && window.CSS.supports && + window.CSS.supports('position', 'sticky')); + if (supportsPositionSticky) { + sidebarwrapper.css('position', 'sticky'); + } + function get_viewport_height() { if (window.innerHeight) return window.innerHeight; else return jwindow.height(); } function sidebar_is_collapsed() { @@ -159,16 +168,19 @@ add_sidebar_button(); var sidebarbutton = $('#sidebarbutton'); set_position_from_cookie(); /* intelligent scrolling */ function scroll_sidebar() { + if (supportsPositionSticky) { + return; + } var sidebar_height = sidebarwrapper.height(); var viewport_height = get_viewport_height(); var offset = sidebar.position()['top']; var wintop = jwindow.scrollTop(); var winbot = wintop + viewport_height; var curtop = sidebarwrapper.position()['top']; var curbot = curtop + sidebar_height; // does sidebar fit in window?