mirror of
https://github.com/McShelby/hugo-theme-relearn.git
synced 2024-11-23 07:47:54 +00:00
nav: scroll to prev/next heading using keyboard shortcut #819
This commit is contained in:
parent
b88ccc2304
commit
0c4bee9adb
3 changed files with 71 additions and 5 deletions
|
@ -20,6 +20,8 @@ This document shows you what's new in the latest release and flags it with one o
|
||||||
|
|
||||||
## 5.27.0.beta (XXXX-XX-XX) {#5270}
|
## 5.27.0.beta (XXXX-XX-XX) {#5270}
|
||||||
|
|
||||||
|
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} You now can scroll forward and backward thru all headings of a page by using `ALT + 🡑` and `ALT + 🡓`. This also works for the `PRINT` output format
|
||||||
|
|
||||||
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The breadcrumbs used in the topbar, search results and the taxonomy term lists are now using the pages frontmatter `linktitle` instead of `title` if set.
|
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} The breadcrumbs used in the topbar, search results and the taxonomy term lists are now using the pages frontmatter `linktitle` instead of `title` if set.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
@ -485,16 +485,16 @@ body.main-width-max:not(.print) #R-body .narrow .flex-block-wrapper {
|
||||||
}
|
}
|
||||||
|
|
||||||
body:not(.print) #R-body-inner.narrow {
|
body:not(.print) #R-body-inner.narrow {
|
||||||
padding: 2rem 9.75rem;
|
padding: 0 9.75rem 2rem 9.75rem;
|
||||||
}
|
}
|
||||||
@media screen and (max-width: 59.999rem) {
|
@media screen and (max-width: 59.999rem) {
|
||||||
body:not(.print) #R-body-inner.narrow {
|
body:not(.print) #R-body-inner.narrow {
|
||||||
padding: 1rem 6.5rem;
|
padding: 0 6.5rem 1rem 6.5rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@media screen and (max-width: 47.999rem) {
|
@media screen and (max-width: 47.999rem) {
|
||||||
body:not(.print) #R-body-inner.narrow {
|
body:not(.print) #R-body-inner.narrow {
|
||||||
padding: .375rem 3.25rem;
|
padding: 0 3.25rem .375rem 3.25rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -504,6 +504,19 @@ body:not(.print) #R-body-inner.narrow {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
body:not(.print) #R-body-inner.narrow div.article-subheading{
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 59.999rem) {
|
||||||
|
body:not(.print) #R-body-inner.narrow div.article-subheading{
|
||||||
|
margin-top: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 47.999rem) {
|
||||||
|
body:not(.print) #R-body-inner.narrow div.article-subheading{
|
||||||
|
margin-top: .375rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
body:not(.print) #R-body-inner.narrow p {
|
body:not(.print) #R-body-inner.narrow p {
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
|
|
|
@ -703,7 +703,57 @@ function initChroma( update ){
|
||||||
link.setAttribute( 'href', new_path );
|
link.setAttribute( 'href', new_path );
|
||||||
}
|
}
|
||||||
|
|
||||||
function initArrowNav(){
|
function initArrowVerticalNav(){
|
||||||
|
var topMain = 0;
|
||||||
|
if( !isPrint ){
|
||||||
|
topMain = document.querySelector("main").getClientRects()[0].top;
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('keydown', function(event){
|
||||||
|
var elems = Array.from( document.querySelectorAll( `main :not(.include.hide-first-heading) > :where(
|
||||||
|
.article-subheading,
|
||||||
|
:not(.article-subheading) + h1:not(.a11y-only),
|
||||||
|
h1:not(.a11y-only):first-child,
|
||||||
|
h2, h3, h4, h5, h6
|
||||||
|
),
|
||||||
|
main .include.hide-first-heading > :where( h1, h2, h3, h4, h5, h6 ) ~ :where( h1, h2, h3, h4, h5, h6 )
|
||||||
|
` ));
|
||||||
|
if( !event.shiftKey && !event.ctrlKey && event.altKey && !event.metaKey ){
|
||||||
|
if( event.which == 38 ){ // up
|
||||||
|
var target = isPrint ? document.querySelector( '#R-body' ) : document.querySelector( '.flex-block-wrapper' );
|
||||||
|
elems.some( function( elem, i ){
|
||||||
|
var top = elem.getBoundingClientRect().top;
|
||||||
|
var topBoundary = top - topMain;
|
||||||
|
if( topBoundary > -1 ){
|
||||||
|
target.scrollIntoView();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
target = elem
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else if( event.which == 40 ){ // down
|
||||||
|
elems.some( function( elem, i ){
|
||||||
|
var top = elem.getBoundingClientRect().top;
|
||||||
|
var topBoundary = top - topMain;
|
||||||
|
if( topBoundary > -1 && topBoundary < 1 ){
|
||||||
|
if( i+1 < elems.length ){
|
||||||
|
var target = elems[ i+1 ];
|
||||||
|
target.scrollIntoView();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if( topBoundary >= 1 ){
|
||||||
|
var target = elem;
|
||||||
|
target.scrollIntoView();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function initArrowHorizontalNav(){
|
||||||
if( isPrint ){
|
if( isPrint ){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1546,7 +1596,8 @@ if( window.themeUseOpenapi ){
|
||||||
}
|
}
|
||||||
|
|
||||||
ready( function(){
|
ready( function(){
|
||||||
initArrowNav();
|
initArrowVerticalNav();
|
||||||
|
initArrowHorizontalNav();
|
||||||
initMermaid();
|
initMermaid();
|
||||||
initOpenapi();
|
initOpenapi();
|
||||||
initMenuScrollbar();
|
initMenuScrollbar();
|
||||||
|
|
Loading…
Reference in a new issue