Learn The DOM Interactively

By @alesanchezr and other contributors at 4Geeks Academy

last commit build by developers build by developers

This tutorial is part of a bigger group of tutorials about web development, this repository focuses only on The DOM, you will learn how to select elements from your website and manipulate them with Javascript (change styles, add event listeners, remove elements programmatically, change your entire website without a refresh).

You can start the tutorial online in just 10 seconds or download the source files to do it locally.

I strongly recommend doing this the tutorials in this order:

  1. Introduction to HTML
  2. Introduction to CSS
  3. Introduction to Javascript
  4. Introduction to The DOM ← you are here now 🔥
  5. Using events & The DOM
  6. Object Oriented Programming

One click installation:

Open in Gitpod

Local Installation

  1. Make sure you have learnpack installed and node.js version v14+ and jest v27. This is the command to install the learnpack-cli and jest:
$ npm i learnpack jest@27.0.6 -g
  1. Clone or download this repository. Once you finish downloading, you will find a new folder with a subdirectory "exercises" that contains all the exercises within.

  2. Install the learnpack plugin to test and compile vanillajs:

$ learnpack plugins:install learnpack-dom
  1. Start the tutorial/exercises by running the following command from the root of the project:
$ learnpack start

How are the exercises organized?

Each exercise is a small vanillajs website containing the following files:

  1. index.js: represents the entry javascript file that will be executed when the website loads.
  2. index.html: represents the HTML entry for website.
  3. style.css: your website styles, they have to be imported from the index.html
  4. README.md: contains exercise instructions.
  5. test.js: you don't have to open this file, it contains the testing script for the exercise.

Contributors

Thanks goes to these wonderful people (emoji key):

  1. Alejandro Sanchez (alesanchezr), contribution: (coder) 💻 (idea) 🤔, (build-tests) ⚠️, (pull-request-review) 👀 (build-tutorial) ✅ (documentation) 📖
  2. Paolo (plucodev), contribution: (bug reports) 🐛, contribution: (coder), (translation) 🌎

This project follows the all-contributors specification. Contributions of any kind are welcome!