a11y-accordion-tabs
Version:
A script for an accessible accordion tabs component
241 lines (201 loc) • 3.81 kB
CSS
/* Base Styles */
*, *::before, *::after {
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 112.5%;
line-height: 1.5;
color: #eee;
background-color: #0a1131;
}
h1 {
font-weight: 300;
font-size: calc(2rem + 1.75vw);
line-height: 1.2;
margin: 0.5em 0;
}
h2, h3 {
margin-top: 0;
}
a, a:visited {
color: inherit;
text-decoration: none;
border-bottom: 2px solid #de0840;
}
a:hover {
color: #de0840;
}
a.button {
display: inline-block;
color: white;
background-color: #de0840;
border: none;
border-radius: 4px;
line-height: 1.5;
padding: 0.65rem 1rem;
}
a.button:hover {
background-color: #ff0f4e;
}
code {
font-family: Consolas,monaco,monospace;
line-height: 1.75;
background-color: rgba(255, 255, 255, 0.15);
padding: 6px 8px 2px;
border-radius: 4px;
opacity: 0.65;
}
.logo {
margin: 0 0 1rem 0;
opacity: 0.9;
}
.main, .header, .footer {
width: 100%;
max-width: 800px;
margin: 0 auto;
padding: 2rem;
}
.header {
text-align: center;
margin: calc(1rem + 4vw) auto calc(1rem + 2vw);
padding-top: 4rem;
}
.footer {
padding: 20vw 0 3rem;
opacity: 1;
font-size: 1rem;
text-align: center;
}
.footer a, .footer a:visited {
color: white;
margin: 0 1rem;
border: none;
}
.footer a:hover, .footer a:visited:hover {
border-bottom: 2px solid #de0840;
}
.accordion-tabs {
color: #0c1333;
background-color: #fff;
border-radius: 6px;
box-shadow: 0 0 12px rgba(0, 0, 0, 0.2), 0 0 0 8px #de0840, 0 0 200px 30px rgba(0, 126, 255, 0.31);
}
.tabs-tab-list {
display: flex;
list-style: none;
margin: 0;
padding: 0;
}
.tabs-tab-list li {
margin: 0;
}
.tabs-trigger {
border-bottom: none;
color: #666;
display: none;
font-weight: normal;
margin: 0 5px 0 1px;
padding: 15px 20px;
text-decoration: none;
}
.tabs-trigger:hover {
border-bottom: none;
color: #000;
}
.tabs-trigger.is-selected, .tabs-trigger.is-selected:hover, .tabs-trigger.is-selected:focus {
border-bottom: 2px solid #000;
color: #000;
}
.tabs-trigger:active {
outline: none;
}
.tabs-panel {
display: block;
margin: 0;
padding: 0;
}
.tabs-panel:not(:first-of-type) {
border-top: 2px solid #eee;
}
.tabs-panel:not(:last-child) {
border-bottom: 1px solid #eee;
}
.tabs-panel:not(:last-child) {
border-bottom: none;
}
.tabs-panel .content {
margin-top: 10px;
padding: 20px;
}
.tabs-panel.is-hidden .content {
display: none;
}
.tabs-panel:active, .tabs-panel:focus {
outline: none;
}
.is-initialized.tabs-allowed .tabs-panel {
display: inherit;
}
.accordion-trigger {
display: flex;
align-items: center;
justify-content: space-between;
cursor: pointer;
padding: 15px 20px;
}
.accordion-trigger-icon {
pointer-events: none;
}
@media (min-width: 40em) {
.tabs-allowed .accordion-trigger {
display: none;
}
.tabs-allowed .tabs-trigger {
display: block;
}
.tabs-allowed .tabs-panel {
display: none;
}
.tabs-allowed .tabs-panel.is-hidden {
display: none;
}
.tabs-allowed .tabs-panel {
border-top: 2px solid #eee;
}
.tabs-allowed .tabs-tab-list {
margin-bottom: -2px;
}
}
.accordion-trigger-icon {
display: inline-block;
float: right;
width: 22px;
height: 22px;
}
.accordion-trigger-icon svg {
margin: 0;
}
[aria-expanded="true"] .vert {
display: none;
}
.label--open, .label--close {
display: block;
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
.label--close {
display: none;
}
.is-open .label--open {
display: none;
}
.is-open .label--close {
display: block;
}