Bhylu

CSS Dropdowns

Native details and summary provide a disclosure that opens by click or keyboard. Use them for simple expandable navigation rather than a hover-only container.

How it works

  • Keep navigation in semantic HTML with descriptive links. CSS changes layout and states, not the destination or the meaning of a control.
  • Test long labels and narrow widths before treating the example as a reusable navigation component.

A practical example

The HTML supplies the content; the CSS below styles it. Open both together in the playground, then change the lesson rules at the end of the stylesheet.

HTML

<details><summary>Workshop topics</summary><nav aria-label="Workshop topics"><a href="#repair">Repair club</a><a href="#woodwork">Woodwork</a></nav></details>
CSS

body { margin: 0; padding: 24px; font-family: system-ui, sans-serif; color: #25332d; background: #f4f7f2; }
.card { padding: 20px; background: white; border: 1px solid #d4dfd6; }
h2 { margin-top: 0; }
p { line-height: 1.6; }
a { color: #17634c; }
.badge { display: inline-block; margin-bottom: 12px; font-size: .8rem; }
.layout { display: grid; gap: 16px; }
.photo { width: 100%; height: 160px; background: linear-gradient(135deg, #e4af6b, #668cba); }
button, input, select { font: inherit; padding: 8px; }
label { display: block; margin-block: 12px 4px; }

/* This lesson */
details { max-width: 20rem; padding: 16px; border: 1px solid #bdcfbf; border-radius: 10px; background: white; }
summary { cursor: pointer; font-weight: 600; }

Native details and summary provide a disclosure that opens by click or keyboard. Use them for simple expandable navigation rather than a hover-only container.