Tutorials
=========

The links on this page lead to a variety of tutorials and training materials. Whether you are just starting, learning the basics, or are an old hand at web development, you can find helpful resources here for best practices.

These resources are created by forward-thinking companies and web developers who have embraced open standards and best practices for web development and that provide or allow translations, through an open content license such as Creative Commons.

For complete beginners to the Web
---------------------------------

Getting started with the Web

*Getting started with the Web* is a concise series introducing you to the practicalities of web development. You'll set up the tools you need to construct a simple webpage and publish your own simple code.

HTML Tutorials
--------------

### Introductory level

Introduction to HTML

This module sets the stage, getting you used to important concepts and syntax, looking at applying HTML to text, how to create hyperlinks, and how to use HTML to structure a webpage.

MDN HTML element reference

A comprehensive reference for HTML elements, and how the different browsers support them.

Creating a Simple Web Page with HTML

An HTML guide for beginners that includes explanations of common tags, including HTML tags. Also includes a step-by-step guide to creating a basic web page with code examples.

HTML Challenges

Use these challenges to hone your HTML skills (for example, "Should I use an <h2> element or a <strong> element?"), focusing on meaningful markup.

### Intermediate level

Multimedia and embedding

This module explores how to use HTML to include multimedia in your web pages, including the different ways that images can be included, and how to embed video, audio, and even entire other webpages.

HTML tables

Representing tabular data on a webpage in an understandable, accessible way can be a challenge. This module covers basic table markup, along with more complex features such as implementing captions and summaries.

### Advanced level

HTML forms

Forms are a very important part of the Web — these provide much of the functionality you need for interacting with websites, e.g. registering and logging in, sending feedback, buying products, and more. This module gets you started with creating the client-side parts of forms.

Tips for authoring fast-loading HTML pages

Optimize web pages to provide a more responsive site for visitors and reduce the load on your web server and Internet connection.

CSS Tutorials
-------------

### Introductory level

CSS basics

CSS (Cascading Style Sheets) is the code you use to style your webpage. *CSS Basics* takes you through what you need to get started. We'll answer questions like: How do I make my text black or red? How do I make my content show up in such-and-such a place on the screen? How do I decorate my webpage with background images and colors?

CSS first steps

CSS (Cascading Style Sheets) is used to style and lay out web pages — for example, to alter the font, color, size, and spacing of your content, split it into multiple columns, or add animations and other decorative features. This module provides a gentle beginning to your path toward CSS mastery with the basics of how it works, what the syntax looks like, and how you can start using it to add styling to HTML.

CSS building blocks

This module carries on where CSS first steps left off — now you've gained familiarity with the language and its syntax, and got some basic experience with using it, it's time to dive a bit deeper. This module looks at the cascade and inheritance, all the selector types we have available, units, sizing, styling backgrounds and borders, debugging, and lots more.

The aim here is to provide you with a toolkit for writing competent CSS and help you understand all the essential theory, before moving on to more specific disciplines like text styling and CSS layout.

Selectors

Target HTML elements, including based on element state, with CSS.

Specificity

Understanding the browser algorithm to determine which CSS declarations get applied to an element when there are competing declarations, with a specificity quiz

Cascade & Inheritance

The cascade, specificity, and inheritance control how CSS is applied to HTML and how conflicts between style declarations are resolved.

Styling text

Here we look at text styling fundamentals, including setting font, boldness, and italics, line and letter spacing, and drop shadows and other text features. We round off the module by looking at applying custom fonts to your page, and styling lists and links.

Common CSS Questions

Common questions and answers for beginners.

### Intermediate level

CSS layout

At this point we've already looked at CSS fundamentals, how to style text, and how to style and manipulate the boxes that your content sits inside. Now it's time to look at how to place your boxes in the right place in relation to the viewport, and one another. We have covered the necessary prerequisites so can now dive deep into CSS layout, looking at different display settings, traditional layout methods involving float and positioning, and new fangled layout tools like flexbox.

CSS reference

Complete reference to CSS, with details on support by Firefox and other browsers.

Fluid Grids

Design layouts that fluidly resize with the browser window, while still using a typographic grid.

CSS Challenges

Flex your CSS skills, and see where you need more practice.

### Advanced level

Using CSS transforms

Apply rotation, skewing, scaling, and translation using CSS.

CSS transitions

CSS transitions provide a way to animate changes to CSS properties, instead of having the changes take effect instantly.

Canvas tutorial

Learn how to draw graphics using scripting using the canvas element.

JavaScript Tutorials
--------------------

### Introductory level

JavaScript first steps

In our first JavaScript module, we first answer some fundamental questions such as "what is JavaScript?", "what does it look like?", and "what can it do?", before moving on to taking you through your first practical experience of writing JavaScript. After that, we discuss some key JavaScript features in detail, such as variables, strings, numbers and arrays.

JavaScript building blocks

In this module, we continue our coverage of all JavaScript's key fundamental features, turning our attention to commonly-encountered types of code blocks such as conditional statements, loops, functions, and events. You've seen this stuff already in the course, but only in passing — here we'll discuss it all explicitly.

Getting started with JavaScript

What is JavaScript and how can it help you?

Codecademy

Codecademy is an easy way to learn how to code JavaScript. It's interactive and you can do it with your friends.

freeCodeCamp

freeCodeCamp teaches a variety of languages and frameworks for web development. It also has a forum, an internet radio station, and a blog.

### Intermediate level

Introducing JavaScript objects

In JavaScript, most things are objects, from core JavaScript features like strings and arrays to the browser APIs built on top of JavaScript. You can even create your own objects to encapsulate related functions and variables into efficient packages. The object-oriented nature of JavaScript is important to understand if you want to go further with your knowledge of the language and write more efficient code, therefore we've provided this module to help you. Here we teach object theory and syntax in detail, look at how to create your own objects, and explain what JSON data is and how to work with it.

Client-side web APIs

When writing client-side JavaScript for websites or applications, you won't go very far before you start to use APIs — interfaces for manipulating different aspects of the browser and operating system the site is running on, or even data from other websites or services. In this module, we will explore what APIs are, and how to use some of the most common APIs you'll come across often in your development work.

Eloquent JavaScript

A comprehensive guide to intermediate and advanced JavaScript methodologies.

Speaking JavaScript

For programmers who want to learn JavaScript quickly and properly, and for JavaScript programmers who want to deepen their skills and/or look up specific topics.

Essential JavaScript Design Patterns

An introduction to essential JavaScript design patterns.

JavaScript.info - The Modern JavaScript Tutorial

Part 1: The Language. Part 2: Working with Browsers.

### Advanced level

JavaScript Guide

A comprehensive, regularly updated guide to JavaScript for all levels of learning from beginner to advanced.

You Don't Know JS

A series of books diving deep into the core mechanisms of the JavaScript language.

JavaScript Garden

Documentation of the most quirky parts of JavaScript.

Exploring ES6

Reliable and in-depth information on ECMAScript 2015.

JavaScript Patterns

A JavaScript pattern and anti-pattern collection that covers function patterns, jQuery patterns, jQuery plugin patterns, design patterns, general patterns, literals and constructor patterns, object creation patterns, code reuse patterns, DOM.

How browsers work

A detailed research article describing different modern browsers, their engines, page rendering etc.

JavaScript Videos

A collection of JavaScript videos to watch.

### Extension Development

WebExtensions

WebExtensions is a cross-browser system for developing browser add-ons. To a large extent, the system is compatible with the extension API supported by Google Chrome and Opera. Extensions written for these browsers will in most cases run in Firefox or Microsoft Edge with just a few changes. The API is also fully compatible with multiprocess Firefox.