<details>
on GitHubBy Jacob Strieb
Published on August 09, 2020
While reading code for the “sanitization filter” used by GitHub to allow specific HTML tags in their Markdown, I noticed the <details>
tag on the whitelist.1 Having never learned about this tag, I did some additional research. According to MDN:2
The HTML Details Element (
<details>
) creates a disclosure widget in which information is visible only when the widget is toggled into an “open” state. A summary or label can be provided using the<summary>
element.A disclosure widget is typically presented onscreen using a small triangle which rotates (or twists) to indicate open/closed status, with a label next to the triangle. If the first child of the
<details>
element is a<summary>
, the contents of the<summary>
element are used as the label for the disclosure widget.
The following HTML/Markdown will create a simple dropdown:3
<!-- This code creates a simple dropdown -->
<details>
<summary>Click here for example HTML/Markdown.</summary>
<!-- The fenced code block below must be separated by
blank lines on either side to work correctly -->
```bash
echo "It is possible to include Markdown within HTML tags."
```
</details>
The code above creates the following dropdown:
The HTML Details Element is extremely useful for long Markdown files with information that may not pertain to every user. Sections with installation details, FAQs, and changelogs are particularly well-suited to collapsing using a <details>
tag.
When including the Details Element on GitHub, it is best to use a child <summary>
tag, even though the HTML does not explicitly require it. The CSS stylesheets used on GitHub have cursor: pointer
for the <summary>
tag. But if there is no <summary>
then the default text “Details” that gets shown will not have a pointer indicating to the user that it is clickable.
Note that it is also possible to use <details>
in issues and pull requests where it may be even more important to collapse auxiliary details like long logs and tracebacks.
Though I am surely not the first to discover and use this trick on GitHub, I write this in the hope that many more will use it to make their Markdown more concise and readable.