The many ways to hide things in the DOM

A few weeks ago in one of my YouTube videos, I used the [hidden] attribute to hide and show some elements in the DOM.
One of my subscribers mentioned that they hadn’t heard of that attribute before, and were glad I mentioned it.
Because JavaScripts always has at least two or three ways to do something, I thought today, it might be interesting to learn about all the different ways you can hide stuff in the DOM.


This content originally appeared on Go Make Things and was authored by Go Make Things

A few weeks ago in one of my YouTube videos, I used the [hidden] attribute to hide and show some elements in the DOM.

One of my subscribers mentioned that they hadn’t heard of that attribute before, and were glad I mentioned it.

Because JavaScripts always has at least two or three ways to do something, I thought today, it might be interesting to learn about all the different ways you can hide stuff in the DOM.

Let’s dig in!

The display: none CSS property

The display: none property in CSS hides an element from the DOM. It is not announced by screen readers.

<p class="hide">👋 Hi there! I don't exist.</p>
.hide {
	display: none;
}

The [hidden] attribute

The [hidden] attribute does the same exact thing as display: none, without the need for any CSS. Just like with display: none, the hidden element is not announced by screen readers.

<p hidden>👋 Hi there! I don't exist.</p>

The visibility: hidden property

The visibility: hidden property in CSS hides an element visually, but maintains its space in the DOM (often resulting in an odd gap in the layout).

Unlike display: none and the [hidden] attribute, it is announced by screen readers.

Edit: my friend Ben Myers informed this is wrong. They ARE hidden from screen readers as well.

<p class="invisible">👋 Hi there! I don't exist.</p>
.invisible {
	visibility: hidden;
}

A .visually-hidden class

Sometimes, you have content, headings, or labels that exist to convey information to screen reader users that’s conveyed visually to other users.

For example, if you have a large chunk of content that’s loaded asynchronously, you wouldn’t necessarily want a screen reader to start automatically reading the whole thing once it loads. But you would want to let a screen reader user know it’s there.

There’s no browser-native way to do this, but over the years, a CSS pattern has emerged that visually hides content, prevents it from taking up any space in the DOM, and still allows screen readers to detect it.

<p class="visually-hidden">Users can't see me, but screen readers will.</p>
/**
 * Visually hide an element, but leave it available for screen readers
 * @link https://github.com/h5bp/html5-boilerplate/blob/master/dist/css/main.css
 * @link http://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 */
.visually-hidden {
	border: 0;
	clip: rect(0 0 0 0);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

For announcements for screen readers, this class is often paired with an ARIA live region.

<p class="visually-hidden" aria-live="polite">Content loaded.</p>

The [aria-hidden="true"] attribute

The [aria-hidden="true"] attribute hides content from screen readers while still displaying it visually.

This is primarily used when you have decorative-only content that shouldn’t be read aloud for screen reader users, and would create more confusion or noise than would add value.

For example, imagine if you have a “Favorite” button that included a heart icon and the text “Favorite This Article.”

The heart icon doesn’t clarify or add any useful information about what the button does. It’s solely a visually flourish. Adding the [aria-hidden="true"] attribute prevents it from being announced to screen readers, reducing the amount of “noise” in the UI.

<button>
 	<svg aria-hidden="true">...</svg>
	Favorite This Article
</button>


This content originally appeared on Go Make Things and was authored by Go Make Things


Print Share Comment Cite Upload Translate Updates
APA

Go Make Things | Sciencx (2024-07-15T14:30:00+00:00) The many ways to hide things in the DOM. Retrieved from https://www.scien.cx/2024/07/15/the-many-ways-to-hide-things-in-the-dom/

MLA
" » The many ways to hide things in the DOM." Go Make Things | Sciencx - Monday July 15, 2024, https://www.scien.cx/2024/07/15/the-many-ways-to-hide-things-in-the-dom/
HARVARD
Go Make Things | Sciencx Monday July 15, 2024 » The many ways to hide things in the DOM., viewed ,<https://www.scien.cx/2024/07/15/the-many-ways-to-hide-things-in-the-dom/>
VANCOUVER
Go Make Things | Sciencx - » The many ways to hide things in the DOM. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/07/15/the-many-ways-to-hide-things-in-the-dom/
CHICAGO
" » The many ways to hide things in the DOM." Go Make Things | Sciencx - Accessed . https://www.scien.cx/2024/07/15/the-many-ways-to-hide-things-in-the-dom/
IEEE
" » The many ways to hide things in the DOM." Go Make Things | Sciencx [Online]. Available: https://www.scien.cx/2024/07/15/the-many-ways-to-hide-things-in-the-dom/. [Accessed: ]
rf:citation
» The many ways to hide things in the DOM | Go Make Things | Sciencx | https://www.scien.cx/2024/07/15/the-many-ways-to-hide-things-in-the-dom/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.