THE REFERENCE ROOM
Make it respond.
HTML supplies the elements. CSS gives them a visual state. JavaScript listens for an action and changes that state.
Variables and selection
Variables and selection
const names a value you do not reassign. querySelector finds the first matching element.
<button type="button" id="trigger">Try it</button>
<p id="message">Down the Rabbit-Hole</p>
Edit HTML
.highlight { background: #7FFF00; padding: 20px; }
.enter { animation: enter .8s ease-out; }
@keyframes enter {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
.enter { animation: none; }
}
Edit CSS
const message = document.querySelector("#message");
const chapter = "A curious beginning";
message.textContent = chapter;
Edit JAVASCRIPT
Try this → Change the selected element, class or displayed text, then click Try it.
Events and text
Events and text
addEventListener waits for an event. A native button handles keyboard activation too.
<button type="button" id="trigger">Try it</button>
<p id="message">Down the Rabbit-Hole</p>
Edit HTML
.highlight { background: #7FFF00; padding: 20px; }
.enter { animation: enter .8s ease-out; }
@keyframes enter {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
.enter { animation: none; }
}
Edit CSS
const button = document.querySelector("#trigger");
const message = document.querySelector("#message");
button.addEventListener("click", () => {
message.textContent = "Curiouser and curiouser!";
});
Edit JAVASCRIPT
Try this → Change the selected element, class or displayed text, then click Try it.
Adding a class
Adding a class
JavaScript changes state; CSS defines its appearance.
<button type="button" id="trigger">Try it</button>
<p id="message">Down the Rabbit-Hole</p>
Edit HTML
.highlight { background: #7FFF00; padding: 20px; }
.enter { animation: enter .8s ease-out; }
@keyframes enter {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
.enter { animation: none; }
}
Edit CSS
document.querySelector("#trigger").addEventListener("click", () => {
document.querySelector("#message").classList.add("highlight");
});
Edit JAVASCRIPT
Try this → Change the selected element, class or displayed text, then click Try it.
Removing a class
Removing a class
Start with a class, then remove it on click.
<button type="button" id="trigger">Try it</button>
<p id="message">Down the Rabbit-Hole</p>
Edit HTML
.highlight { background: #7FFF00; padding: 20px; }
.enter { animation: enter .8s ease-out; }
@keyframes enter {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
.enter { animation: none; }
}
Edit CSS
const message = document.querySelector("#message");
message.classList.add("highlight");
document.querySelector("#trigger").addEventListener("click", () => {
message.classList.remove("highlight");
});
Edit JAVASCRIPT
Try this → Change the selected element, class or displayed text, then click Try it.
Toggling a class
Toggling a class
toggle adds a missing class or removes an existing one.
<button type="button" id="trigger">Try it</button>
<p id="message">Down the Rabbit-Hole</p>
Edit HTML
.highlight { background: #7FFF00; padding: 20px; }
.enter { animation: enter .8s ease-out; }
@keyframes enter {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
.enter { animation: none; }
}
Edit CSS
document.querySelector("#trigger").addEventListener("click", () => {
document.querySelector("#message").classList.toggle("highlight");
});
Edit JAVASCRIPT
Try this → Change the selected element, class or displayed text, then click Try it.
Showing and hiding
Showing and hiding
The hidden property controls whether an element is displayed.
<button type="button" id="trigger">Try it</button>
<p id="message">Down the Rabbit-Hole</p>
Edit HTML
.highlight { background: #7FFF00; padding: 20px; }
.enter { animation: enter .8s ease-out; }
@keyframes enter {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
.enter { animation: none; }
}
Edit CSS
document.querySelector("#trigger").addEventListener("click", () => {
const message = document.querySelector("#message");
message.hidden = !message.hidden;
});
Edit JAVASCRIPT
Try this → Change the selected element, class or displayed text, then click Try it.
Triggering an animation
Triggering an animation
Remove the class and allow two frames before restoring it to restart the same animation.
<button type="button" id="trigger">Try it</button>
<p id="message">Down the Rabbit-Hole</p>
Edit HTML
.highlight { background: #7FFF00; padding: 20px; }
.enter { animation: enter .8s ease-out; }
@keyframes enter {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
.enter { animation: none; }
}
Edit CSS
const message = document.querySelector("#message");
document.querySelector("#trigger").addEventListener("click", () => {
message.classList.remove("enter");
requestAnimationFrame(() => {
requestAnimationFrame(() => message.classList.add("enter"));
});
});
Edit JAVASCRIPT
Try this → Change the selected element, class or displayed text, then click Try it.