skipto
Version:
This plugin provides a dynamically-generated drop-down menu that allows keyboard and screen reader users to quickly skip to the most important places on the webpage.
233 lines (200 loc) • 5.85 kB
CSS
.skip-to.popup {
position: absolute;
top: -30em;
left: 0;
}
.skip-to,
.skip-to.popup.focus {
position: absolute;
top: 0;
left: $positionLeft;
font-family: $fontFamily;
font-size: $fontSize;
}
.skip-to.fixed {
position: fixed;
}
.skip-to button {
position: relative;
margin: 0;
padding: 6px 8px 6px 8px;
border-width: 0px 1px 1px 1px;
border-style: solid;
border-radius: 0px 0px 6px 6px;
border-color: $buttonBackgroundColor;
color: $menuTextColor;
background-color: $buttonBackgroundColor;
z-index: 200;
font-family: $fontFamily;
font-size: $fontSize;
}
.skip-to .skip-to-tooltip {
position: absolute;
top: 2.25em;
left: 8em;
margin: 1px;
padding: 4px;
border: 1px solid #ccc;
box-shadow: 2px 3px 5px #ddd;
background-color: #eee;
color: black;
font-family: Helvetica, Arial, Sans-Serif;
font-variant-numeric: slashed-zero;
font-size: 9pt;
width: auto;
display: none;
white-space: nowrap;
z-index: 201;
}
.skip-to .skip-to-tooltip.skip-to-show-tooltip {
display: block;
}
.skip-to [aria-expanded="true"] + .skip-to-tooltip.skip-to-show-tooltip {
display: none;
}
.skip-to [role="menu"] {
position: absolute;
min-width: 17em;
display: none;
margin: 0;
padding: 0.25rem;
background-color: $menuBackgroundColor;
border-width: 2px;
border-style: solid;
border-color: $focusBorderColor;
border-radius: 5px;
z-index: 1000;
}
.skip-to [role="group"] {
display: grid;
grid-auto-rows: min-content;
grid-row-gap: 1px;
}
.skip-to [role="separator"]:first-child {
border-radius: 5px 5px 0 0;
}
.skip-to [role="menuitem"] {
padding: 3px;
width: auto;
border-width: 0px;
border-style: solid;
color: $menuTextColor;
background-color: $menuBackgroundColor;
z-index: 1000;
display: grid;
overflow-y: auto;
grid-template-columns: repeat(6, 1.2rem) 1fr;
grid-column-gap: 2px;
font-size: 1em;
}
.skip-to [role="menuitem"] .level,
.skip-to [role="menuitem"] .label {
font-size: 100%;
font-weight: normal;
color: $menuTextColor;
display: inline-block;
background-color: $menuBackgroundColor;
line-height: inherit;
display: inline-block;
}
.skip-to [role="menuitem"] .level {
text-align: right;
padding-right: 4px;
}
.skip-to [role="menuitem"] .label {
text-align: left;
margin: 0;
padding: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
[dir=rtl] .skip-to [role="menuitem"] .label {
text-align: right;
}
.skip-to [role="menuitem"] .level:first-letter,
.skip-to [role="menuitem"] .label:first-letter {
text-decoration: underline;
text-transform: uppercase;
}
.skip-to [role="menuitem"].skip-to-h1 .level { grid-column: 1; }
.skip-to [role="menuitem"].skip-to-h2 .level { grid-column: 2; }
.skip-to [role="menuitem"].skip-to-h3 .level { grid-column: 3; }
.skip-to [role="menuitem"].skip-to-h4 .level { grid-column: 4; }
.skip-to [role="menuitem"].skip-to-h5 .level { grid-column: 5; }
.skip-to [role="menuitem"].skip-to-h6 .level { grid-column: 8;}
.skip-to [role="menuitem"].skip-to-h1 .label { grid-column: 2 / 8; }
.skip-to [role="menuitem"].skip-to-h2 .label { grid-column: 3 / 8; }
.skip-to [role="menuitem"].skip-to-h3 .label { grid-column: 4 / 8; }
.skip-to [role="menuitem"].skip-to-h4 .label { grid-column: 5 / 8; }
.skip-to [role="menuitem"].skip-to-h5 .label { grid-column: 6 / 8; }
.skip-to [role="menuitem"].skip-to-h6 .label { grid-column: 7 / 8;}
.skip-to [role="menuitem"].skip-to-h1.no-level .label { grid-column: 1 / 8; }
.skip-to [role="menuitem"].skip-to-h2.no-level .label { grid-column: 2 / 8; }
.skip-to [role="menuitem"].skip-to-h3.no-level .label { grid-column: 3 / 8; }
.skip-to [role="menuitem"].skip-to-h4.no-level .label { grid-column: 4 / 8; }
.skip-to [role="menuitem"].skip-to-h5.no-level .label { grid-column: 5 / 8; }
.skip-to [role="menuitem"].skip-to-h6.no-level .label { grid-column: 6 / 8; }
.skip-to [role="menuitem"].skip-to-nesting-level-1 .nesting { grid-column: 1; }
.skip-to [role="menuitem"].skip-to-nesting-level-2 .nesting { grid-column: 2; }
.skip-to [role="menuitem"].skip-to-nesting-level-3 .nesting { grid-column: 3; }
.skip-to [role="menuitem"].skip-to-nesting-level-0 .label { grid-column: 1 / 8; }
.skip-to [role="menuitem"].skip-to-nesting-level-1 .label { grid-column: 2 / 8; }
.skip-to [role="menuitem"].skip-to-nesting-level-2 .label { grid-column: 3 / 8; }
.skip-to [role="menuitem"].skip-to-nesting-level-3 .label { grid-column: 4 / 8; }
.skip-to [role="menuitem"].no-items .label,
.skip-to [role="menuitem"].action .label {
grid-column: 1 / 8;
}
.skip-to [role="separator"] {
margin: 1px 0px 1px 0px;
padding: 3px;
display: block;
width: auto;
font-weight: bold;
border-bottom-width: 1px;
border-bottom-style: solid;
border-bottom-color: $menuTextColor;
background-color: $menuBackgroundColor;
color: $menuTextColor;
z-index: 1000;
}
.skip-to [role="separator"] .mofn {
font-weight: normal;
font-size: 85%;
}
.skip-to [role="separator"]:first-child {
border-radius: 5px 5px 0 0;
}
.skip-to [role="menuitem"].last {
border-radius: 0 0 5px 5px;
}
/* focus styling */
.skip-to.focus {
display: block;
}
.skip-to button:focus,
.skip-to button:hover {
background-color: $menuBackgroundColor;
color: $menuTextColor;
outline: none;
}
.skip-to button:focus {
padding: 6px 7px 5px 7px;
border-width: 0px 2px 2px 2px;
border-color: $focusBorderColor;
}
.skip-to [role="menuitem"]:focus {
padding: 1px;
border-width: 2px;
border-style: solid;
border-color: $focusBorderColor;
background-color: $menuitemFocusBackgroundColor;
color: $menuitemFocusTextColor;
outline: none;
}
.skip-to [role="menuitem"]:focus .level,
.skip-to [role="menuitem"]:focus .label {
background-color: $menuitemFocusBackgroundColor;
color: $menuitemFocusTextColor;
}