details tabs
a tabbed element made from details elements.
"hi"
"bye""hi"
"hi!""hi"
"what's up?"webc
<div class="detabs">
<details name="*">
<summary>"hi"</summary>
"bye"
</details>
<details name="*">
<summary>"hi"</summary>
"hi!"
</details>
<details open name="*">
<summary>"hi"</summary>
"what's up?"
</details>
</div>css
.detabs {
&:has(details:nth-child(1)) { --tabs: 1; }
&:has(details:nth-child(2)) { --tabs: 2; }
&:has(details:nth-child(3)) { --tabs: 3; }
&:has(details:nth-child(4)) { --tabs: 4; }
&:has(details:nth-child(5)) { --tabs: 5; }
&:has(details:nth-child(6)) { --tabs: 6; }
&:has(details:nth-child(7)) { --tabs: 7; }
&:has(details:nth-child(8)) { --tabs: 8; }
&:has(details:nth-child(9)) { --tabs: 9; }
display: grid;
grid-template-columns: subgrid;
grid-template-rows: subgrid;
grid-area: 1 / 1 / span 3 / span var(--tabs);
}
.detabs > details > summary {
grid-area: 1 / var(--tab) / 2 / span 1;
display: grid;
cursor: pointer;
padding: 0.25ex 1ch 0.35ex 1ch;
background: var(--mix-1);
z-index: 1;
border: solid var(--mix-2);
border-width: 1px 0 0 1px;
}
.detabs > details::details-content {
grid-area: 2 / 1 / span 2 / span var(--tabs);
border: solid var(--mix-2);
border-width: 0 0 1px 1px;
}
.detabs > details[open] > summary {
background: var(--mix-2);
}
.detabs > details[open]::details-content {
background: var(--background);
padding: 0.5ex 1ch;
}