Skip to content

Instantly share code, notes, and snippets.

@gusbemacbe
Created January 16, 2024 12:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gusbemacbe/1107b7b252921dee2a917a5512b9f37f to your computer and use it in GitHub Desktop.
Save gusbemacbe/1107b7b252921dee2a917a5512b9f37f to your computer and use it in GitHub Desktop.
HTML Only Accordion

HTML Only Accordion

Exploring styling the HTML Details and Summary tags to create functional accordion without any javascript.

A Pen by Frederick Allen on CodePen.

License.

<section>
<h1>
Hypertext Accordion
</h1>
<details>
<summary>Details</summary>
<p>
Lorem ipsum dolor sit amet, eu alia suscipit mei. Reque iriure delectus vix id, ex sed forensibus suscipiantur. In eos exerci mollis apeirian, an qui latine alienum. Ad mea libris maluisset, consul assueverit sea ex.
</p>
</details>
<details>
<summary>Features</summary>
<p>
Lorem ipsum dolor sit amet, eu alia suscipit mei. Reque iriure delectus vix id, ex sed forensibus suscipiantur. In eos exerci mollis apeirian, an qui latine alienum. Ad mea libris maluisset, consul assueverit sea ex.
</p>
</details>
<details>
<summary>Information
</summary>
<p>Lorem ipsum dolor sit amet, eu alia suscipit mei. Reque iriure delectus vix id, ex sed forensibus suscipiantur. In eos exerci mollis apeirian, an qui latine alienum. Ad mea libris maluisset, consul assueverit sea ex. </p>
</details>
<details>
<summary>Specifications
</summary>
<p>Lorem ipsum dolor sit amet, eu alia suscipit mei. Reque iriure delectus vix id, ex sed forensibus suscipiantur. In eos exerci mollis apeirian, an qui latine alienum. Ad mea libris maluisset, consul assueverit sea ex. </p>
</details>
</section>
html,
.root {
padding: 0;
margin: 0;
font-size: 18px;
}
body {
font: menu;
font-size: 1rem;
line-height: 1.4;
padding: 0;
margin: 0;
}
section {
padding-top: 4rem;
width: 50%;
margin: auto;
}
h1 {
font-size: 2rem;
font-weight: 500;
}
details[open] summary ~ * {
animation: open 0.3s ease-in-out;
}
@keyframes open {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
details summary::-webkit-details-marker {
display: none;
}
details summary {
width: 100%;
padding: 0.5rem 0;
border-top: 1px solid black;
position: relative;
cursor: pointer;
font-size: 1.25rem;
font-weight: 300;
list-style: none;
}
details summary:after {
content: "+";
color: black;
position: absolute;
font-size: 1.75rem;
line-height: 0;
margin-top: 0.75rem;
right: 0;
font-weight: 200;
transform-origin: center;
transition: 200ms linear;
}
details[open] summary:after {
transform: rotate(45deg);
font-size: 2rem;
}
details summary {
outline: 0;
}
details p {
font-size: 0.95rem;
margin: 0 0 1rem;
padding-top: 1rem;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment