diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f9a1414e8aed51f..ddba5d483f4201d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -40,6 +40,10 @@ # MDN Firefox Release Notes /files/en-us/mozilla/firefox @mdn/core-yari-content +# New templates and sidebars +/files/jsondata/L10n-Template.json @mdn/core-dev +/files/sidebars @mdn/core-dev + # ============================= CONTROL FILES ============================= # # The CODEOWNERS file must end with these matches: Any pull request changing # one or more of these files should be escalated to the owners specified here. diff --git a/.github/ISSUE_TEMPLATE/content-bug.yml b/.github/ISSUE_TEMPLATE/content-bug.yml index 6a18dc073dc4cde..2bad4412c180fe1 100644 --- a/.github/ISSUE_TEMPLATE/content-bug.yml +++ b/.github/ISSUE_TEMPLATE/content-bug.yml @@ -8,7 +8,7 @@ body: ### Before you start **Want to change a page yourself?** This content is open source! - ↩ Look for the _Edit on GitHub_ link on any MDN page. + ↩ Look for the _View this page on GitHub_ link on any MDN page to edit the content on GitHub.com afterwards. **Is your issue about a browser compatibility table?** ↩ Use the _Report problems with this compatibility data on GitHub_ link next to a compatibility table. diff --git a/.github/ISSUE_TEMPLATE/page-report.yml b/.github/ISSUE_TEMPLATE/page-report.yml index c1260f59928bfda..a3bf5b8519c90e3 100644 --- a/.github/ISSUE_TEMPLATE/page-report.yml +++ b/.github/ISSUE_TEMPLATE/page-report.yml @@ -8,7 +8,7 @@ body: ### Before you start **Want to change this page yourself?** This content is open source! - ↩ Go back and use the _Edit on GitHub_ link on the page. + ↩ Go back and use the _View this page on GitHub_ link on the page to edit the content on GitHub.com afterwards. **Is your issue about the browser compatibility table?** ↩ Go back and use the _Report problems with this compatibility data on GitHub_ link on the page. diff --git a/.github/labeler.yml b/.github/labeler.yml index 0627f70b2cfc4f0..87dfcef8f6e546e 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -174,7 +174,7 @@ Content:Other: - files/en-us/web/exslt/** - files/en-us/web/opensearch/** - files/en-us/web/privacy/** - - files/en-us/web/text_fragments/** + - files/en-us/web/uri/** - files/en-us/web/xml/** - files/en-us/web/xpath/** - files/en-us/web/xslt/** diff --git a/.github/workflows/auto-cleanup-bot.yml b/.github/workflows/auto-cleanup-bot.yml index 25861b4ad0da310..c3e23c58576680b 100644 --- a/.github/workflows/auto-cleanup-bot.yml +++ b/.github/workflows/auto-cleanup-bot.yml @@ -31,10 +31,11 @@ jobs: yarn content fix-flaws yarn fix:md yarn fix:fm + node scripts/sort_and_unique_file_lines.js .vscode/dictionaries - name: Create PR with only fixable issues if: success() - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v7 with: commit-message: "chore: auto-fix Markdownlint, Prettier, and front-matter issues" branch: markdownlint-auto-cleanup @@ -49,7 +50,7 @@ jobs: - name: Create PR with notice on unfixed issues if: failure() - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v7 with: commit-message: "chore: auto-fix Markdownlint, Prettier, and front-matter issues" branch: markdownlint-auto-cleanup diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml index 5a206ab3ad6509b..c0930e006765243 100644 --- a/.github/workflows/auto-merge.yml +++ b/.github/workflows/auto-merge.yml @@ -6,7 +6,7 @@ on: jobs: auto-merge: runs-on: ubuntu-latest - if: github.actor == 'dependabot[bot]' + if: github.event.pull_request.user.login == 'dependabot[bot]' steps: - uses: ahmadnassri/action-dependabot-auto-merge@v2.6 with: diff --git a/.github/workflows/interfacedata-updater.yml b/.github/workflows/interfacedata-updater.yml index 1ba2d59f2dd6404..a188d4dcd7bf989 100644 --- a/.github/workflows/interfacedata-updater.yml +++ b/.github/workflows/interfacedata-updater.yml @@ -35,7 +35,7 @@ jobs: run: node scripts/update-interface-data.js ../webref/ - name: Create pull request - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v7 with: path: mdn-content token: ${{ secrets.AUTOMERGE_TOKEN }} diff --git a/.github/workflows/pr-check-lint_content.yml b/.github/workflows/pr-check-lint_content.yml index f11f450a8b97a82..d9ee293eb809f54 100644 --- a/.github/workflows/pr-check-lint_content.yml +++ b/.github/workflows/pr-check-lint_content.yml @@ -32,7 +32,7 @@ jobs: run: | # Use the GitHub API to get the list of changed files # documentation: https://docs.github.com/rest/commits/commits#compare-two-commits - DIFF_DOCUMENTS=$(gh api repos/{owner}/{repo}/compare/${{ env.BASE_SHA }}...${{ env.HEAD_SHA }} \ + DIFF_DOCUMENTS=$(gh api repos/{owner}/{repo}/compare/${BASE_SHA}...${HEAD_SHA} \ --jq '.files | .[] | select(.status|IN("added", "modified", "renamed", "copied", "changed")) | .filename') # filter out files that are not markdown DIFF_DOCUMENTS=$(echo "${DIFF_DOCUMENTS}" | egrep -i "^files/.*\.md$" | xargs) @@ -82,7 +82,7 @@ jobs: # https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings EOF="$(openssl rand -hex 8)" - files_to_lint="${{ env.DIFF_DOCUMENTS }}" + files_to_lint="$DIFF_DOCUMENTS" echo "Running markdownlint --fix" MD_LINT_FAILED=false @@ -101,6 +101,12 @@ jobs: echo "FM_LINT_FAILED=${FM_LINT_FAILED}" >> $GITHUB_ENV echo "Running Prettier" + PRETTIER_FAILED=false + PRETTIER_LOG=$(yarn prettier --check ${files_to_lint} 2>&1) || PRETTIER_FAILED=true + echo "PRETTIER_LOG<<${EOF}" >> $GITHUB_ENV + echo "${PRETTIER_LOG}" >> $GITHUB_ENV + echo "${EOF}" >> $GITHUB_ENV + echo "PRETTIER_FAILED=${PRETTIER_FAILED}" >> $GITHUB_ENV yarn prettier -w ${files_to_lint} if [[ -n $(git diff) ]]; then @@ -110,16 +116,17 @@ jobs: # info for troubleshooting echo MD_LINT_FAILED=${MD_LINT_FAILED} echo FM_LINT_FAILED=${FM_LINT_FAILED} + echo PRETTIER_FAILED=${PRETTIER_FAILED} git diff - name: Setup reviewdog - if: env.FILES_MODIFIED == 'true' || env.MD_LINT_FAILED == 'true' + if: ${{ env.FILES_MODIFIED == 'true' || env.MD_LINT_FAILED == 'true' }} uses: reviewdog/action-setup@v1 with: reviewdog_version: latest - name: Suggest changes using diff - if: env.FILES_MODIFIED == 'true' + if: ${{ env.FILES_MODIFIED == 'true' }} env: REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | @@ -134,11 +141,11 @@ jobs: -reporter=github-pr-review < "${TMPFILE}" - name: Add reviews for markdownlint errors - if: env.MD_LINT_FAILED == 'true' + if: ${{ env.MD_LINT_FAILED == 'true' }} env: REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - echo "${{ env.MD_LINT_LOG }}" | \ + echo "${MD_LINT_LOG}" | \ reviewdog \ -efm="%f:%l:%c %m" \ -efm="%f:%l %m" \ @@ -147,11 +154,31 @@ jobs: -reporter="github-pr-review" - name: Fail if any issues pending - if: env.FILES_MODIFIED == 'true' || env.MD_LINT_FAILED == 'true' || env.FM_LINT_FAILED == 'true' + if: ${{ env.FILES_MODIFIED == 'true' || env.MD_LINT_FAILED == 'true' || env.FM_LINT_FAILED == 'true' }} + env: + MD_LINT_FAILED: ${{ env.MD_LINT_FAILED }} + FM_LINT_FAILED: ${{ env.FM_LINT_FAILED }} + PRETTIER_FAILED: ${{ env.PRETTIER_FAILED }} + MD_LINT_LOG: ${{ env.MD_LINT_LOG }} + FM_LINT_LOG: ${{ env.FM_LINT_LOG }} + PRETTIER_LOG: ${{ env.PRETTIER_LOG }} run: | - echo -e "\nLogs from markdownlint:" - echo "${{ env.MD_LINT_LOG }}" - echo -e "\nLogs from front-matter linter:" - echo "${{ env.FM_LINT_LOG }}" - echo -e "\nPlease fix all the linting issues mentioned in above logs and in the review comments." + echo -e "\nPlease fix all the linting issues mentioned in the following logs and in the PR review comments." + + if [[ ${MD_LINT_FAILED} == 'true' ]]; then + echo -e "\n\n🪵 Logs from markdownlint:" + echo "${MD_LINT_LOG}" + fi + + if [[ ${FM_LINT_FAILED} == 'true' ]]; then + echo -e "\n\n🪵 Logs from front-matter linter:" + echo "${FM_LINT_LOG}" + fi + + if [[ ${PRETTIER_FAILED} == 'true' ]]; then + echo -e "\n\n🪵 Logs from Prettier formatter:" + echo "${PRETTIER_LOG}" + echo -e "\nYou can use Prettier playground to format the files online (configuration pre-filled): https://prettier.io/playground/#N4Igxg9gdgLgprEAuEBiABABwIYGd7owAWc6CMAlgE6kBmFANqSTSADQgSaXS7KjYqVCAHcACoIR8U2BiOwBPPhwBGVbGADWcGAGVsAWzgAZClDjIYVAK5xV6rTt04wZgOaWbdkLjgGKnrYccAAemHBUFEawsgAqEVCCFHDStLK+HLjuTACK1hDwyGkMGSAAVrghutlweQUWSMWlAI758GLCmNIgeAC05nAAJkPsIFbYjO4AwhAGBtjIPQwMo1lQbkwAgjBWFCrW7RGm5kXp3kQwBgwA6kQU8LgucLpS9xQAbvcKi2C4yiDvWwASSgw1gujAkW4m1BuhgCiYpxK3kwwl813UmEWqJSEXeFg4Zl8VBgHWwbnmSNKOCoxMW8yomkGoigo1RZhg1wog2IyAAHAAGDg0VrUOBkikLRpnDgwbAqLk8ojIABMHGsvli8tSMpAfhUQ2Gg2M2HW1nJcAAYhAqPMdu5FtgDhAQABfV1AA \n" + fi + exit 1 diff --git a/.github/workflows/pr-check_cspell_lists.yml b/.github/workflows/pr-check_cspell_lists.yml new file mode 100644 index 000000000000000..eb3139a842d4953 --- /dev/null +++ b/.github/workflows/pr-check_cspell_lists.yml @@ -0,0 +1,30 @@ +name: Check cSpell lists + +on: + pull_request: + branches: + - main + paths: + - .vscode/dictionaries/* + +jobs: + docs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + sparse-checkout-cone-mode: false + sparse-checkout: | + .vscode/dictionaries/* + .nvmrc + package.json + scripts/sort_and_unique_file_lines.js + + - name: Setup Node.js environment + uses: actions/setup-node@v4 + with: + node-version-file: ".nvmrc" + + - name: Check if cSpell word lists are in correct order + run: | + node scripts/sort_and_unique_file_lines.js --check .vscode/dictionaries diff --git a/.github/workflows/pr-review-companion.yml b/.github/workflows/pr-review-companion.yml index 7e24866c7bba14a..ac3ea325f57e526 100644 --- a/.github/workflows/pr-review-companion.yml +++ b/.github/workflows/pr-review-companion.yml @@ -55,7 +55,7 @@ jobs: - name: Install Python poetry if: ${{ env.HAS_ARTIFACT }} - uses: snok/install-poetry@v1.3 + uses: snok/install-poetry@v1.4 with: virtualenvs-create: true virtualenvs-in-project: true diff --git a/.github/workflows/pr-test.yml b/.github/workflows/pr-test.yml index 51a23553a9cafb2..3d39964e3c0dfa0 100644 --- a/.github/workflows/pr-test.yml +++ b/.github/workflows/pr-test.yml @@ -34,7 +34,7 @@ jobs: run: | # Use the GitHub API to get the list of changed files # documentation: https://docs.github.com/rest/commits/commits#compare-two-commits - DIFF_DOCUMENTS=$(gh api repos/{owner}/{repo}/compare/${{ env.BASE_SHA }}...${{ env.HEAD_SHA }} \ + DIFF_DOCUMENTS=$(gh api repos/{owner}/{repo}/compare/${BASE_SHA}...${HEAD_SHA} \ --jq '.files | .[] | select(.status|IN("added", "modified", "renamed", "copied", "changed")) | .filename') # filter out files that are not markdown files @@ -97,27 +97,27 @@ jobs: # you don't need that script as a writer. It's only used in CI # and it can't use the default CONTENT_ROOT that gets set in # package.json. - yarn build ${{ env.GIT_DIFF_CONTENT }} + yarn build $GIT_DIFF_CONTENT echo "Disk usage size of the build" - du -sh ${{ env.BUILD_OUT_ROOT }} + du -sh $BUILD_OUT_ROOT # Save the PR number into the build - echo ${{ github.event.number }} > ${{ env.BUILD_OUT_ROOT }}/NR + echo ${{ github.event.number }} > ${BUILD_OUT_ROOT}/NR # Download the raw diff blob and store that inside the build # directory. # The purpose of this is for the PR Review Companion to later # be able to use this raw diff file for the benefit of analyzing. - wget https://github.com/${{ github.repository }}/compare/${{ env.BASE_SHA }}...${{ env.HEAD_SHA }}.diff -O ${{ env.BUILD_OUT_ROOT }}/DIFF + wget https://github.com/${{ github.repository }}/compare/${BASE_SHA}...${HEAD_SHA}.diff -O ${BUILD_OUT_ROOT}/DIFF - name: Merge static assets with built documents if: ${{ env.GIT_DIFF_CONTENT }} run: | # Exclude the .map files, as they're used for debugging JS and CSS. - rsync -a --exclude "*.map" node_modules/@mdn/yari/client/build/ ${{ env.BUILD_OUT_ROOT }} + rsync -a --exclude "*.map" node_modules/@mdn/yari/client/build/ $BUILD_OUT_ROOT # Show the final disk usage size of the build. - du -sh ${{ env.BUILD_OUT_ROOT }} + du -sh $BUILD_OUT_ROOT - uses: actions/upload-artifact@v4 if: ${{ env.GIT_DIFF_CONTENT }} @@ -128,7 +128,7 @@ jobs: - name: Check changed files if: ${{ env.GIT_DIFF_FILES }} run: | - echo ${{ env.GIT_DIFF_FILES }} + echo $GIT_DIFF_FILES export CONTENT_ROOT=$(pwd)/files - yarn filecheck ${{ env.GIT_DIFF_FILES }} + yarn filecheck $GIT_DIFF_FILES diff --git a/.github/workflows/spelling-check-bot.yml b/.github/workflows/spelling-check-bot.yml new file mode 100644 index 000000000000000..6869ba085cfeee5 --- /dev/null +++ b/.github/workflows/spelling-check-bot.yml @@ -0,0 +1,54 @@ +name: Create an issue to report typos + +on: + schedule: + - cron: "0 0 * * mon" + workflow_dispatch: + +jobs: + sync: + if: github.repository == 'mdn/content' + runs-on: ubuntu-latest + permissions: + issues: write + + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js environment + uses: actions/setup-node@v4 + with: + node-version-file: ".nvmrc" + cache: yarn + + - name: Run scripts + run: | + echo Running spelling check... + output=$(npx cspell --no-progress --gitignore --config .vscode/cspell.json "**/*.md" || exit 0) + if [ -n "${output}" ]; then + output=$(node scripts/linkify-logs.js "${output}") + output=$(echo "$output" | sed 's/^/- /') + echo "$output" + echo "OUTPUT<> $GITHUB_ENV + echo "$output" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV + else + echo "No typos found! 🎉" + fi + + - name: Report spellcheck errors + if: env.OUTPUT != '' + run: | + issue=$(gh issue create --title "$TITLE" --label "$LABELS" --body "$BODY") + echo Issue URL ${issue} + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TITLE: Weekly spelling check + LABELS: reported by automation + BODY: | + Typos and unknown words: + + ${{ env.OUTPUT }} + + > [!TIP] + > If the word is actually valid or it is required to be ignored, consider adding it to one of the dictionaries under [`.vscode/dictionaries`](https://github.com/mdn/content/tree/main/.vscode/dictionaries). diff --git a/.husky/post-merge b/.husky/post-merge index ad38b3d1a2d601b..847276be20007da 100644 --- a/.husky/post-merge +++ b/.husky/post-merge @@ -7,7 +7,8 @@ if [ -f ".husky/_/history" ]; then lastHash=$(cat ./.husky/_/history) isUpdated=$(git diff $lastHash HEAD -- ./package.json) if [ "$isUpdated" != "" ]; then - echo "\n⚠🔥 'package.json' has changed. Please run 'yarn install'! 🔥" + echo + echo "⚠🔥 'package.json' has changed. Please run 'yarn install'! 🔥" fi else yarn install diff --git a/.lintstagedrc.js b/.lintstagedrc.js index 4204b0b0beb4f16..838a8de976078ac 100644 --- a/.lintstagedrc.js +++ b/.lintstagedrc.js @@ -17,4 +17,7 @@ export default { `yarn filecheck ${filenames.join(" ")}`, ], "*": (filenames) => [`node scripts/log-url-issues.js`], + ".vscode/dictionaries/*.txt": (filenames) => [ + `node scripts/sort_and_unique_file_lines.js ${filenames.join(" ")}`, + ], }; diff --git a/.markdownlint.jsonc b/.markdownlint.jsonc index 2ccae5139144109..9d25f924cbc63f8 100644 --- a/.markdownlint.jsonc +++ b/.markdownlint.jsonc @@ -4,8 +4,7 @@ { "default": true, - // Disabled, as some callouts include headings. - "heading-increment": false, + "heading-increment": true, "ul-style": { "style": "dash", }, @@ -212,6 +211,26 @@ "searchPattern": "/(\\[[^\\]]*?\\]\\(([^\\)\\n]|\\([^\\)\\n]\\)|\\s[\"'])+?)(\\n|\\s|[,:][\\s\\n])/gm", "searchScope": "text", }, + { + "name": "text-code-fence", + "message": "Use 'plain' tag", + "searchPattern": "/(^ *`{3,})(text|none|unix)/gm", + "replace": "$1plain", + "searchScope": "text", + }, + { + "name": "gfm-alert", + "message": "Use the GFM syntax: https://developer.mozilla.org/en-US/docs/MDN/Writing_guidelines/Howto/Markdown_in_MDN#notes_warnings_and_callouts", + "searchPattern": "/^ *> \\*\\*(Note|Warning|Callout):\\*\\*(?! [[{`_*])/gm", + "searchScope": "text", + }, + { + "name": "bad-gfm-alert", + "message": "Use the correct GFM syntax: `> [!NOTE]`", + // TODO this should use the modifier syntax; until it has better Node support + "searchPattern": "/^ *> !?\\[!?((?!NOTE)[Nn][Oo][Tt][Ee]|(?!WARNING)[Ww][Aa][Rr][Nn][Ii][Nn][Gg]|(?!CALLOUT)[Cc][Aa][Ll][Ll][Oo][Uu][Tt])\\]\\n|^ *> (?!\\[!)!?\\[!?(NOTE|WARNING|CALLOUT)\\]\\n/gm", + "searchScope": "text", + }, ], }, } diff --git a/.nvmrc b/.nvmrc index 3f430af82b3dfa7..9a2a0e219c9b280 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v18 +v20 diff --git a/.vscode/cspell.json b/.vscode/cspell.json index 0e7391244b949f4..16154a9e2b0f183 100644 --- a/.vscode/cspell.json +++ b/.vscode/cspell.json @@ -3,7 +3,14 @@ "version": "0.2", "language": "en-US", "languageId": "*", + "useGitignore": true, "dictionaries": [ + "terms-abbreviations", + "cultural-words", + "proper-names", + "non-english", + "code-entities", + "ignore-list", "bash", "css", "cpp", @@ -17,7 +24,6 @@ "markdown", "node", "npm", - "project-words", "python", "softwareTerms", "svelte", @@ -30,17 +36,31 @@ ], "ignoreRegExpList": [ // macros - "{{\\s?\\w*\\(", - "{{EmbedInteractiveExample\\(.*\\)}}", - "{{EmbedLiveSample\\(.*\\)}}", - "{{EmbedYouTube\\(\"[\\w-]*\"\\)}}", - // TODO - add some details what these match - "\\(#\\w*\\)", + "{{\\s?\\w*", + "{{\\s*EmbedInteractiveExample\\(.*\\)\\s*}}", + "{{\\s*EmbedLiveSample\\(.*\\)\\s*}}", + "{{\\s*EmbedYouTube\\(.*\\)\\s*}}", + "{{\\s*EmbedGHLiveSample\\(.*\\)\\s*}}", + // Markdown links "\\]\\(\\S*\\)", - "\\]\\(\\S*\\)", - "\\*\\*\\w\\*\\*\\w*", - "\\*\\w\\*\\w*", - "#[\\w-]*", + // Website references + "[\\w\\-.]+\\.(com|net|org|ac\\.uk)\\b", + // Things like "**J**ava**S**cript" + "\\*\\*\\w+\\*\\*\\w*", + "\\*\\w+\\*\\w*", + "#[À-ž\\w-]*", + // Old Firefox interfaces + "nsIDOM\\w+", + // Don't check other scripts + "[\\u0370-\\u03FF]+", // Greek + "[\\u0400-\\u04FF]+", // Cyrillic + "[\\u0590-\\u05FF]+", // Hebrew + "[\\u0600-\\u06FF]+", // Arabic + "(\\uD835[\\uDC00-\\uDFFF])+", // Mathematical Alphanumeric Symbols + "(\\uD83A[\\uDD00-\\uDD5F])+", // Adlam script + // Percent-encoding + "[A-Za-z]*%[A-F0-9]{2}[A-Za-z]*", + // Various HTML attributes that often have non-word values "aria-activedescendant=\"(?:[^\\\"]+|\\.)*\"", "aria-controls=\"(?:[^\\\"]+|\\.)*\"", "aria-describedby=\"(?:[^\\\"]+|\\.)*\"", @@ -49,24 +69,83 @@ "aria-flowto=\"(?:[^\\\"]+|\\.)*\"", "aria-labelledby=\"(?:[^\\\"]+|\\.)*\"", "aria-owns=\"(?:[^\\\"]+|\\.)*\"", - "Base64", "class=\"(?:[^\\\"]+|\\.)*\"", "data-test-id=\"(?:[^\\\"]+|\\.)*\"", "for=\"(?:[^\\\"]+|\\.)*\"", - "HexValues", + "pattern=\"(?:[^\\\"]+|\\.)*\"", "href=\"(?:[^\\\"]+|\\.)*\"", - "id=\"(?:[^\\\"]+|\\.)*\"", + "(?.* - ``` +3. Check for detected flaws at the top of the previewed page. Some flaws may be automatically fixable. 4. Commit your changes to the branch (our example is using the `fix-typo` branch) and push the changes to your fork's remote: @@ -221,7 +216,7 @@ This will make it easier to submit a pull request for your changes. #### Linting edited files -To ensure that all MDN documents follow the same formatting, we use both [Prettier](https://www.prettier.io) and [Markdownlint](https://github.com/DavidAnson/markdownlint) to format and lint Markdown files. This helps us enforce uniform styling across all documents with minimal reviewer intervention. +To ensure that all MDN documents follow the same formatting, we use both [Prettier](https://www.prettier.io) and [MarkdownLint](https://github.com/DavidAnson/markdownlint) to format and lint Markdown files. This helps us enforce uniform styling across all documents with minimal reviewer intervention. If you have a [local checkout](#forking-and-cloning-the-repository) of the repository and have [installed the dependencies](#preparing-the-project), or you are using [github.dev](https://github.dev), a pre-commit hook will be installed which automatically runs while making a commit. To save some headache and improve your work flow while authoring, you may wish to [configure your editor to automatically run Prettier](https://prettier.io/docs/en/editors.html). Alternatively, you may run `yarn fix:md` in the command line to manually format all Markdown files. @@ -254,7 +249,8 @@ yarn content move [locale] > See the [Redirecting a document](#redirecting-a-document) section for more information. To use `yarn content move`, provide the slug of the document you'd like to move (e.g., `Learn/Accessibility`), and the slug of its new location (e.g., `Learn/A11y`). -The locale of the existing document can be provided as an optional third argument (this defaults to `en-US`). +The locale of the existing document can be provided as an optional third argument (this defaults to `en-US`). For other locales, +`CONTENT_TRANSLATED_ROOT` has to be set correctly in your environment. If the document you'd like to move contains child documents (i.e. it represents a document tree), the `yarn content move` command will move the entire tree. Let's say you want to move the entire `/en-US/Learn/Accessibility` tree to `/en-US/Learn/A11y`, you can do so as follows: diff --git a/README.md b/README.md index 30b75d536f74c64..3c8363d4753ff48 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ In addition to English-language articles, over 35 volunteers lead translation an ## Build the site -To set up the site locally, you need to have [Node.js](https://nodejs.org/) and [Yarn](https://yarnpkg.com/) installed. +To set up the site locally, you need to have [Node.js](https://nodejs.org/) and [Yarn](https://classic.yarnpkg.com/) installed. You can check if these are installed by running the following commands: ```bash diff --git a/files/en-us/_redirects.txt b/files/en-us/_redirects.txt index a6d009ddd16ab02..425e28f4a45dd41 100644 --- a/files/en-us/_redirects.txt +++ b/files/en-us/_redirects.txt @@ -8,13 +8,13 @@ /en-US/docs/-moz-locale-dir(rtl) /en-US/docs/Web/CSS/:-moz-locale-dir_rtl /en-US/docs/::file-selector-button /en-US/docs/Web/CSS/::file-selector-button /en-US/docs/ /en-US/docs/Web/HTML/Element/img -/en-US/docs/AJAX /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data -/en-US/docs/AJAX/Community /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data -/en-US/docs/AJAX/Getting_Started /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data +/en-US/docs/AJAX /en-US/docs/Learn_web_development/Core/Scripting/Network_requests +/en-US/docs/AJAX/Community /en-US/docs/Learn_web_development/Core/Scripting/Network_requests +/en-US/docs/AJAX/Getting_Started /en-US/docs/Learn_web_development/Core/Scripting/Network_requests /en-US/docs/AJAX/WAI_ARIA_Live_Regions /en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions /en-US/docs/AJAX/WAI_ARIA_Live_Regions_API_Support /en-US/docs/Mozilla/Firefox/Releases/3/WAI_ARIA_Live_Regions_API_Support -/en-US/docs/AJAX:Community /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data -/en-US/docs/AJAX:Getting_Started /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data +/en-US/docs/AJAX:Community /en-US/docs/Learn_web_development/Core/Scripting/Network_requests +/en-US/docs/AJAX:Getting_Started /en-US/docs/Learn_web_development/Core/Scripting/Network_requests /en-US/docs/AJAX:WAI_ARIA_Live_Regions/API_Support /en-US/docs/Mozilla/Firefox/Releases/3/WAI_ARIA_Live_Regions_API_Support /en-US/docs/AJAX:WAI_ARIA_Live_Regions_API_Support /en-US/docs/Mozilla/Firefox/Releases/3/WAI_ARIA_Live_Regions_API_Support /en-US/docs/API /en-US/docs/Web/API @@ -135,7 +135,7 @@ /en-US/docs/Addons /en-US/docs/Mozilla/Add-ons /en-US/docs/Addons/Add-on_guidelines https://extensionworkshop.com/documentation/publish/add-on-policies/ /en-US/docs/Addons/Working_with_AMO /en-US/docs/Mozilla/Add-ons -/en-US/docs/Advanced_styling_for_HTML_forms /en-US/docs/Learn/Forms/Advanced_form_styling +/en-US/docs/Advanced_styling_for_HTML_forms /en-US/docs/Learn_web_development/Extensions/Forms/Advanced_form_styling /en-US/docs/Alternative_style_sheets /en-US/docs/Web/CSS/Alternative_style_sheets /en-US/docs/An_Overview_of_Accessible_Web_Applications_and_Widgets /en-US/docs/Web/Accessibility/An_overview_of_accessible_web_applications_and_widgets /en-US/docs/An_overview_of_NSS_Internals https://firefox-source-docs.mozilla.org/security/nss/index.html @@ -165,13 +165,6 @@ /en-US/docs/Bugzilla_(external) https://bugzilla.mozilla.org/enter_bug.cgi?format=guided /en-US/docs/Building_an_Extension /en-US/docs/Mozilla/Add-ons /en-US/docs/CER_temp /en-US/docs/Web/API/Document/ -/en-US/docs/CN_MDN /zh-CN/docs/Web -/en-US/docs/CN_MDN/JavaScript /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/create -/en-US/docs/CN_MDN/JavaScript/About_JavaScript /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/seal -/en-US/docs/CN_MDN/JavaScript/JavaScript_参考 /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed -/en-US/docs/CN_MDN/JavaScript/Reference /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensions -/en-US/docs/CN_MDN/JavaScript/Reference/About_this_Reference /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze -/en-US/docs/CN_MDN/JavaScript/Reference/Global_Objects /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen /en-US/docs/CORS_Enabled_Image /en-US/docs/Web/HTML/CORS_enabled_image /en-US/docs/CSS /en-US/docs/Web/CSS /en-US/docs/CSS-2_Quick_Reference /en-US/docs/Web/CSS @@ -180,7 +173,7 @@ /en-US/docs/CSS-2_Quick_Reference/Color_and_Background /en-US/docs/Web/CSS/Reference /en-US/docs/CSS-2_Quick_Reference/Font /en-US/docs/Web/CSS/Reference /en-US/docs/CSS-2_Quick_Reference/Lists /en-US/docs/Web/CSS/Reference -/en-US/docs/CSS-2_Quick_Reference/Selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors +/en-US/docs/CSS-2_Quick_Reference/Selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors /en-US/docs/CSS-2_Quick_Reference/Tables /en-US/docs/Web/CSS/Reference /en-US/docs/CSS-2_Quick_Reference/Text /en-US/docs/Web/CSS/Reference /en-US/docs/CSS-2_Quick_Reference/Units /en-US/docs/Web/CSS/length @@ -193,7 +186,7 @@ /en-US/docs/CSS-2_Quick_Reference:Color_and_Background /en-US/docs/Web/CSS/Reference /en-US/docs/CSS-2_Quick_Reference:Font /en-US/docs/Web/CSS/Reference /en-US/docs/CSS-2_Quick_Reference:Lists /en-US/docs/Web/CSS/Reference -/en-US/docs/CSS-2_Quick_Reference:Selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors +/en-US/docs/CSS-2_Quick_Reference:Selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors /en-US/docs/CSS-2_Quick_Reference:Tables /en-US/docs/Web/CSS/Reference /en-US/docs/CSS-2_Quick_Reference:Text /en-US/docs/Web/CSS/Reference /en-US/docs/CSS-2_Quick_Reference:Units /en-US/docs/Web/CSS/length @@ -482,7 +475,7 @@ /en-US/docs/CSS/Child_selectors /en-US/docs/Web/CSS/Child_combinator /en-US/docs/CSS/Class_selectors /en-US/docs/Web/CSS/Class_selectors /en-US/docs/CSS/Comments /en-US/docs/Web/CSS/Comments -/en-US/docs/CSS/Common_CSS_Questions /en-US/docs/Learn/CSS/Howto/CSS_FAQ +/en-US/docs/CSS/Common_CSS_Questions /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/CSS_FAQ /en-US/docs/CSS/Counters /en-US/docs/Web/CSS/CSS_counter_styles/Using_CSS_counters /en-US/docs/CSS/Currentcolor /en-US/docs/Web/CSS/color_value#currentcolor_keyword /en-US/docs/CSS/Descendant_selectors /en-US/docs/Web/CSS/Descendant_combinator @@ -495,24 +488,24 @@ /en-US/docs/CSS/Flexible_boxes /en-US/docs/Web/CSS/CSS_flexible_box_layout/Basic_concepts_of_flexbox /en-US/docs/CSS/Flexible_boxes-redirect-1 /en-US/docs/Web/CSS/CSS_flexible_box_layout/Basic_concepts_of_flexbox /en-US/docs/CSS/General_sibling_selectors /en-US/docs/Web/CSS/Subsequent-sibling_combinator -/en-US/docs/CSS/Getting_Started /en-US/docs/Learn/CSS/First_steps -/en-US/docs/CSS/Getting_Started/Boxes /en-US/docs/Learn/CSS/Building_blocks -/en-US/docs/CSS/Getting_Started/Cascading_and_inheritance /en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance +/en-US/docs/CSS/Getting_Started /en-US/docs/Learn_web_development/Core/Styling_basics +/en-US/docs/CSS/Getting_Started/Boxes /en-US/docs/Learn_web_development/Core/Styling_basics +/en-US/docs/CSS/Getting_Started/Cascading_and_inheritance /en-US/docs/Learn_web_development/Core/Styling_basics/Handling_conflicts /en-US/docs/CSS/Getting_Started/Challenge_solutions /en-US/docs/Web/Guide/CSS/Getting_started/Challenge_solutions -/en-US/docs/CSS/Getting_Started/Content /en-US/docs/Learn/CSS/Howto/Generated_content -/en-US/docs/CSS/Getting_Started/How_CSS_works /en-US/docs/Learn/CSS/First_steps/How_CSS_works -/en-US/docs/CSS/Getting_Started/JavaScript /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents -/en-US/docs/CSS/Getting_Started/Layout /en-US/docs/Learn/CSS/CSS_layout -/en-US/docs/CSS/Getting_Started/Lists /en-US/docs/Learn/CSS/Styling_text/Styling_lists +/en-US/docs/CSS/Getting_Started/Content /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Generated_content +/en-US/docs/CSS/Getting_Started/How_CSS_works /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/CSS/Getting_Started/JavaScript /en-US/docs/Learn_web_development/Core/Scripting/DOM_scripting +/en-US/docs/CSS/Getting_Started/Layout /en-US/docs/Learn_web_development/Core/CSS_layout +/en-US/docs/CSS/Getting_Started/Lists /en-US/docs/Learn_web_development/Core/Text_styling/Styling_lists /en-US/docs/CSS/Getting_Started/SVG_and_CSS /en-US/docs/Web/SVG/Tutorial/SVG_and_CSS /en-US/docs/CSS/Getting_Started/SVG_graphics /en-US/docs/Web/SVG/Tutorial/SVG_and_CSS -/en-US/docs/CSS/Getting_Started/Selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors -/en-US/docs/CSS/Getting_Started/Tables /en-US/docs/Learn/CSS/Building_blocks/Styling_tables -/en-US/docs/CSS/Getting_Started/Text_styles /en-US/docs/Learn/CSS/Styling_text/Fundamentals -/en-US/docs/CSS/Getting_Started/What_is_CSS /en-US/docs/Learn/CSS/First_steps/How_CSS_works -/en-US/docs/CSS/Getting_Started/Why_use_CSS /en-US/docs/Learn/CSS/First_steps/How_CSS_works -/en-US/docs/CSS/Getting_Started/Why_use_CSS-redirect-1 /en-US/docs/Learn/CSS/First_steps/How_CSS_works -/en-US/docs/CSS/Getting_Started/Why_use_CSS? /en-US/docs/Learn/CSS/First_steps/How_CSS_works +/en-US/docs/CSS/Getting_Started/Selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors +/en-US/docs/CSS/Getting_Started/Tables /en-US/docs/Learn_web_development/Core/Styling_basics/Tables +/en-US/docs/CSS/Getting_Started/Text_styles /en-US/docs/Learn_web_development/Core/Text_styling/Fundamentals +/en-US/docs/CSS/Getting_Started/What_is_CSS /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/CSS/Getting_Started/Why_use_CSS /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/CSS/Getting_Started/Why_use_CSS-redirect-1 /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/CSS/Getting_Started/Why_use_CSS? /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS /en-US/docs/CSS/ID_selectors /en-US/docs/Web/CSS/ID_selectors /en-US/docs/CSS/Interactive /en-US/docs/Web/CSS/@media /en-US/docs/CSS/Layout_mode /en-US/docs/Web/CSS/Layout_mode @@ -687,9 +680,6 @@ /en-US/docs/CSS/dominant-baseline /en-US/docs/Web/SVG/Attribute/dominant-baseline /en-US/docs/CSS/element /en-US/docs/Web/CSS/element /en-US/docs/CSS/empty-cells /en-US/docs/Web/CSS/empty-cells -/en-US/docs/CSS/fill /en-US/docs/Web/SVG/Attribute/fill -/en-US/docs/CSS/fill-opacity /en-US/docs/Web/SVG/Attribute/fill-opacity -/en-US/docs/CSS/fill-rule /en-US/docs/Web/SVG/Attribute/fill-rule /en-US/docs/CSS/filter /en-US/docs/Web/CSS/filter /en-US/docs/CSS/flex /en-US/docs/Web/CSS/flex /en-US/docs/CSS/flex-align /en-US/docs/Web/CSS/align-items @@ -704,8 +694,6 @@ /en-US/docs/CSS/flex-shrink /en-US/docs/Web/CSS/flex-shrink /en-US/docs/CSS/flex-wrap /en-US/docs/Web/CSS/flex-wrap /en-US/docs/CSS/float /en-US/docs/Web/CSS/float -/en-US/docs/CSS/flood-color /en-US/docs/Web/SVG/Attribute/flood-color -/en-US/docs/CSS/flood-opacity /en-US/docs/Web/SVG/Attribute/flood-opacity /en-US/docs/CSS/font /en-US/docs/Web/CSS/font /en-US/docs/CSS/font-family /en-US/docs/Web/CSS/font-family /en-US/docs/CSS/font-feature-settings /en-US/docs/Web/CSS/font-feature-settings @@ -736,7 +724,6 @@ /en-US/docs/CSS/left /en-US/docs/Web/CSS/left /en-US/docs/CSS/length /en-US/docs/Web/CSS/length /en-US/docs/CSS/letter-spacing /en-US/docs/Web/CSS/letter-spacing -/en-US/docs/CSS/lighting-color /en-US/docs/Web/SVG/Attribute/lighting-color /en-US/docs/CSS/line-height /en-US/docs/Web/CSS/line-height /en-US/docs/CSS/linear-gradient /en-US/docs/Web/CSS/gradient/linear-gradient /en-US/docs/CSS/list-style /en-US/docs/Web/CSS/list-style @@ -847,7 +834,7 @@ /en-US/docs/CSS/transition-property /en-US/docs/Web/CSS/transition-property /en-US/docs/CSS/transition-timing-function /en-US/docs/Web/CSS/transition-timing-function /en-US/docs/CSS/unicode-bidi /en-US/docs/Web/CSS/unicode-bidi -/en-US/docs/CSS/uri /en-US/docs/Web/CSS/url +/en-US/docs/CSS/uri /en-US/docs/Web/CSS/url_value /en-US/docs/CSS/used_value /en-US/docs/Web/CSS/used_value /en-US/docs/CSS/user-ident /en-US/docs/Web/CSS/custom-ident /en-US/docs/CSS/user-select /en-US/docs/Web/CSS/user-select @@ -954,21 +941,21 @@ /en-US/docs/CSS:Child_selectors /en-US/docs/Web/CSS/Child_combinator /en-US/docs/CSS:Descendant_selectors /en-US/docs/Web/CSS/Descendant_combinator /en-US/docs/CSS:FAQ /en-US/docs/Web/CSS -/en-US/docs/CSS:Getting_Started /en-US/docs/Learn/CSS/First_steps -/en-US/docs/CSS:Getting_Started:Boxes /en-US/docs/Learn/CSS/Building_blocks -/en-US/docs/CSS:Getting_Started:Cascading_and_inheritance /en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance -/en-US/docs/CSS:Getting_Started:Content /en-US/docs/Learn/CSS/Howto/Generated_content -/en-US/docs/CSS:Getting_Started:How_CSS_works /en-US/docs/Learn/CSS/First_steps/How_CSS_works -/en-US/docs/CSS:Getting_Started:JavaScript /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents -/en-US/docs/CSS:Getting_Started:Layout /en-US/docs/Learn/CSS/CSS_layout -/en-US/docs/CSS:Getting_Started:Lists /en-US/docs/Learn/CSS/Styling_text/Styling_lists +/en-US/docs/CSS:Getting_Started /en-US/docs/Learn_web_development/Core/Styling_basics +/en-US/docs/CSS:Getting_Started:Boxes /en-US/docs/Learn_web_development/Core/Styling_basics +/en-US/docs/CSS:Getting_Started:Cascading_and_inheritance /en-US/docs/Learn_web_development/Core/Styling_basics/Handling_conflicts +/en-US/docs/CSS:Getting_Started:Content /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Generated_content +/en-US/docs/CSS:Getting_Started:How_CSS_works /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/CSS:Getting_Started:JavaScript /en-US/docs/Learn_web_development/Core/Scripting/DOM_scripting +/en-US/docs/CSS:Getting_Started:Layout /en-US/docs/Learn_web_development/Core/CSS_layout +/en-US/docs/CSS:Getting_Started:Lists /en-US/docs/Learn_web_development/Core/Text_styling/Styling_lists /en-US/docs/CSS:Getting_Started:SVG_graphics /en-US/docs/Web/SVG/Tutorial/SVG_and_CSS -/en-US/docs/CSS:Getting_Started:Selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors -/en-US/docs/CSS:Getting_Started:Tables /en-US/docs/Learn/CSS/Building_blocks/Styling_tables -/en-US/docs/CSS:Getting_Started:Text_styles /en-US/docs/Learn/CSS/Styling_text/Fundamentals -/en-US/docs/CSS:Getting_Started:What_is_CSS /en-US/docs/Learn/CSS/First_steps/How_CSS_works -/en-US/docs/CSS:Getting_Started:Why_use_CSS /en-US/docs/Learn/CSS/First_steps/How_CSS_works -/en-US/docs/CSS:Getting_Started:Why_use_CSS? /en-US/docs/Learn/CSS/First_steps/How_CSS_works +/en-US/docs/CSS:Getting_Started:Selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors +/en-US/docs/CSS:Getting_Started:Tables /en-US/docs/Learn_web_development/Core/Styling_basics/Tables +/en-US/docs/CSS:Getting_Started:Text_styles /en-US/docs/Learn_web_development/Core/Text_styling/Fundamentals +/en-US/docs/CSS:Getting_Started:What_is_CSS /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/CSS:Getting_Started:Why_use_CSS /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/CSS:Getting_Started:Why_use_CSS? /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS /en-US/docs/CSS:Interactive /en-US/docs/Web/CSS/@media /en-US/docs/CSS:Media:Visual /en-US/docs/Web/CSS/@media /en-US/docs/CSS:Other_Resources /en-US/docs/Web/CSS @@ -1088,7 +1075,7 @@ /en-US/docs/CSS:text-shadow /en-US/docs/Web/CSS/text-shadow /en-US/docs/CSS:text-transform /en-US/docs/Web/CSS/text-transform /en-US/docs/CSS:top /en-US/docs/Web/CSS/top -/en-US/docs/CSS:uri /en-US/docs/Web/CSS/url +/en-US/docs/CSS:uri /en-US/docs/Web/CSS/url_value /en-US/docs/CSS:vertical-align /en-US/docs/Web/CSS/vertical-align /en-US/docs/CSS:visibility /en-US/docs/Web/CSS/visibility /en-US/docs/CSS:visible /en-US/docs/Web/CSS/visibility @@ -1120,10 +1107,10 @@ /en-US/docs/Changing_the_Priority_of_HTTP_Requests /en-US/docs/Mozilla/Firefox/Releases/1.5/Changing_the_priority_of_HTTP_requests /en-US/docs/Chrome /en-US/docs/Glossary/Chrome /en-US/docs/Class_Elements /en-US/docs/Web/JavaScript/Reference/Classes/Public_class_fields -/en-US/docs/Common_CSS_Questions /en-US/docs/Learn/CSS/Howto/CSS_FAQ +/en-US/docs/Common_CSS_Questions /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/CSS_FAQ /en-US/docs/Common_XSLT_Errors /en-US/docs/Web/XSLT/Common_errors /en-US/docs/Configuring_Build_Options https://firefox-source-docs.mozilla.org/setup/configuring_build_options.html -/en-US/docs/Configuring_servers_for_Ogg_media /en-US/docs/Web/HTTP/Configuring_servers_for_Ogg_media +/en-US/docs/Configuring_servers_for_Ogg_media /en-US/docs/Web/Media/Formats/Configuring_servers_for_Ogg_media /en-US/docs/Consistent_List_Indentation /en-US/docs/Web/CSS/CSS_lists/Consistent_list_indentation /en-US/docs/Const_statement /en-US/docs/Web/JavaScript/Reference/Statements/const /en-US/docs/Content_negotiation /en-US/docs/Web/HTTP/Content_negotiation @@ -1216,7 +1203,7 @@ /en-US/docs/DOM/DOM_Reference/event /en-US/docs/Web/API/Event /en-US/docs/DOM/DOM_Reference/style /en-US/docs/Web/API/HTMLStyleElement /en-US/docs/DOM/DOM_Reference/window /en-US/docs/Web/API/Window -/en-US/docs/DOM/DOM_Reference/window/clearInterval /en-US/docs/Web/API/clearInterval +/en-US/docs/DOM/DOM_Reference/window/clearInterval /en-US/docs/Web/API/Window/clearInterval /en-US/docs/DOM/DOM_event_handlers /en-US/docs/Web/Events/Event_handlers /en-US/docs/DOM/DOM_event_reference /en-US/docs/Web/Events /en-US/docs/DOM/DOM_event_reference/DOMContentLoaded /en-US/docs/Web/API/Document/DOMContentLoaded_event @@ -1739,12 +1726,12 @@ /en-US/docs/DOM/console.dir /en-US/docs/Web/API/console/dir_static /en-US/docs/DOM/console.error /en-US/docs/Web/API/console/error_static /en-US/docs/DOM/console.group /en-US/docs/Web/API/console/group_static -/en-US/docs/DOM/console.groupCollapsed /en-US/docs/Web/API/console/groupcollapsed_static -/en-US/docs/DOM/console.groupEnd /en-US/docs/Web/API/console/groupend_static +/en-US/docs/DOM/console.groupCollapsed /en-US/docs/Web/API/console/groupCollapsed_static +/en-US/docs/DOM/console.groupEnd /en-US/docs/Web/API/console/groupEnd_static /en-US/docs/DOM/console.info /en-US/docs/Web/API/console/info_static /en-US/docs/DOM/console.log /en-US/docs/Web/API/console/log_static /en-US/docs/DOM/console.time /en-US/docs/Web/API/console/time_static -/en-US/docs/DOM/console.timeEnd /en-US/docs/Web/API/console/timeend_static +/en-US/docs/DOM/console.timeEnd /en-US/docs/Web/API/console/timeEnd_static /en-US/docs/DOM/console.trace /en-US/docs/Web/API/console/trace_static /en-US/docs/DOM/console.warn /en-US/docs/Web/API/console/warn_static /en-US/docs/DOM/createEvent /en-US/docs/Web/API/Document/createEvent @@ -1984,7 +1971,7 @@ /en-US/docs/DOM/event.view /en-US/docs/Web/API/UIEvent/view /en-US/docs/DOM/event.which /en-US/docs/Web/API/UIEvent/which /en-US/docs/DOM/event/AnimationEvent /en-US/docs/Web/API/AnimationEvent -/en-US/docs/DOM/event/Comparison_of_Event_Targets /en-US/docs/Learn/JavaScript/Building_blocks/Event_bubbling +/en-US/docs/DOM/event/Comparison_of_Event_Targets /en-US/docs/Learn_web_development/Core/Scripting/Event_bubbling /en-US/docs/DOM/form.acceptCharset /en-US/docs/Web/API/HTMLFormElement/acceptCharset /en-US/docs/DOM/form.action /en-US/docs/Web/API/HTMLFormElement/action /en-US/docs/DOM/form.elements /en-US/docs/Web/API/HTMLFormElement/elements @@ -2085,8 +2072,8 @@ /en-US/docs/DOM/window.cancelAnimationFrame /en-US/docs/Web/API/Window/cancelAnimationFrame /en-US/docs/DOM/window.captureEvents /en-US/docs/Web/API/Window/captureEvents /en-US/docs/DOM/window.clearImmediate /en-US/docs/Web/API/Window/clearImmediate -/en-US/docs/DOM/window.clearInterval /en-US/docs/Web/API/clearInterval -/en-US/docs/DOM/window.clearTimeout /en-US/docs/Web/API/clearTimeout +/en-US/docs/DOM/window.clearInterval /en-US/docs/Web/API/Window/clearInterval +/en-US/docs/DOM/window.clearTimeout /en-US/docs/Web/API/Window/clearTimeout /en-US/docs/DOM/window.close /en-US/docs/Web/API/Window/close /en-US/docs/DOM/window.closed /en-US/docs/Web/API/Window/closed /en-US/docs/DOM/window.confirm /en-US/docs/Web/API/Window/confirm @@ -2232,10 +2219,10 @@ /en-US/docs/DOM/window.scrollbars /en-US/docs/Web/API/Window/scrollbars /en-US/docs/DOM/window.self /en-US/docs/Web/API/Window/self /en-US/docs/DOM/window.setImmediate /en-US/docs/Web/API/Window/setImmediate -/en-US/docs/DOM/window.setInterval /en-US/docs/Web/API/setInterval -/en-US/docs/DOM/window.setTimeout /en-US/docs/Web/API/setTimeout +/en-US/docs/DOM/window.setInterval /en-US/docs/Web/API/Window/setInterval +/en-US/docs/DOM/window.setTimeout /en-US/docs/Web/API/Window/setTimeout /en-US/docs/DOM/window.showModalDialog /en-US/docs/Web/API/Window/showModalDialog -/en-US/docs/DOM/window.sidebar /en-US/docs/Web/API/Window/sidebar +/en-US/docs/DOM/window.sidebar /en-US/docs/Web/API/Window/external /en-US/docs/DOM/window.sizeToContent /en-US/docs/Web/API/Window/sizeToContent /en-US/docs/DOM/window.status /en-US/docs/Web/API/Window/status /en-US/docs/DOM/window.statusbar /en-US/docs/Web/API/Window/statusbar @@ -2243,7 +2230,7 @@ /en-US/docs/DOM/window.toolbar /en-US/docs/Web/API/Window/toolbar /en-US/docs/DOM/window.top /en-US/docs/Web/API/Window/top /en-US/docs/DOM/window.unescape /en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape -/en-US/docs/DOM/window.updateCommands /en-US/docs/Web/API/Window/updateCommands +/en-US/docs/DOM/window.updateCommands /en-US/docs/Web/API/Window /en-US/docs/DOM/window.window /en-US/docs/Web/API/Window/window /en-US/docs/DOM:CDATASection /en-US/docs/Web/API/CDATASection /en-US/docs/DOM:CSS /en-US/docs/Web/CSS/Reference @@ -2466,7 +2453,7 @@ /en-US/docs/DOM:event.type /en-US/docs/Web/API/Event/type /en-US/docs/DOM:event.view /en-US/docs/Web/API/UIEvent/view /en-US/docs/DOM:event.which /en-US/docs/Web/API/UIEvent/which -/en-US/docs/DOM:event:Comparison_of_Event_Targets /en-US/docs/Learn/JavaScript/Building_blocks/Event_bubbling +/en-US/docs/DOM:event:Comparison_of_Event_Targets /en-US/docs/Learn_web_development/Core/Scripting/Event_bubbling /en-US/docs/DOM:form.acceptCharset /en-US/docs/Web/API/HTMLFormElement/acceptCharset /en-US/docs/DOM:form.action /en-US/docs/Web/API/HTMLFormElement/action /en-US/docs/DOM:form.elements /en-US/docs/Web/API/HTMLFormElement/elements @@ -2545,8 +2532,8 @@ /en-US/docs/DOM:window.blur /en-US/docs/Web/API/Window/blur /en-US/docs/DOM:window.btoa /en-US/docs/Web/API/Window/btoa /en-US/docs/DOM:window.captureEvents /en-US/docs/Web/API/Window/captureEvents -/en-US/docs/DOM:window.clearInterval /en-US/docs/Web/API/clearInterval -/en-US/docs/DOM:window.clearTimeout /en-US/docs/Web/API/clearTimeout +/en-US/docs/DOM:window.clearInterval /en-US/docs/Web/API/Window/clearInterval +/en-US/docs/DOM:window.clearTimeout /en-US/docs/Web/API/Window/clearTimeout /en-US/docs/DOM:window.close /en-US/docs/Web/API/Window/close /en-US/docs/DOM:window.closed /en-US/docs/Web/API/Window/closed /en-US/docs/DOM:window.confirm /en-US/docs/Web/API/Window/confirm @@ -2654,10 +2641,10 @@ /en-US/docs/DOM:window.scrollY /en-US/docs/Web/API/Window/scrollY /en-US/docs/DOM:window.scrollbars /en-US/docs/Web/API/Window/scrollbars /en-US/docs/DOM:window.self /en-US/docs/Web/API/Window/self -/en-US/docs/DOM:window.setInterval /en-US/docs/Web/API/setInterval -/en-US/docs/DOM:window.setTimeout /en-US/docs/Web/API/setTimeout +/en-US/docs/DOM:window.setInterval /en-US/docs/Web/API/Window/setInterval +/en-US/docs/DOM:window.setTimeout /en-US/docs/Web/API/Window/setTimeout /en-US/docs/DOM:window.showModalDialog /en-US/docs/Web/API/Window/showModalDialog -/en-US/docs/DOM:window.sidebar /en-US/docs/Web/API/Window/sidebar +/en-US/docs/DOM:window.sidebar /en-US/docs/Web/API/Window/external /en-US/docs/DOM:window.sizeToContent /en-US/docs/Web/API/Window/sizeToContent /en-US/docs/DOM:window.status /en-US/docs/Web/API/Window/status /en-US/docs/DOM:window.statusbar /en-US/docs/Web/API/Window/statusbar @@ -2665,7 +2652,7 @@ /en-US/docs/DOM:window.toolbar /en-US/docs/Web/API/Window/toolbar /en-US/docs/DOM:window.top /en-US/docs/Web/API/Window/top /en-US/docs/DOM:window.unescape /en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape -/en-US/docs/DOM:window.updateCommands /en-US/docs/Web/API/Window/updateCommands +/en-US/docs/DOM:window.updateCommands /en-US/docs/Web/API/Window /en-US/docs/DOM:window.window /en-US/docs/Web/API/Window/window /en-US/docs/DOMParser /en-US/docs/Web/API/DOMParser /en-US/docs/DOMTokenList.supports() /en-US/docs/Web/API/DOMTokenList/supports @@ -3256,8 +3243,8 @@ /en-US/docs/Document_Object_Model_(DOM)/window.URL.revokeObjectURL /en-US/docs/Web/API/URL/revokeObjectURL_static /en-US/docs/Document_Object_Model_(DOM)/window.captureEvents /en-US/docs/Web/API/Window/captureEvents /en-US/docs/Document_Object_Model_(DOM)/window.clearImmediate /en-US/docs/Web/API/Window/clearImmediate -/en-US/docs/Document_Object_Model_(DOM)/window.clearInterval /en-US/docs/Web/API/clearInterval -/en-US/docs/Document_Object_Model_(DOM)/window.clearTimeout /en-US/docs/Web/API/clearTimeout +/en-US/docs/Document_Object_Model_(DOM)/window.clearInterval /en-US/docs/Web/API/Window/clearInterval +/en-US/docs/Document_Object_Model_(DOM)/window.clearTimeout /en-US/docs/Web/API/Window/clearTimeout /en-US/docs/Document_Object_Model_(DOM)/window.close /en-US/docs/Web/API/Window/close /en-US/docs/Document_Object_Model_(DOM)/window.closed /en-US/docs/Web/API/Window/closed /en-US/docs/Document_Object_Model_(DOM)/window.confirm /en-US/docs/Web/API/Window/confirm @@ -3373,16 +3360,16 @@ /en-US/docs/Document_Object_Model_(DOM)/window.scrollY /en-US/docs/Web/API/Window/scrollY /en-US/docs/Document_Object_Model_(DOM)/window.scrollbars /en-US/docs/Web/API/Window/scrollbars /en-US/docs/Document_Object_Model_(DOM)/window.setImmediate /en-US/docs/Web/API/Window/setImmediate -/en-US/docs/Document_Object_Model_(DOM)/window.setInterval /en-US/docs/Web/API/setInterval -/en-US/docs/Document_Object_Model_(DOM)/window.setTimeout /en-US/docs/Web/API/setTimeout +/en-US/docs/Document_Object_Model_(DOM)/window.setInterval /en-US/docs/Web/API/Window/setInterval +/en-US/docs/Document_Object_Model_(DOM)/window.setTimeout /en-US/docs/Web/API/Window/setTimeout /en-US/docs/Document_Object_Model_(DOM)/window.showModalDialog /en-US/docs/Web/API/Window/showModalDialog -/en-US/docs/Document_Object_Model_(DOM)/window.sidebar /en-US/docs/Web/API/Window/sidebar +/en-US/docs/Document_Object_Model_(DOM)/window.sidebar /en-US/docs/Web/API/Window/external /en-US/docs/Document_Object_Model_(DOM)/window.sizeToContent /en-US/docs/Web/API/Window/sizeToContent /en-US/docs/Document_Object_Model_(DOM)/window.status /en-US/docs/Web/API/Window/status /en-US/docs/Document_Object_Model_(DOM)/window.statusbar /en-US/docs/Web/API/Window/statusbar /en-US/docs/Document_Object_Model_(DOM)/window.toolbar /en-US/docs/Web/API/Window/toolbar /en-US/docs/Document_Object_Model_(DOM)/window.unescape /en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape -/en-US/docs/Document_Object_Model_(DOM)/window.updateCommands /en-US/docs/Web/API/Window/updateCommands +/en-US/docs/Document_Object_Model_(DOM)/window.updateCommands /en-US/docs/Web/API/Window /en-US/docs/Document_Object_Model_(DOM)/window.window /en-US/docs/Web/API/Window/window /en-US/docs/Domain_name /en-US/docs/Glossary/Domain_name /en-US/docs/DragDrop /en-US/docs/Web/API/HTML_Drag_and_Drop_API @@ -3483,7 +3470,7 @@ /en-US/docs/Firefox_9_for_developers /en-US/docs/Mozilla/Firefox/Releases/9 /en-US/docs/Firefox_User_Agent_String_Reference /en-US/docs/Web/HTTP/Headers/User-Agent/Firefox /en-US/docs/Firefox_for_developers /en-US/docs/Mozilla/Firefox/Releases/20 -/en-US/docs/Fixing_common_validation_problems /en-US/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML +/en-US/docs/Fixing_common_validation_problems /en-US/docs/Learn_web_development/Core/Structuring_content/Debugging_HTML /en-US/docs/Flexible_Box /en-US/docs/Web/CSS/CSS_flexible_box_layout/Basic_concepts_of_flexbox /en-US/docs/Focus_management_in_HTML /en-US/docs/Web/API/Document/hasFocus /en-US/docs/Full_page_zoom /en-US/docs/Mozilla/Firefox/Releases/3/Full_page_zoom @@ -3512,6 +3499,7 @@ /en-US/docs/Games/Techniques/Publishing_games/Game_promotion /en-US/docs/Games/Publishing_games/Game_promotion /en-US/docs/Games/Techniques/Tilemaps/SquareTiles /en-US/docs/Games/Techniques/Tilemaps /en-US/docs/Games/Techniques/Tilemaps/SquareTiles/Square_tilemaps_implementation:_Static_maps /en-US/docs/Games/Techniques/Tilemaps/Square_tilemaps_implementation:_Static_maps +/en-US/docs/Games/Tutorials/Touch_Event_Horizon /en-US/docs/Games/Tutorials /en-US/docs/Games/WebRTC_data_channels /en-US/docs/Games/Techniques/WebRTC_data_channels /en-US/docs/Games/Workflows /en-US/docs/Games/Tutorials /en-US/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript /en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript @@ -3554,7 +3542,7 @@ /en-US/docs/Games/Workflows/Breakout_game_from_scratch/Paddle_and_keyboard_controls /en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Paddle_and_keyboard_controls /en-US/docs/Games/Workflows/Breakout_game_from_scratch/Track_the_score_and_win /en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win /en-US/docs/Games/Workflows/HTML5_Gamedev_Phaser_Device_Orientation /en-US/docs/Games/Tutorials/HTML5_Gamedev_Phaser_Device_Orientation -/en-US/docs/Games/Workflows/Touch_Event_Horizon /en-US/docs/Games/Tutorials/Touch_Event_Horizon +/en-US/docs/Games/Workflows/Touch_Event_Horizon /en-US/docs/Games/Tutorials /en-US/docs/Games/visual_typescript_game_engine /en-US/docs/Games /en-US/docs/Getting_Started_With_NSS https://firefox-source-docs.mozilla.org/security/nss/index.html /en-US/docs/Getting_started_on_MDN /en-US/docs/MDN/Community/Contributing/Getting_started @@ -3569,9 +3557,11 @@ /en-US/docs/Glossary/Bézier_curve /en-US/docs/Glossary/Bezier_curve /en-US/docs/Glossary/CSS_property /en-US/docs/Glossary/property/CSS /en-US/docs/Glossary/Cleartext /en-US/docs/Glossary/Plaintext +/en-US/docs/Glossary/Clickjacking /en-US/docs/Web/Security/Attacks/Clickjacking /en-US/docs/Glossary/Client_hints /en-US/docs/Web/HTTP/Client_hints /en-US/docs/Glossary/Condition /en-US/docs/Glossary/Conditional /en-US/docs/Glossary/Content_type /en-US/docs/Glossary/MIME_type +/en-US/docs/Glossary/DOS_attack /en-US/docs/Glossary/Denial_of_Service /en-US/docs/Glossary/DTD /en-US/docs/Glossary/Doctype /en-US/docs/Glossary/Descriptor_(CSS) /en-US/docs/Glossary/CSS_Descriptor /en-US/docs/Glossary/Distributed_DenialofService /en-US/docs/Glossary/Distributed_Denial_of_Service @@ -3602,10 +3592,12 @@ /en-US/docs/Glossary/Rendering_engine /en-US/docs/Glossary/Engine/Rendering /en-US/docs/Glossary/Responsive_design /en-US/docs/Glossary/Responsive_web_design /en-US/docs/Glossary/Round_Trip_Time_(RTT) /en-US/docs/Glossary/Round_Trip_Time +/en-US/docs/Glossary/Routers /en-US/docs/Glossary/Router /en-US/docs/Glossary/SRTP /en-US/docs/Glossary/RTP /en-US/docs/Glossary/SSL_Glossary /en-US/docs/Glossary/SSL /en-US/docs/Glossary/Scrollport /en-US/docs/Glossary/Scroll_container /en-US/docs/Glossary/Second-level_Domain /en-US/docs/Glossary/SLD +/en-US/docs/Glossary/Self-Executing_Anonymous_Function /en-US/docs/Glossary/IIFE /en-US/docs/Glossary/Serialize /en-US/docs/Glossary/Serialization /en-US/docs/Glossary/Simple_header /en-US/docs/Glossary/CORS-safelisted_request_header /en-US/docs/Glossary/Simple_response_header /en-US/docs/Glossary/CORS-safelisted_response_header @@ -3613,7 +3605,7 @@ /en-US/docs/Glossary/Static_property /en-US/docs/Glossary/property/JavaScript /en-US/docs/Glossary/Transferable_objects /en-US/docs/Web/API/Web_Workers_API/Transferable_objects /en-US/docs/Glossary/Transmission_Control_Protocol_(TCP) /en-US/docs/Glossary/TCP -/en-US/docs/Glossary/URI/www_vs_non-www_URLs /en-US/docs/Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs +/en-US/docs/Glossary/URI/www_vs_non-www_URLs /en-US/docs/Web/URI/Authority/Choosing_between_www_and_non-www_URLs /en-US/docs/Glossary/WWW /en-US/docs/Glossary/World_Wide_Web /en-US/docs/Glossary/WebExtension /en-US/docs/Glossary/WebExtensions /en-US/docs/Glossary/Web_Sockets /en-US/docs/Glossary/WebSockets @@ -3631,7 +3623,7 @@ /en-US/docs/HTM/Attribute /en-US/docs/Web/HTML/Attributes /en-US/docs/HTML /en-US/docs/Web/HTML /en-US/docs/HTML/Attributes /en-US/docs/Web/HTML/Attributes -/en-US/docs/HTML/Bad_copy_pasting_habits /en-US/docs/Learn/HTML/Introduction_to_HTML +/en-US/docs/HTML/Bad_copy_pasting_habits /en-US/docs/Learn_web_development/Core/Structuring_content /en-US/docs/HTML/Block-level_elements /en-US/docs/Glossary/Block-level_content /en-US/docs/HTML/CORS_Enabled_Image /en-US/docs/Web/HTML/CORS_enabled_image /en-US/docs/HTML/CORS_settings_attributes /en-US/docs/Web/HTML/Attributes/crossorigin @@ -3864,30 +3856,30 @@ /en-US/docs/HTML/Element/xmp /en-US/docs/Web/HTML/Element/xmp /en-US/docs/HTML/Elements/time /en-US/docs/Web/HTML/Element/time /en-US/docs/HTML/Focus_management_in_HTML /en-US/docs/Web/API/Document/hasFocus -/en-US/docs/HTML/Forms /en-US/docs/Learn/Forms -/en-US/docs/HTML/Forms/Advanced_styling_for_HTML_forms /en-US/docs/Learn/Forms/Advanced_form_styling -/en-US/docs/HTML/Forms/Data_form_validation /en-US/docs/Learn/Forms/Form_validation -/en-US/docs/HTML/Forms/HTML_forms_in_legacy_browsers /en-US/docs/Learn/Forms/HTML_forms_in_legacy_browsers -/en-US/docs/HTML/Forms/How_to_build_custom_form_widgets /en-US/docs/Learn/Forms/How_to_build_custom_form_controls -/en-US/docs/HTML/Forms/How_to_build_custom_form_widgets/Example_1 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_1 -/en-US/docs/HTML/Forms/How_to_build_custom_form_widgets/Example_2 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_2 -/en-US/docs/HTML/Forms/How_to_build_custom_form_widgets/Example_3 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_3 -/en-US/docs/HTML/Forms/How_to_build_custom_form_widgets/Example_4 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_4 -/en-US/docs/HTML/Forms/How_to_build_custom_form_widgets/Example_5 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_5 -/en-US/docs/HTML/Forms/How_to_structure_an_HTML_form /en-US/docs/Learn/Forms/How_to_structure_a_web_form -/en-US/docs/HTML/Forms/How_to_structure_an_HTML_form/Example /en-US/docs/Learn/Forms/How_to_structure_a_web_form/Example -/en-US/docs/HTML/Forms/My_first_HTML_form /en-US/docs/Learn/Forms/Your_first_form -/en-US/docs/HTML/Forms/My_first_HTML_form/Example /en-US/docs/Learn/Forms/Your_first_form -/en-US/docs/HTML/Forms/Sending_and_retrieving_form_data /en-US/docs/Learn/Forms/Sending_and_retrieving_form_data -/en-US/docs/HTML/Forms/Sending_forms_through_JavaScript /en-US/docs/Learn/Forms/Sending_forms_through_JavaScript -/en-US/docs/HTML/Forms/Styling_HTML_forms /en-US/docs/Learn/Forms/Styling_web_forms -/en-US/docs/HTML/Forms/The_native_form_widgets /en-US/docs/Learn/Forms/Basic_native_form_controls -/en-US/docs/HTML/Forms_in_HTML /en-US/docs/Learn/Forms -/en-US/docs/HTML/Forms_in_HTML5 /en-US/docs/Learn/Forms +/en-US/docs/HTML/Forms /en-US/docs/Learn_web_development/Extensions/Forms +/en-US/docs/HTML/Forms/Advanced_styling_for_HTML_forms /en-US/docs/Learn_web_development/Extensions/Forms/Advanced_form_styling +/en-US/docs/HTML/Forms/Data_form_validation /en-US/docs/Learn_web_development/Extensions/Forms/Form_validation +/en-US/docs/HTML/Forms/HTML_forms_in_legacy_browsers /en-US/docs/Learn_web_development/Extensions/Forms/HTML_forms_in_legacy_browsers +/en-US/docs/HTML/Forms/How_to_build_custom_form_widgets /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls +/en-US/docs/HTML/Forms/How_to_build_custom_form_widgets/Example_1 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_1 +/en-US/docs/HTML/Forms/How_to_build_custom_form_widgets/Example_2 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_2 +/en-US/docs/HTML/Forms/How_to_build_custom_form_widgets/Example_3 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_3 +/en-US/docs/HTML/Forms/How_to_build_custom_form_widgets/Example_4 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_4 +/en-US/docs/HTML/Forms/How_to_build_custom_form_widgets/Example_5 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_5 +/en-US/docs/HTML/Forms/How_to_structure_an_HTML_form /en-US/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form +/en-US/docs/HTML/Forms/How_to_structure_an_HTML_form/Example /en-US/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form/Example +/en-US/docs/HTML/Forms/My_first_HTML_form /en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form +/en-US/docs/HTML/Forms/My_first_HTML_form/Example /en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form +/en-US/docs/HTML/Forms/Sending_and_retrieving_form_data /en-US/docs/Learn_web_development/Extensions/Forms/Sending_and_retrieving_form_data +/en-US/docs/HTML/Forms/Sending_forms_through_JavaScript /en-US/docs/Learn_web_development/Extensions/Forms/Sending_forms_through_JavaScript +/en-US/docs/HTML/Forms/Styling_HTML_forms /en-US/docs/Learn_web_development/Extensions/Forms/Styling_web_forms +/en-US/docs/HTML/Forms/The_native_form_widgets /en-US/docs/Learn_web_development/Extensions/Forms/Basic_native_form_controls +/en-US/docs/HTML/Forms_in_HTML /en-US/docs/Learn_web_development/Extensions/Forms +/en-US/docs/HTML/Forms_in_HTML5 /en-US/docs/Learn_web_development/Extensions/Forms /en-US/docs/HTML/Global_attributes /en-US/docs/Web/HTML/Global_attributes /en-US/docs/HTML/HTML5/Constraint_validation /en-US/docs/Web/HTML/Constraint_validation -/en-US/docs/HTML/HTML5/Forms_in_HTML5 /en-US/docs/Learn/Forms -/en-US/docs/HTML/HTML5/HTML5_Parser /en-US/docs/Learn/HTML +/en-US/docs/HTML/HTML5/Forms_in_HTML5 /en-US/docs/Learn_web_development/Extensions/Forms +/en-US/docs/HTML/HTML5/HTML5_Parser /en-US/docs/Learn_web_development/Core/Structuring_content /en-US/docs/HTML/HTML5/HTML5_Tags_List /en-US/docs/Web/HTML/Element /en-US/docs/HTML/HTML5/HTML5_element_list /en-US/docs/Web/HTML/Element /en-US/docs/HTML/HTML5/Optimizing_Your_Pages_for_Speculative_Parsing /en-US/docs/Glossary/speculative_parsing @@ -3902,18 +3894,18 @@ /en-US/docs/HTML/HTML_Elements/title /en-US/docs/Web/HTML/Element/title /en-US/docs/HTML/HTML_Elements/tr /en-US/docs/Web/HTML/Element/tr /en-US/docs/HTML/HTML_Elements/track /en-US/docs/Web/HTML/Element/track -/en-US/docs/HTML/Historical_artifacts_to_avoid /en-US/docs/Learn/HTML/Introduction_to_HTML +/en-US/docs/HTML/Historical_artifacts_to_avoid /en-US/docs/Learn_web_development/Core/Structuring_content /en-US/docs/HTML/Inline_elements /en-US/docs/Glossary/Inline-level_content -/en-US/docs/HTML/Intro /en-US/docs/Learn/HTML/Introduction_to_HTML -/en-US/docs/HTML/Introduction /en-US/docs/Learn/HTML/Introduction_to_HTML -/en-US/docs/HTML/Introduction_to_HTML5 /en-US/docs/Learn/HTML +/en-US/docs/HTML/Intro /en-US/docs/Learn_web_development/Core/Structuring_content +/en-US/docs/HTML/Introduction /en-US/docs/Learn_web_development/Core/Structuring_content +/en-US/docs/HTML/Introduction_to_HTML5 /en-US/docs/Learn_web_development/Core/Structuring_content /en-US/docs/HTML/Link_types /en-US/docs/Web/HTML/Attributes/rel /en-US/docs/HTML/Manipulating_video_using_canvas /en-US/docs/Web/API/Canvas_API/Manipulating_video_using_canvas /en-US/docs/HTML/Optimizing_Your_Pages_for_Speculative_Parsing /en-US/docs/Glossary/speculative_parsing /en-US/docs/HTML/Supported_media_formats /en-US/docs/Web/Media/Formats -/en-US/docs/HTML/The_Importance_of_Correct_Commenting /en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started#HTML_comments -/en-US/docs/HTML/Tips_for_authoring_fast-loading_HTML_pages /en-US/docs/Learn/HTML/Howto/Author_fast-loading_HTML_pages -/en-US/docs/HTML/Using_HTML5_audio_and_video /en-US/docs/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +/en-US/docs/HTML/The_Importance_of_Correct_Commenting /en-US/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax#HTML_comments +/en-US/docs/HTML/Tips_for_authoring_fast-loading_HTML_pages /en-US/docs/Learn_web_development/Howto/Solve_HTML_problems/Author_fast-loading_HTML_pages +/en-US/docs/HTML/Using_HTML5_audio_and_video /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_video_and_audio /en-US/docs/HTML/WebVTT /en-US/docs/Web/API/WebVTT_API /en-US/docs/HTML/aside /en-US/docs/Web/HTML/Element/aside /en-US/docs/HTML/tag /en-US/docs/Web/HTML/Element @@ -3963,7 +3955,7 @@ /en-US/docs/HTML:Element:tt /en-US/docs/Web/HTML/Element/tt /en-US/docs/HTML:Element:ul /en-US/docs/Web/HTML/Element/ul /en-US/docs/HTML:Inline_elements /en-US/docs/Glossary/Inline-level_content -/en-US/docs/HTML:The_Importance_of_Correct_Commenting /en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started#HTML_comments +/en-US/docs/HTML:The_Importance_of_Correct_Commenting /en-US/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax#HTML_comments /en-US/docs/HTML:tag /en-US/docs/Web/HTML/Element /en-US/docs/HTMLElement.forceSpellCheck /en-US/docs/Web/HTML/Global_attributes/spellcheck /en-US/docs/HTMLObjectElement.type /en-US/docs/Web/API/HTMLObjectElement/type @@ -3971,10 +3963,9 @@ /en-US/docs/HTMLSpanElemen /en-US/docs/Web/API/HTMLSpanElement /en-US/docs/HTMLSpanElement /en-US/docs/Web/API/HTMLSpanElement /en-US/docs/HTMLSpanElement_interface /en-US/docs/Web/API/HTMLSpanElement -/en-US/docs/HTML_Intro2 /en-US/docs/Learn/HTML/Introduction_to_HTML -/en-US/docs/HTML_Santizer_API /en-US/docs/Web/API/HTML_Sanitizer_API +/en-US/docs/HTML_Intro2 /en-US/docs/Learn_web_development/Core/Structuring_content /en-US/docs/HTML_in_XMLHttpRequest /en-US/docs/Web/API/XMLHttpRequest_API/HTML_in_XMLHttpRequest -/en-US/docs/HTML_intro /en-US/docs/Learn/HTML/Introduction_to_HTML +/en-US/docs/HTML_intro /en-US/docs/Learn_web_development/Core/Structuring_content /en-US/docs/HTTP /en-US/docs/Web/HTTP /en-US/docs/HTTP/Access_control_CORS /en-US/docs/Web/HTTP/CORS /en-US/docs/HTTP/Content_negotiation /en-US/docs/Web/HTTP/Content_negotiation @@ -3998,11 +3989,11 @@ /en-US/docs/ICC_color_correction_in_Firefox /en-US/docs/Mozilla/Firefox/Releases/3.5/ICC_color_correction_in_Firefox /en-US/docs/IMAP /en-US/docs/Glossary/IMAP /en-US/docs/IPv6 /en-US/docs/Glossary/IPv6 -/en-US/docs/Inbox/Advance_HTML_Tags /en-US/docs/Learn/Common_questions/Design_and_accessibility/HTML_features_for_accessibility +/en-US/docs/Inbox/Advance_HTML_Tags /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/HTML_features_for_accessibility /en-US/docs/Inbox/Advanced_layouts_with_flexbox /en-US/docs/Glossary/Flexbox /en-US/docs/Inbox/Using_flexbox_to_lay_out_web_applications /en-US/docs/Web/CSS/CSS_flexible_box_layout/Typical_use_cases_of_flexbox /en-US/docs/Inbox/Writing_a_WebSocket_server_in_Java /en-US/docs/Web/API/WebSockets_API/Writing_a_WebSocket_server_in_Java -/en-US/docs/Incorrect_MIME_Type_for_CSS_Files /en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types +/en-US/docs/Incorrect_MIME_Type_for_CSS_Files /en-US/docs/Web/HTTP/MIME_types /en-US/docs/IndexedDB /en-US/docs/Web/API/IndexedDB_API /en-US/docs/IndexedDB/Basic_Concepts_Behind_IndexedDB /en-US/docs/Web/API/IndexedDB_API/Basic_Terminology /en-US/docs/IndexedDB/Cursor /en-US/docs/Web/API/IDBCursor @@ -4028,12 +4019,12 @@ /en-US/docs/IndexedDB_Primer /en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB /en-US/docs/Infinity /en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity /en-US/docs/Installing_extensions https://extensionworkshop.com/documentation/publish/signing-and-distribution-overview/ -/en-US/docs/IntroHTML6 /en-US/docs/Learn/HTML/Introduction_to_HTML -/en-US/docs/Intro_HTML3 /en-US/docs/Learn/HTML/Introduction_to_HTML -/en-US/docs/Intro_HTML4 /en-US/docs/Learn/HTML/Introduction_to_HTML -/en-US/docs/Intro_HTML5 /en-US/docs/Learn/HTML/Introduction_to_HTML +/en-US/docs/IntroHTML6 /en-US/docs/Learn_web_development/Core/Structuring_content +/en-US/docs/Intro_HTML3 /en-US/docs/Learn_web_development/Core/Structuring_content +/en-US/docs/Intro_HTML4 /en-US/docs/Learn_web_development/Core/Structuring_content +/en-US/docs/Intro_HTML5 /en-US/docs/Learn_web_development/Core/Structuring_content /en-US/docs/Introducing_Content_Security_Policy /en-US/docs/Web/HTTP/CSP -/en-US/docs/Introduction_to_Object-Oriented_JavaScript /en-US/docs/Learn/JavaScript/Objects +/en-US/docs/Introduction_to_Object-Oriented_JavaScript /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects /en-US/docs/Introduction_to_using_XPath_in_JavaScript /en-US/docs/Web/XPath/Introduction_to_using_XPath_in_JavaScript /en-US/docs/JS/Glossary /en-US/docs/Glossary /en-US/docs/JS/this /en-US/docs/Web/JavaScript/Reference/Operators/this @@ -4049,7 +4040,7 @@ /en-US/docs/JavaScript/About_JavaScript /en-US/docs/Web/JavaScript /en-US/docs/JavaScript/Data_structures /en-US/docs/Web/JavaScript/Data_structures /en-US/docs/JavaScript/DedicatedWorkerGlobalScope /en-US/docs/Web/API/DedicatedWorkerGlobalScope -/en-US/docs/JavaScript/Getting_Started /en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics +/en-US/docs/JavaScript/Getting_Started /en-US/docs/Learn_web_development/Getting_started/Your_first_website/Adding_interactivity /en-US/docs/JavaScript/Glossary /en-US/docs/Glossary /en-US/docs/JavaScript/Guide /en-US/docs/Web/JavaScript/Guide /en-US/docs/JavaScript/Guide/About /en-US/docs/Web/JavaScript/Guide/Introduction @@ -4151,7 +4142,7 @@ /en-US/docs/JavaScript/Guide/Values,_variables,_and_literalss /en-US/docs/Web/JavaScript/Guide/Grammar_and_types /en-US/docs/JavaScript/Guide/Working_with_Arrays /en-US/docs/Web/JavaScript/Guide /en-US/docs/JavaScript/Guide/Working_with_Objects /en-US/docs/Web/JavaScript/Guide/Working_with_objects -/en-US/docs/JavaScript/Introduction_to_Object-Oriented_JavaScript /en-US/docs/Learn/JavaScript/Objects +/en-US/docs/JavaScript/Introduction_to_Object-Oriented_JavaScript /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects /en-US/docs/JavaScript/JavaScript_technologies_overview /en-US/docs/Web/JavaScript/JavaScript_technologies_overview /en-US/docs/JavaScript/Javascript_How_To_Tutorials /en-US/docs/Web/JavaScript/Guide /en-US/docs/JavaScript/Language_Resources /en-US/docs/Web/JavaScript/JavaScript_technologies_overview @@ -4708,7 +4699,7 @@ /en-US/docs/JavaScript/Typed_arrays/Uint32Array /en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array /en-US/docs/JavaScript/Typed_arrays/Uint8Array /en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array /en-US/docs/JavaScript/Typed_arrays/Uint8ClampedArray /en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray -/en-US/docs/JavaScript:Getting_Started /en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics +/en-US/docs/JavaScript:Getting_Started /en-US/docs/Learn_web_development/Getting_started/Your_first_website/Adding_interactivity /en-US/docs/JavaScriptREAPI /en-US/docs/Web /en-US/docs/JavaScript_API/navigator.mozApps.mgmt.addEventListener /en-US/docs/Web/API/EventTarget/addEventListener /en-US/docs/JavaScript_API/navigator.mozApps.mgmt.removeEventListener /en-US/docs/Web/API/EventTarget/removeEventListener @@ -4716,7 +4707,7 @@ /en-US/docs/JavaScript_Documention/A_re-introduction_to_JavaScript /en-US/docs/Web/JavaScript/Language_overview /en-US/docs/JavaScript_Documention/About_JavaScript /en-US/docs/Web/JavaScript /en-US/docs/JavaScript_Documention/Data_structures /en-US/docs/Web/JavaScript/Data_structures -/en-US/docs/JavaScript_Documention/Getting_Started /en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics +/en-US/docs/JavaScript_Documention/Getting_Started /en-US/docs/Learn_web_development/Getting_started/Your_first_website/Adding_interactivity /en-US/docs/JavaScript_Documention/Glossary /en-US/docs/Glossary /en-US/docs/JavaScript_Documention/Guide /en-US/docs/Web/JavaScript/Guide /en-US/docs/JavaScript_Documention/Guide/About /en-US/docs/Web/JavaScript/Guide/Introduction @@ -4812,7 +4803,7 @@ /en-US/docs/JavaScript_Documention/Guide/Statements /en-US/docs/Web/JavaScript/Guide/Control_flow_and_error_handling /en-US/docs/JavaScript_Documention/Guide/Values,_variables,_and_literals /en-US/docs/Web/JavaScript/Guide/Grammar_and_types /en-US/docs/JavaScript_Documention/Guide/Working_with_Objects /en-US/docs/Web/JavaScript/Guide/Working_with_objects -/en-US/docs/JavaScript_Documention/Introduction_to_Object-Oriented_JavaScript /en-US/docs/Learn/JavaScript/Objects +/en-US/docs/JavaScript_Documention/Introduction_to_Object-Oriented_JavaScript /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects /en-US/docs/JavaScript_Documention/Javascript_How_To_Tutorials /en-US/docs/Web/JavaScript/Guide /en-US/docs/JavaScript_Documention/Language_Resources /en-US/docs/Web/JavaScript/JavaScript_technologies_overview /en-US/docs/JavaScript_Documention/Memory_Management /en-US/docs/Web/JavaScript/Memory_management @@ -5152,225 +5143,593 @@ /en-US/docs/JavaScript_typed_arrays/Uint16Array /en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array /en-US/docs/JavaScript_typed_arrays/Uint32Array /en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array /en-US/docs/JavaScript_typed_arrays/Uint8Array /en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array +/en-US/docs/Learn /en-US/docs/Learn_web_development +/en-US/docs/Learn/Accessibility /en-US/docs/Learn_web_development/Core/Accessibility +/en-US/docs/Learn/Accessibility/Accessibility_troubleshooting /en-US/docs/Learn_web_development/Core/Accessibility/Accessibility_troubleshooting +/en-US/docs/Learn/Accessibility/CSS_and_JavaScript /en-US/docs/Learn_web_development/Core/Accessibility/CSS_and_JavaScript +/en-US/docs/Learn/Accessibility/CSS_and_JavaScript/Test_your_skills:_CSS_and_JavaScript_accessibility /en-US/docs/Learn_web_development/Core/Accessibility/CSS_and_JavaScript/Test_your_skills:_CSS_and_JavaScript_accessibility +/en-US/docs/Learn/Accessibility/HTML /en-US/docs/Learn_web_development/Core/Accessibility/HTML +/en-US/docs/Learn/Accessibility/Mobile /en-US/docs/Learn_web_development/Core/Accessibility/Mobile +/en-US/docs/Learn/Accessibility/Multimedia /en-US/docs/Learn_web_development/Core/Accessibility/Multimedia +/en-US/docs/Learn/Accessibility/Test_your_skills:_HTML_accessibility /en-US/docs/Learn_web_development/Core/Accessibility/Test_your_skills:_HTML_accessibility +/en-US/docs/Learn/Accessibility/WAI-ARIA_basics /en-US/docs/Learn_web_development/Core/Accessibility/WAI-ARIA_basics +/en-US/docs/Learn/Accessibility/WAI-ARIA_basics/Test_your_skills:_WAI-ARIA /en-US/docs/Learn_web_development/Core/Accessibility/WAI-ARIA_basics/Test_your_skills:_WAI-ARIA +/en-US/docs/Learn/Accessibility/What_is_accessibility /en-US/docs/Learn_web_development/Core/Accessibility/What_is_accessibility /en-US/docs/Learn/Advanced_layouts_with_flexbox /en-US/docs/Glossary/Flexbox -/en-US/docs/Learn/Anatomy_of_a_web_page /en-US/docs/Learn/Common_questions/Design_and_accessibility/Common_web_layouts -/en-US/docs/Learn/CSS/Basic_text_styling_in_CSS /en-US/docs/Learn/CSS/Styling_text/Fundamentals -/en-US/docs/Learn/CSS/Basics /en-US/docs/Learn/CSS/First_steps -/en-US/docs/Learn/CSS/Basics/Box_model /en-US/docs/Learn/CSS/Building_blocks/The_box_model -/en-US/docs/Learn/CSS/Basics/Cascade_and_inheritance /en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance -/en-US/docs/Learn/CSS/Basics/How_CSS_works /en-US/docs/Learn/CSS/First_steps/How_CSS_works -/en-US/docs/Learn/CSS/Basics/Layout /en-US/docs/Learn/CSS/CSS_layout/Introduction -/en-US/docs/Learn/CSS/Basics/Selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors -/en-US/docs/Learn/CSS/Basics/Syntax /en-US/docs/Learn/CSS/First_steps/How_CSS_is_structured -/en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseuso-classes_and_Pseudo-elements /en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements -/en-US/docs/Learn/CSS/Building_blocks/Selectors/Writing_Modes_Tasks /en-US/docs/Learn/CSS/Building_blocks/Writing_Modes_Tasks -/en-US/docs/Learn/CSS/CSS_layout/Using_Media_Queries /en-US/docs/Learn/CSS/CSS_layout/Media_queries -/en-US/docs/Learn/CSS/CSS_properties /en-US/docs/Learn/CSS/Building_blocks/Selectors -/en-US/docs/Learn/CSS/First_steps/Using_your_new_knowledge /en-US/docs/Learn/CSS/First_steps/Styling_a_biography_page -/en-US/docs/Learn/CSS/Howto/customize_a_list /en-US/docs/Learn/CSS/Styling_text/Styling_lists -/en-US/docs/Learn/CSS/Howto/style_text /en-US/docs/Learn/CSS/Styling_text/Fundamentals -/en-US/docs/Learn/CSS/Introduction_to_CSS /en-US/docs/Learn/CSS/First_steps -/en-US/docs/Learn/CSS/Introduction_to_CSS/Attribute_selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors/Attribute_selectors -/en-US/docs/Learn/CSS/Introduction_to_CSS/Box_model /en-US/docs/Learn/CSS/Building_blocks/The_box_model -/en-US/docs/Learn/CSS/Introduction_to_CSS/CSS_values /en-US/docs/Learn/CSS/Building_blocks/Values_and_units -/en-US/docs/Learn/CSS/Introduction_to_CSS/Cascade_and_inheritance /en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance -/en-US/docs/Learn/CSS/Introduction_to_CSS/Combinators_and_multiple_selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors/Combinators -/en-US/docs/Learn/CSS/Introduction_to_CSS/Debugging_CSS /en-US/docs/Learn/CSS/Building_blocks/Debugging_CSS -/en-US/docs/Learn/CSS/Introduction_to_CSS/Fundamental_CSS_comprehension /en-US/docs/Learn/CSS/Building_blocks/Fundamental_CSS_comprehension -/en-US/docs/Learn/CSS/Introduction_to_CSS/How_CSS_works /en-US/docs/Learn/CSS/First_steps/How_CSS_works -/en-US/docs/Learn/CSS/Introduction_to_CSS/Pseudo-classes_and_pseudo-elements /en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements -/en-US/docs/Learn/CSS/Introduction_to_CSS/Selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors -/en-US/docs/Learn/CSS/Introduction_to_CSS/Selectors/Attribute_selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors/Attribute_selectors -/en-US/docs/Learn/CSS/Introduction_to_CSS/Selectors/Combinators_and_multiple_selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors/Combinators -/en-US/docs/Learn/CSS/Introduction_to_CSS/Selectors/Pseudo-classes_and_pseudo-elements /en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements -/en-US/docs/Learn/CSS/Introduction_to_CSS/Selectors/Simple_selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors -/en-US/docs/Learn/CSS/Introduction_to_CSS/Simple_selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors -/en-US/docs/Learn/CSS/Introduction_to_CSS/Syntax /en-US/docs/Learn/CSS/First_steps/How_CSS_is_structured -/en-US/docs/Learn/CSS/Introduction_to_CSS/Values /en-US/docs/Learn/CSS/Building_blocks/Values_and_units -/en-US/docs/Learn/CSS/Introduction_to_CSS/Values_and_units /en-US/docs/Learn/CSS/Building_blocks/Values_and_units -/en-US/docs/Learn/CSS/Styling_boxes /en-US/docs/Learn/CSS/Building_blocks -/en-US/docs/Learn/CSS/Styling_boxes/A_cool_information_box /en-US/docs/Learn/CSS/Building_blocks/A_cool_looking_box -/en-US/docs/Learn/CSS/Styling_boxes/A_cool_looking_box /en-US/docs/Learn/CSS/Building_blocks/A_cool_looking_box -/en-US/docs/Learn/CSS/Styling_boxes/Advanced_box_effects /en-US/docs/Learn/CSS/Building_blocks/Advanced_styling_effects -/en-US/docs/Learn/CSS/Styling_boxes/Backgrounds /en-US/docs/Learn/CSS/Building_blocks/Backgrounds_and_borders -/en-US/docs/Learn/CSS/Styling_boxes/Borders /en-US/docs/Learn/CSS/Building_blocks/Backgrounds_and_borders -/en-US/docs/Learn/CSS/Styling_boxes/Box_model_recap /en-US/docs/Learn/CSS/Building_blocks/The_box_model -/en-US/docs/Learn/CSS/Styling_boxes/Creating_fancy_letterheaded_paper /en-US/docs/Learn/CSS/Building_blocks/Creating_fancy_letterheaded_paper -/en-US/docs/Learn/CSS/Styling_boxes/Styling_tables /en-US/docs/Learn/CSS/Building_blocks/Styling_tables -/en-US/docs/Learn/CSS/Using_CSS_in_a_web_page /en-US/docs/Learn/CSS/First_steps/How_CSS_works -/en-US/docs/Learn/Checking_that_your_web_site_is_working_properly /en-US/docs/Learn/Common_questions/Tools_and_setup/Checking_that_your_web_site_is_working_properly -/en-US/docs/Learn/Choose,_Install_and_set_up_a_text_editor /en-US/docs/Learn/Common_questions/Tools_and_setup/Available_text_editors -/en-US/docs/Learn/Client-side_web_APIs /en-US/docs/Learn/JavaScript/Client-side_web_APIs -/en-US/docs/Learn/Coding-Scripting /en-US/docs/Learn -/en-US/docs/Learn/Common_questions/Available_text_editors /en-US/docs/Learn/Common_questions/Tools_and_setup/Available_text_editors -/en-US/docs/Learn/Common_questions/Checking_that_your_web_site_is_working_properly /en-US/docs/Learn/Common_questions/Tools_and_setup/Checking_that_your_web_site_is_working_properly -/en-US/docs/Learn/Common_questions/Common_web_layouts /en-US/docs/Learn/Common_questions/Design_and_accessibility/Common_web_layouts -/en-US/docs/Learn/Common_questions/Design_for_all_types_of_users /en-US/docs/Learn/Common_questions/Design_and_accessibility/Design_for_all_types_of_users -/en-US/docs/Learn/Common_questions/HTML_features_for_accessibility /en-US/docs/Learn/Common_questions/Design_and_accessibility/HTML_features_for_accessibility -/en-US/docs/Learn/Common_questions/How_do_you_host_your_website_on_Google_App_Engine /en-US/docs/Learn/Common_questions/Tools_and_setup/How_do_you_host_your_website_on_Google_App_Engine -/en-US/docs/Learn/Common_questions/How_do_you_host_your_website_on_Google_App_Engine /en-US/docs/Learn/Common_questions/Tools_and_setup/How_do_you_host_your_website_on_Google_App_Engine -/en-US/docs/Learn/Common_questions/How_does_the_Internet_work /en-US/docs/Learn/Common_questions/Web_mechanics/How_does_the_Internet_work -/en-US/docs/Learn/Common_questions/How_much_does_it_cost /en-US/docs/Learn/Common_questions/Tools_and_setup/How_much_does_it_cost -/en-US/docs/Learn/Common_questions/Pages_sites_servers_and_search_engines /en-US/docs/Learn/Common_questions/Web_mechanics/Pages_sites_servers_and_search_engines -/en-US/docs/Learn/Common_questions/Set_up_a_basic_working_environment /en-US/docs/Learn/Common_questions/Tools_and_setup/set_up_a_local_testing_server -/en-US/docs/Learn/Common_questions/Thinking_before_coding /en-US/docs/Learn/Common_questions/Design_and_accessibility/Thinking_before_coding -/en-US/docs/Learn/Common_questions/Upload_files_to_a_web_server /en-US/docs/Learn/Common_questions/Tools_and_setup/Upload_files_to_a_web_server -/en-US/docs/Learn/Common_questions/Using_Github_pages /en-US/docs/Learn/Common_questions/Tools_and_setup/Using_GitHub_pages -/en-US/docs/Learn/Common_questions/What_are_browser_developer_tools /en-US/docs/Learn/Common_questions/Tools_and_setup/What_are_browser_developer_tools -/en-US/docs/Learn/Common_questions/What_are_hyperlinks /en-US/docs/Learn/Common_questions/Web_mechanics/What_are_hyperlinks -/en-US/docs/Learn/Common_questions/What_is_a_URL /en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL -/en-US/docs/Learn/Common_questions/What_is_a_domain_name /en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_domain_name -/en-US/docs/Learn/Common_questions/What_is_a_web_server /en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_web_server -/en-US/docs/Learn/Common_questions/What_is_accessibility /en-US/docs/Learn/Common_questions/Design_and_accessibility/What_is_accessibility -/en-US/docs/Learn/Common_questions/What_software_do_I_need /en-US/docs/Learn/Common_questions/Tools_and_setup/What_software_do_I_need -/en-US/docs/Learn/Common_questions/set_up_a_local_testing_server /en-US/docs/Learn/Common_questions/Tools_and_setup/set_up_a_local_testing_server -/en-US/docs/Learn/Composing_for_the_web /en-US/docs/Learn/Common_questions -/en-US/docs/Learn/Design_and_Accessibility /en-US/docs/Learn/Common_questions -/en-US/docs/Learn/Design_for_all_types_of_users_101 /en-US/docs/Learn/Common_questions/Design_and_accessibility/Design_for_all_types_of_users -/en-US/docs/Learn/Discover_browser_developer_tools /en-US/docs/Learn/Common_questions/Tools_and_setup/What_are_browser_developer_tools -/en-US/docs/Learn/Discover_browser_development_tools /en-US/docs/Learn/Common_questions/Tools_and_setup/What_are_browser_developer_tools -/en-US/docs/Learn/Drafts /en-US/docs/Learn -/en-US/docs/Learn/Drafts/Python /en-US/docs/Learn/Server-side/Django -/en-US/docs/Learn/Drafts/Python/First_steps /en-US/docs/Learn/Server-side/Django -/en-US/docs/Learn/Dynamic_Websites_–_Server-side_website_programming /en-US/docs/Learn/Server-side -/en-US/docs/Learn/Forms/Advanced_styling_for_HTML_forms /en-US/docs/Learn/Forms/Advanced_form_styling -/en-US/docs/Learn/Forms/How_to_build_custom_form_widgets /en-US/docs/Learn/Forms/How_to_build_custom_form_controls -/en-US/docs/Learn/Forms/How_to_build_custom_form_widgets/Example_1 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_1 -/en-US/docs/Learn/Forms/How_to_build_custom_form_widgets/Example_2 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_2 -/en-US/docs/Learn/Forms/How_to_build_custom_form_widgets/Example_3 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_3 -/en-US/docs/Learn/Forms/How_to_build_custom_form_widgets/Example_4 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_4 -/en-US/docs/Learn/Forms/How_to_build_custom_form_widgets/Example_5 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_5 -/en-US/docs/Learn/Forms/How_to_structure_an_HTML_form /en-US/docs/Learn/Forms/How_to_structure_a_web_form -/en-US/docs/Learn/Forms/How_to_structure_an_HTML_form/Example /en-US/docs/Learn/Forms/How_to_structure_a_web_form/Example -/en-US/docs/Learn/Forms/Property_compatibility_table_for_form_widgets /en-US/docs/Learn/Forms/Property_compatibility_table_for_form_controls -/en-US/docs/Learn/Forms/Styling_HTML_forms /en-US/docs/Learn/Forms/Styling_web_forms -/en-US/docs/Learn/Forms/Your_first_HTML_form /en-US/docs/Learn/Forms/Your_first_form -/en-US/docs/Learn/Forms/Your_first_HTML_form/Example /en-US/docs/Learn/Forms/Your_first_form -/en-US/docs/Learn/Forms/Your_first_form/Example /en-US/docs/Learn/Forms/Your_first_form +/en-US/docs/Learn/Anatomy_of_a_web_page /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/Common_web_layouts +/en-US/docs/Learn/CSS /en-US/docs/Learn_web_development/Core/Styling_basics +/en-US/docs/Learn/CSS/Basic_text_styling_in_CSS /en-US/docs/Learn_web_development/Core/Text_styling/Fundamentals +/en-US/docs/Learn/CSS/Basics /en-US/docs/Learn_web_development/Core/Styling_basics +/en-US/docs/Learn/CSS/Basics/Box_model /en-US/docs/Learn_web_development/Core/Styling_basics/Box_model +/en-US/docs/Learn/CSS/Basics/Cascade_and_inheritance /en-US/docs/Learn_web_development/Core/Styling_basics/Handling_conflicts +/en-US/docs/Learn/CSS/Basics/How_CSS_works /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/Learn/CSS/Basics/Layout /en-US/docs/Learn_web_development/Core/CSS_layout/Introduction +/en-US/docs/Learn/CSS/Basics/Selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors +/en-US/docs/Learn/CSS/Basics/Syntax /en-US/docs/Learn_web_development/Core/Styling_basics/Getting_started +/en-US/docs/Learn/CSS/Building_blocks /en-US/docs/Learn_web_development/Core/Styling_basics +/en-US/docs/Learn/CSS/Building_blocks/A_cool_looking_box /en-US/docs/Learn_web_development/Core/Styling_basics/Cool-looking_box +/en-US/docs/Learn/CSS/Building_blocks/Advanced_styling_effects /en-US/docs/Learn_web_development/Core/Styling_basics/Advanced_styling_effects +/en-US/docs/Learn/CSS/Building_blocks/Backgrounds_and_borders /en-US/docs/Learn_web_development/Core/Styling_basics/Backgrounds_and_borders +/en-US/docs/Learn/CSS/Building_blocks/Box_Model_Tasks /en-US/docs/Learn_web_development/Core/Styling_basics/Box_Model_Tasks +/en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance /en-US/docs/Learn_web_development/Core/Styling_basics/Handling_conflicts +/en-US/docs/Learn/CSS/Building_blocks/Cascade_layers /en-US/docs/Learn_web_development/Core/Styling_basics/Cascade_layers +/en-US/docs/Learn/CSS/Building_blocks/Cascade_tasks /en-US/docs/Learn_web_development/Core/Styling_basics/Cascade_tasks +/en-US/docs/Learn/CSS/Building_blocks/Creating_fancy_letterheaded_paper /en-US/docs/Learn_web_development/Core/Styling_basics/Fancy_letterheaded_paper +/en-US/docs/Learn/CSS/Building_blocks/Debugging_CSS /en-US/docs/Learn_web_development/Core/Styling_basics/Debugging_CSS +/en-US/docs/Learn/CSS/Building_blocks/Fundamental_CSS_comprehension /en-US/docs/Learn_web_development/Core/Styling_basics/Fundamental_CSS_comprehension +/en-US/docs/Learn/CSS/Building_blocks/Handling_different_text_directions /en-US/docs/Learn_web_development/Core/Styling_basics/Handling_different_text_directions +/en-US/docs/Learn/CSS/Building_blocks/Images_media_form_elements /en-US/docs/Learn_web_development/Core/Styling_basics/Images_media_forms +/en-US/docs/Learn/CSS/Building_blocks/Images_tasks /en-US/docs/Learn_web_development/Core/Styling_basics/Images_tasks +/en-US/docs/Learn/CSS/Building_blocks/Organizing /en-US/docs/Learn_web_development/Core/Styling_basics/Organizing +/en-US/docs/Learn/CSS/Building_blocks/Overflow_Tasks /en-US/docs/Learn_web_development/Core/Styling_basics/Overflow_Tasks +/en-US/docs/Learn/CSS/Building_blocks/Overflowing_content /en-US/docs/Learn_web_development/Core/Styling_basics/Overflow +/en-US/docs/Learn/CSS/Building_blocks/Selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors +/en-US/docs/Learn/CSS/Building_blocks/Selectors/Attribute_selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Attribute_selectors +/en-US/docs/Learn/CSS/Building_blocks/Selectors/Combinators /en-US/docs/Learn_web_development/Core/Styling_basics/Combinators +/en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements /en-US/docs/Learn_web_development/Core/Styling_basics/Pseudo_classes_and_elements +/en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseuso-classes_and_Pseudo-elements /en-US/docs/Learn_web_development/Core/Styling_basics/Pseudo_classes_and_elements +/en-US/docs/Learn/CSS/Building_blocks/Selectors/Selectors_Tasks /en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors/Selectors_Tasks +/en-US/docs/Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors +/en-US/docs/Learn/CSS/Building_blocks/Selectors/Writing_Modes_Tasks /en-US/docs/Learn_web_development/Core/Styling_basics/Writing_Modes_Tasks +/en-US/docs/Learn/CSS/Building_blocks/Sizing_items_in_CSS /en-US/docs/Learn_web_development/Core/Styling_basics/Sizing +/en-US/docs/Learn/CSS/Building_blocks/Sizing_tasks /en-US/docs/Learn_web_development/Core/Styling_basics/Sizing_tasks +/en-US/docs/Learn/CSS/Building_blocks/Styling_tables /en-US/docs/Learn_web_development/Core/Styling_basics/Tables +/en-US/docs/Learn/CSS/Building_blocks/Tables_tasks /en-US/docs/Learn_web_development/Core/Styling_basics/Tables_tasks +/en-US/docs/Learn/CSS/Building_blocks/Test_your_skills_backgrounds_and_borders /en-US/docs/Learn_web_development/Core/Styling_basics/Test_your_skills_backgrounds_and_borders +/en-US/docs/Learn/CSS/Building_blocks/The_box_model /en-US/docs/Learn_web_development/Core/Styling_basics/Box_model +/en-US/docs/Learn/CSS/Building_blocks/Values_and_units /en-US/docs/Learn_web_development/Core/Styling_basics/Values_and_units +/en-US/docs/Learn/CSS/Building_blocks/Values_tasks /en-US/docs/Learn_web_development/Core/Styling_basics/Values_tasks +/en-US/docs/Learn/CSS/Building_blocks/Writing_Modes_Tasks /en-US/docs/Learn_web_development/Core/Styling_basics/Writing_Modes_Tasks +/en-US/docs/Learn/CSS/CSS_layout /en-US/docs/Learn_web_development/Core/CSS_layout +/en-US/docs/Learn/CSS/CSS_layout/Flexbox /en-US/docs/Learn_web_development/Core/CSS_layout/Flexbox +/en-US/docs/Learn/CSS/CSS_layout/Flexbox_skills /en-US/docs/Learn_web_development/Core/CSS_layout/Flexbox_skills +/en-US/docs/Learn/CSS/CSS_layout/Floats /en-US/docs/Learn_web_development/Core/CSS_layout/Floats +/en-US/docs/Learn/CSS/CSS_layout/Floats_skills /en-US/docs/Learn_web_development/Core/CSS_layout/Floats_skills +/en-US/docs/Learn/CSS/CSS_layout/Fundamental_Layout_Comprehension /en-US/docs/Learn_web_development/Core/CSS_layout/Fundamental_Layout_Comprehension +/en-US/docs/Learn/CSS/CSS_layout/Grid_skills /en-US/docs/Learn_web_development/Core/CSS_layout/Grid_skills +/en-US/docs/Learn/CSS/CSS_layout/Grids /en-US/docs/Learn_web_development/Core/CSS_layout/Grids +/en-US/docs/Learn/CSS/CSS_layout/Introduction /en-US/docs/Learn_web_development/Core/CSS_layout/Introduction +/en-US/docs/Learn/CSS/CSS_layout/Legacy_Layout_Methods /en-US/docs/Learn_web_development/Core/CSS_layout/Legacy_Layout_Methods +/en-US/docs/Learn/CSS/CSS_layout/Media_queries /en-US/docs/Learn_web_development/Core/CSS_layout/Media_queries +/en-US/docs/Learn/CSS/CSS_layout/Multicol_skills /en-US/docs/Learn_web_development/Core/CSS_layout/Multicol_skills +/en-US/docs/Learn/CSS/CSS_layout/Multiple-column_Layout /en-US/docs/Learn_web_development/Core/CSS_layout/Multiple-column_Layout +/en-US/docs/Learn/CSS/CSS_layout/Normal_Flow /en-US/docs/Learn_web_development/Core/CSS_layout/Introduction +/en-US/docs/Learn/CSS/CSS_layout/Position_skills /en-US/docs/Learn_web_development/Core/CSS_layout/Position_skills +/en-US/docs/Learn/CSS/CSS_layout/Positioning /en-US/docs/Learn_web_development/Core/CSS_layout/Positioning +/en-US/docs/Learn/CSS/CSS_layout/Practical_positioning_examples /en-US/docs/Learn_web_development/Core/CSS_layout/Practical_positioning_examples +/en-US/docs/Learn/CSS/CSS_layout/Responsive_Design /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Learn/CSS/CSS_layout/Supporting_Older_Browsers /en-US/docs/Learn_web_development/Core/CSS_layout/Supporting_Older_Browsers +/en-US/docs/Learn/CSS/CSS_layout/Using_Media_Queries /en-US/docs/Learn_web_development/Core/CSS_layout/Media_queries +/en-US/docs/Learn/CSS/CSS_layout/rwd_skills /en-US/docs/Learn_web_development/Core/CSS_layout/rwd_skills +/en-US/docs/Learn/CSS/CSS_properties /en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors +/en-US/docs/Learn/CSS/First_steps /en-US/docs/Learn_web_development/Core/Styling_basics +/en-US/docs/Learn/CSS/First_steps/Getting_started /en-US/docs/Learn_web_development/Core/Styling_basics/Getting_started +/en-US/docs/Learn/CSS/First_steps/How_CSS_is_structured /en-US/docs/Learn_web_development/Core/Styling_basics/Getting_started +/en-US/docs/Learn/CSS/First_steps/How_CSS_works /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/Learn/CSS/First_steps/Styling_a_biography_page /en-US/docs/Learn_web_development/Core/Styling_basics/Styling_a_bio_page +/en-US/docs/Learn/CSS/First_steps/Using_your_new_knowledge /en-US/docs/Learn_web_development/Core/Styling_basics/Styling_a_bio_page +/en-US/docs/Learn/CSS/First_steps/What_is_CSS /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/Learn/CSS/Howto /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems +/en-US/docs/Learn/CSS/Howto/Add_a_shadow /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Add_a_shadow +/en-US/docs/Learn/CSS/Howto/Add_a_text_shadow /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Add_a_text_shadow +/en-US/docs/Learn/CSS/Howto/CSS_FAQ /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/CSS_FAQ +/en-US/docs/Learn/CSS/Howto/Center_an_item /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Center_an_item +/en-US/docs/Learn/CSS/Howto/Create_fancy_boxes /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Create_fancy_boxes +/en-US/docs/Learn/CSS/Howto/Fill_a_box_with_an_image /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Fill_a_box_with_an_image +/en-US/docs/Learn/CSS/Howto/Generated_content /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Generated_content +/en-US/docs/Learn/CSS/Howto/Highlight_first_line /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Highlight_first_line +/en-US/docs/Learn/CSS/Howto/Highlight_first_para /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Highlight_first_para +/en-US/docs/Learn/CSS/Howto/Highlight_para_after_h1 /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Highlight_para_after_h1 +/en-US/docs/Learn/CSS/Howto/Make_box_transparent /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Make_box_transparent +/en-US/docs/Learn/CSS/Howto/Transition_button /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Transition_button +/en-US/docs/Learn/CSS/Howto/customize_a_list /en-US/docs/Learn_web_development/Core/Text_styling/Styling_lists +/en-US/docs/Learn/CSS/Howto/style_text /en-US/docs/Learn_web_development/Core/Text_styling/Fundamentals +/en-US/docs/Learn/CSS/Introduction_to_CSS /en-US/docs/Learn_web_development/Core/Styling_basics +/en-US/docs/Learn/CSS/Introduction_to_CSS/Attribute_selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Attribute_selectors +/en-US/docs/Learn/CSS/Introduction_to_CSS/Box_model /en-US/docs/Learn_web_development/Core/Styling_basics/Box_model +/en-US/docs/Learn/CSS/Introduction_to_CSS/CSS_values /en-US/docs/Learn_web_development/Core/Styling_basics/Values_and_units +/en-US/docs/Learn/CSS/Introduction_to_CSS/Cascade_and_inheritance /en-US/docs/Learn_web_development/Core/Styling_basics/Handling_conflicts +/en-US/docs/Learn/CSS/Introduction_to_CSS/Combinators_and_multiple_selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Combinators +/en-US/docs/Learn/CSS/Introduction_to_CSS/Debugging_CSS /en-US/docs/Learn_web_development/Core/Styling_basics/Debugging_CSS +/en-US/docs/Learn/CSS/Introduction_to_CSS/Fundamental_CSS_comprehension /en-US/docs/Learn_web_development/Core/Styling_basics/Fundamental_CSS_comprehension +/en-US/docs/Learn/CSS/Introduction_to_CSS/How_CSS_works /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/Learn/CSS/Introduction_to_CSS/Pseudo-classes_and_pseudo-elements /en-US/docs/Learn_web_development/Core/Styling_basics/Pseudo_classes_and_elements +/en-US/docs/Learn/CSS/Introduction_to_CSS/Selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors +/en-US/docs/Learn/CSS/Introduction_to_CSS/Selectors/Attribute_selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Attribute_selectors +/en-US/docs/Learn/CSS/Introduction_to_CSS/Selectors/Combinators_and_multiple_selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Combinators +/en-US/docs/Learn/CSS/Introduction_to_CSS/Selectors/Pseudo-classes_and_pseudo-elements /en-US/docs/Learn_web_development/Core/Styling_basics/Pseudo_classes_and_elements +/en-US/docs/Learn/CSS/Introduction_to_CSS/Syntax /en-US/docs/Learn_web_development/Core/Styling_basics/Getting_started +/en-US/docs/Learn/CSS/Introduction_to_CSS/Values /en-US/docs/Learn_web_development/Core/Styling_basics/Values_and_units +/en-US/docs/Learn/CSS/Introduction_to_CSS/Values_and_units /en-US/docs/Learn_web_development/Core/Styling_basics/Values_and_units +/en-US/docs/Learn/CSS/Styling_boxes /en-US/docs/Learn_web_development/Core/Styling_basics +/en-US/docs/Learn/CSS/Styling_boxes/A_cool_information_box /en-US/docs/Learn_web_development/Core/Styling_basics/Cool-looking_box +/en-US/docs/Learn/CSS/Styling_boxes/A_cool_looking_box /en-US/docs/Learn_web_development/Core/Styling_basics/Cool-looking_box +/en-US/docs/Learn/CSS/Styling_boxes/Advanced_box_effects /en-US/docs/Learn_web_development/Core/Styling_basics/Advanced_styling_effects +/en-US/docs/Learn/CSS/Styling_boxes/Backgrounds /en-US/docs/Learn_web_development/Core/Styling_basics/Backgrounds_and_borders +/en-US/docs/Learn/CSS/Styling_boxes/Borders /en-US/docs/Learn_web_development/Core/Styling_basics/Backgrounds_and_borders +/en-US/docs/Learn/CSS/Styling_boxes/Box_model_recap /en-US/docs/Learn_web_development/Core/Styling_basics/Box_model +/en-US/docs/Learn/CSS/Styling_boxes/Creating_fancy_letterheaded_paper /en-US/docs/Learn_web_development/Core/Styling_basics/Fancy_letterheaded_paper +/en-US/docs/Learn/CSS/Styling_boxes/Styling_tables /en-US/docs/Learn_web_development/Core/Styling_basics/Tables +/en-US/docs/Learn/CSS/Styling_text /en-US/docs/Learn_web_development/Core/Text_styling +/en-US/docs/Learn/CSS/Styling_text/Fundamentals /en-US/docs/Learn_web_development/Core/Text_styling/Fundamentals +/en-US/docs/Learn/CSS/Styling_text/Styling_links /en-US/docs/Learn_web_development/Core/Text_styling/Styling_links +/en-US/docs/Learn/CSS/Styling_text/Styling_lists /en-US/docs/Learn_web_development/Core/Text_styling/Styling_lists +/en-US/docs/Learn/CSS/Styling_text/Typesetting_a_homepage /en-US/docs/Learn_web_development/Core/Text_styling/Typesetting_a_homepage +/en-US/docs/Learn/CSS/Styling_text/Web_fonts /en-US/docs/Learn_web_development/Core/Text_styling/Web_fonts +/en-US/docs/Learn/CSS/Using_CSS_in_a_web_page /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/Learn/Checking_that_your_web_site_is_working_properly /en-US/docs/Learn_web_development/Howto/Tools_and_setup/Checking_that_your_web_site_is_working_properly +/en-US/docs/Learn/Choose,_Install_and_set_up_a_text_editor /en-US/docs/Learn_web_development/Howto/Tools_and_setup/Available_text_editors +/en-US/docs/Learn/Client-side_web_APIs /en-US/docs/Learn_web_development/Extensions/Client-side_APIs +/en-US/docs/Learn/Coding-Scripting /en-US/docs/Learn_web_development +/en-US/docs/Learn/Common_questions /en-US/docs/Learn_web_development/Howto +/en-US/docs/Learn/Common_questions/Available_text_editors /en-US/docs/Learn_web_development/Howto/Tools_and_setup/Available_text_editors +/en-US/docs/Learn/Common_questions/Checking_that_your_web_site_is_working_properly /en-US/docs/Learn_web_development/Howto/Tools_and_setup/Checking_that_your_web_site_is_working_properly +/en-US/docs/Learn/Common_questions/Common_web_layouts /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/Common_web_layouts +/en-US/docs/Learn/Common_questions/Design_and_accessibility /en-US/docs/Learn_web_development/Howto/Design_and_accessibility +/en-US/docs/Learn/Common_questions/Design_and_accessibility/Common_web_layouts /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/Common_web_layouts +/en-US/docs/Learn/Common_questions/Design_and_accessibility/Design_for_all_types_of_users /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/Design_for_all_types_of_users +/en-US/docs/Learn/Common_questions/Design_and_accessibility/HTML_features_for_accessibility /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/HTML_features_for_accessibility +/en-US/docs/Learn/Common_questions/Design_and_accessibility/Thinking_before_coding /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/Thinking_before_coding +/en-US/docs/Learn/Common_questions/Design_and_accessibility/What_is_accessibility /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/What_is_accessibility +/en-US/docs/Learn/Common_questions/Design_for_all_types_of_users /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/Design_for_all_types_of_users +/en-US/docs/Learn/Common_questions/HTML_features_for_accessibility /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/HTML_features_for_accessibility +/en-US/docs/Learn/Common_questions/How_do_you_host_your_website_on_Google_App_Engine /en-US/docs/Learn_web_development/Howto/Tools_and_setup/How_do_you_host_your_website_on_Google_App_Engine +/en-US/docs/Learn/Common_questions/How_do_you_host_your_website_on_Google_App_Engine /en-US/docs/Learn_web_development/Howto/Tools_and_setup/How_do_you_host_your_website_on_Google_App_Engine +/en-US/docs/Learn/Common_questions/How_does_the_Internet_work /en-US/docs/Learn_web_development/Howto/Web_mechanics/How_does_the_Internet_work +/en-US/docs/Learn/Common_questions/How_much_does_it_cost /en-US/docs/Learn_web_development/Howto/Tools_and_setup/How_much_does_it_cost +/en-US/docs/Learn/Common_questions/Pages_sites_servers_and_search_engines /en-US/docs/Learn_web_development/Getting_started/Environment_setup/Browsing_the_web +/en-US/docs/Learn/Common_questions/Set_up_a_basic_working_environment /en-US/docs/Learn_web_development/Howto/Tools_and_setup/set_up_a_local_testing_server +/en-US/docs/Learn/Common_questions/Thinking_before_coding /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/Thinking_before_coding +/en-US/docs/Learn/Common_questions/Tools_and_setup /en-US/docs/Learn_web_development/Howto/Tools_and_setup +/en-US/docs/Learn/Common_questions/Tools_and_setup/Available_text_editors /en-US/docs/Learn_web_development/Howto/Tools_and_setup/Available_text_editors +/en-US/docs/Learn/Common_questions/Tools_and_setup/Checking_that_your_web_site_is_working_properly /en-US/docs/Learn_web_development/Howto/Tools_and_setup/Checking_that_your_web_site_is_working_properly +/en-US/docs/Learn/Common_questions/Tools_and_setup/How_do_you_host_your_website_on_Google_App_Engine /en-US/docs/Learn_web_development/Howto/Tools_and_setup/How_do_you_host_your_website_on_Google_App_Engine +/en-US/docs/Learn/Common_questions/Tools_and_setup/How_much_does_it_cost /en-US/docs/Learn_web_development/Howto/Tools_and_setup/How_much_does_it_cost +/en-US/docs/Learn/Common_questions/Tools_and_setup/Upload_files_to_a_web_server /en-US/docs/Learn_web_development/Howto/Tools_and_setup/Upload_files_to_a_web_server +/en-US/docs/Learn/Common_questions/Tools_and_setup/Using_GitHub_pages /en-US/docs/Learn_web_development/Howto/Tools_and_setup/Using_GitHub_pages +/en-US/docs/Learn/Common_questions/Tools_and_setup/What_are_browser_developer_tools /en-US/docs/Learn_web_development/Howto/Tools_and_setup/What_are_browser_developer_tools +/en-US/docs/Learn/Common_questions/Tools_and_setup/What_software_do_I_need /en-US/docs/Learn_web_development/Howto/Tools_and_setup/What_software_do_I_need +/en-US/docs/Learn/Common_questions/Tools_and_setup/set_up_a_local_testing_server /en-US/docs/Learn_web_development/Howto/Tools_and_setup/set_up_a_local_testing_server +/en-US/docs/Learn/Common_questions/Upload_files_to_a_web_server /en-US/docs/Learn_web_development/Howto/Tools_and_setup/Upload_files_to_a_web_server +/en-US/docs/Learn/Common_questions/Using_Github_pages /en-US/docs/Learn_web_development/Howto/Tools_and_setup/Using_GitHub_pages +/en-US/docs/Learn/Common_questions/Web_mechanics /en-US/docs/Learn_web_development/Howto/Web_mechanics +/en-US/docs/Learn/Common_questions/Web_mechanics/How_does_the_Internet_work /en-US/docs/Learn_web_development/Howto/Web_mechanics/How_does_the_Internet_work +/en-US/docs/Learn/Common_questions/Web_mechanics/Pages_sites_servers_and_search_engines /en-US/docs/Learn_web_development/Getting_started/Environment_setup/Browsing_the_web +/en-US/docs/Learn/Common_questions/Web_mechanics/What_are_hyperlinks /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_are_hyperlinks +/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_URL +/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_domain_name /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_domain_name +/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_web_server /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_web_server +/en-US/docs/Learn/Common_questions/What_are_browser_developer_tools /en-US/docs/Learn_web_development/Howto/Tools_and_setup/What_are_browser_developer_tools +/en-US/docs/Learn/Common_questions/What_are_hyperlinks /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_are_hyperlinks +/en-US/docs/Learn/Common_questions/What_is_a_URL /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_URL +/en-US/docs/Learn/Common_questions/What_is_a_domain_name /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_domain_name +/en-US/docs/Learn/Common_questions/What_is_a_web_server /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_web_server +/en-US/docs/Learn/Common_questions/What_is_accessibility /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/What_is_accessibility +/en-US/docs/Learn/Common_questions/What_software_do_I_need /en-US/docs/Learn_web_development/Howto/Tools_and_setup/What_software_do_I_need +/en-US/docs/Learn/Common_questions/set_up_a_local_testing_server /en-US/docs/Learn_web_development/Howto/Tools_and_setup/set_up_a_local_testing_server +/en-US/docs/Learn/Composing_for_the_web /en-US/docs/Learn_web_development/Howto +/en-US/docs/Learn/Design_and_Accessibility /en-US/docs/Learn_web_development/Howto +/en-US/docs/Learn/Design_for_all_types_of_users_101 /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/Design_for_all_types_of_users +/en-US/docs/Learn/Discover_browser_developer_tools /en-US/docs/Learn_web_development/Howto/Tools_and_setup/What_are_browser_developer_tools +/en-US/docs/Learn/Discover_browser_development_tools /en-US/docs/Learn_web_development/Howto/Tools_and_setup/What_are_browser_developer_tools +/en-US/docs/Learn/Drafts /en-US/docs/Learn_web_development +/en-US/docs/Learn/Drafts/Python /en-US/docs/Learn_web_development/Extensions/Server-side/Django +/en-US/docs/Learn/Drafts/Python/First_steps /en-US/docs/Learn_web_development/Extensions/Server-side/Django +/en-US/docs/Learn/Dynamic_Websites_–_Server-side_website_programming /en-US/docs/Learn_web_development/Extensions/Server-side +/en-US/docs/Learn/Forms /en-US/docs/Learn_web_development/Extensions/Forms +/en-US/docs/Learn/Forms/Advanced_form_styling /en-US/docs/Learn_web_development/Extensions/Forms/Advanced_form_styling +/en-US/docs/Learn/Forms/Advanced_styling_for_HTML_forms /en-US/docs/Learn_web_development/Extensions/Forms/Advanced_form_styling +/en-US/docs/Learn/Forms/Basic_native_form_controls /en-US/docs/Learn_web_development/Extensions/Forms/Basic_native_form_controls +/en-US/docs/Learn/Forms/Form_validation /en-US/docs/Learn_web_development/Extensions/Forms/Form_validation +/en-US/docs/Learn/Forms/HTML5_input_types /en-US/docs/Learn_web_development/Extensions/Forms/HTML5_input_types +/en-US/docs/Learn/Forms/HTML_forms_in_legacy_browsers /en-US/docs/Learn_web_development/Extensions/Forms/HTML_forms_in_legacy_browsers +/en-US/docs/Learn/Forms/How_to_build_custom_form_controls /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls +/en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_1 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_1 +/en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_2 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_2 +/en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_3 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_3 +/en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_4 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_4 +/en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_5 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_5 +/en-US/docs/Learn/Forms/How_to_build_custom_form_widgets /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls +/en-US/docs/Learn/Forms/How_to_build_custom_form_widgets/Example_1 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_1 +/en-US/docs/Learn/Forms/How_to_build_custom_form_widgets/Example_2 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_2 +/en-US/docs/Learn/Forms/How_to_build_custom_form_widgets/Example_3 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_3 +/en-US/docs/Learn/Forms/How_to_build_custom_form_widgets/Example_4 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_4 +/en-US/docs/Learn/Forms/How_to_build_custom_form_widgets/Example_5 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_5 +/en-US/docs/Learn/Forms/How_to_structure_a_web_form /en-US/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form +/en-US/docs/Learn/Forms/How_to_structure_a_web_form/Example /en-US/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form/Example +/en-US/docs/Learn/Forms/How_to_structure_an_HTML_form /en-US/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form +/en-US/docs/Learn/Forms/How_to_structure_an_HTML_form/Example /en-US/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form/Example +/en-US/docs/Learn/Forms/Other_form_controls /en-US/docs/Learn_web_development/Extensions/Forms/Other_form_controls +/en-US/docs/Learn/Forms/Property_compatibility_table_for_form_controls /en-US/docs/Learn_web_development/Extensions/Forms +/en-US/docs/Learn/Forms/Property_compatibility_table_for_form_widgets /en-US/docs/Learn_web_development/Extensions/Forms +/en-US/docs/Learn/Forms/Sending_and_retrieving_form_data /en-US/docs/Learn_web_development/Extensions/Forms/Sending_and_retrieving_form_data +/en-US/docs/Learn/Forms/Sending_forms_through_JavaScript /en-US/docs/Learn_web_development/Extensions/Forms/Sending_forms_through_JavaScript +/en-US/docs/Learn/Forms/Styling_HTML_forms /en-US/docs/Learn_web_development/Extensions/Forms/Styling_web_forms +/en-US/docs/Learn/Forms/Styling_web_forms /en-US/docs/Learn_web_development/Extensions/Forms/Styling_web_forms +/en-US/docs/Learn/Forms/Test_your_skills:_Advanced_styling /en-US/docs/Learn_web_development/Extensions/Forms/Test_your_skills:_Advanced_styling +/en-US/docs/Learn/Forms/Test_your_skills:_Basic_controls /en-US/docs/Learn_web_development/Extensions/Forms/Test_your_skills:_Basic_controls +/en-US/docs/Learn/Forms/Test_your_skills:_Form_structure /en-US/docs/Learn_web_development/Extensions/Forms/Test_your_skills:_Form_structure +/en-US/docs/Learn/Forms/Test_your_skills:_Form_validation /en-US/docs/Learn_web_development/Extensions/Forms/Test_your_skills:_Form_validation +/en-US/docs/Learn/Forms/Test_your_skills:_HTML5_controls /en-US/docs/Learn_web_development/Extensions/Forms/Test_your_skills:_HTML5_controls +/en-US/docs/Learn/Forms/Test_your_skills:_Other_controls /en-US/docs/Learn_web_development/Extensions/Forms/Test_your_skills:_Other_controls +/en-US/docs/Learn/Forms/Test_your_skills:_Styling_basics /en-US/docs/Learn_web_development/Extensions/Forms/Test_your_skills:_Styling_basics +/en-US/docs/Learn/Forms/UI_pseudo-classes /en-US/docs/Learn_web_development/Extensions/Forms/UI_pseudo-classes +/en-US/docs/Learn/Forms/User_input_methods /en-US/docs/Learn_web_development/Extensions/Forms/User_input_methods +/en-US/docs/Learn/Forms/Your_first_HTML_form /en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form +/en-US/docs/Learn/Forms/Your_first_HTML_form/Example /en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form +/en-US/docs/Learn/Forms/Your_first_form /en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form +/en-US/docs/Learn/Forms/Your_first_form/Example /en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form /en-US/docs/Learn/Front-end_web_developer https://developer.mozilla.org/en-US/curriculum/ -/en-US/docs/Learn/Getting_started_with_the_web/How_to_set_up_your_work_environment /en-US/docs/Learn/Getting_started_with_the_web/Installing_basic_software -/en-US/docs/Learn/Getting_started_with_the_web/Publishing_your_web_site /en-US/docs/Learn/Getting_started_with_the_web/Publishing_your_website -/en-US/docs/Learn/Getting_started_with_the_web/What_should_your_web_site_be_like /en-US/docs/Learn/Getting_started_with_the_web/What_will_your_website_look_like -/en-US/docs/Learn/GitHub /en-US/docs/Learn/Tools_and_testing/GitHub -/en-US/docs/Learn/HTML/Element /en-US/docs/Learn/HTML/Howto -/en-US/docs/Learn/HTML/Element/abbr /en-US/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting#Abbreviations -/en-US/docs/Learn/HTML/Forms /en-US/docs/Learn/Forms -/en-US/docs/Learn/HTML/Forms/Additional_form_controls /en-US/docs/Learn/Forms/Other_form_controls -/en-US/docs/Learn/HTML/Forms/Advanced_styling_for_HTML_forms /en-US/docs/Learn/Forms/Advanced_form_styling -/en-US/docs/Learn/HTML/Forms/Basic_native_form_controls /en-US/docs/Learn/Forms/Basic_native_form_controls -/en-US/docs/Learn/HTML/Forms/Data_form_validation /en-US/docs/Learn/Forms/Form_validation -/en-US/docs/Learn/HTML/Forms/Form_validation /en-US/docs/Learn/Forms/Form_validation -/en-US/docs/Learn/HTML/Forms/HTML5_input_types /en-US/docs/Learn/Forms/HTML5_input_types -/en-US/docs/Learn/HTML/Forms/HTML_forms_in_legacy_browsers /en-US/docs/Learn/Forms/HTML_forms_in_legacy_browsers -/en-US/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets /en-US/docs/Learn/Forms/How_to_build_custom_form_controls -/en-US/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_1 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_1 -/en-US/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_2 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_2 -/en-US/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_3 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_3 -/en-US/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_4 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_4 -/en-US/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_5 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_5 -/en-US/docs/Learn/HTML/Forms/How_to_structure_an_HTML_form /en-US/docs/Learn/Forms/How_to_structure_a_web_form -/en-US/docs/Learn/HTML/Forms/How_to_structure_an_HTML_form/Example /en-US/docs/Learn/Forms/How_to_structure_a_web_form/Example -/en-US/docs/Learn/HTML/Forms/My_first_HTML_form /en-US/docs/Learn/Forms/Your_first_form -/en-US/docs/Learn/HTML/Forms/My_first_HTML_form/Example /en-US/docs/Learn/Forms/Your_first_form -/en-US/docs/Learn/HTML/Forms/Other_form_controls /en-US/docs/Learn/Forms/Other_form_controls -/en-US/docs/Learn/HTML/Forms/Property_compatibility_table_for_form_widgets /en-US/docs/Learn/Forms/Property_compatibility_table_for_form_controls -/en-US/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data /en-US/docs/Learn/Forms/Sending_and_retrieving_form_data -/en-US/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript /en-US/docs/Learn/Forms/Sending_forms_through_JavaScript -/en-US/docs/Learn/HTML/Forms/Styling_HTML_forms /en-US/docs/Learn/Forms/Styling_web_forms -/en-US/docs/Learn/HTML/Forms/The_native_form_widgets /en-US/docs/Learn/Forms/Basic_native_form_controls -/en-US/docs/Learn/HTML/Forms/UI_pseudo-classes /en-US/docs/Learn/Forms/UI_pseudo-classes -/en-US/docs/Learn/HTML/Forms/Your_first_HTML_form /en-US/docs/Learn/Forms/Your_first_form -/en-US/docs/Learn/HTML/Forms/Your_first_HTML_form/Example /en-US/docs/Learn/Forms/Your_first_form -/en-US/docs/Learn/HTML/HTML_tags /en-US/docs/Learn/HTML/Introduction_to_HTML -/en-US/docs/Learn/HTML/Howto/Add_Flash_content_within_a_webpage /en-US/docs/Learn/HTML/Multimedia_and_embedding/Other_embedding_technologies#The__and__elements -/en-US/docs/Learn/HTML/Howto/Add_audio_or_video_content_to_a_webpage /en-US/docs/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content -/en-US/docs/Learn/HTML/Howto/Add_citations_to_webpages /en-US/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting#Quotations -/en-US/docs/Learn/HTML/Howto/Add_images_to_a_webpage /en-US/docs/Learn/HTML/Multimedia_and_embedding/Images_in_HTML#How_do_we_put_an_image_on_a_webpage -/en-US/docs/Learn/HTML/Howto/Add_responsive_image_to_a_webpage /en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images -/en-US/docs/Learn/HTML/Howto/Add_vector_image_to_a_webpage /en-US/docs/Learn/HTML/Multimedia_and_embedding/Adding_vector_graphics_to_the_Web -/en-US/docs/Learn/HTML/Howto/Annotate_images_and_graphics /en-US/docs/Learn/HTML/Multimedia_and_embedding/Images_in_HTML#Annotating_images_with_figures_and_figure_captions -/en-US/docs/Learn/HTML/Howto/Create_a_basic_HTML_document /en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started -/en-US/docs/Learn/HTML/Howto/Create_a_hyperlink /en-US/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks -/en-US/docs/Learn/HTML/Howto/Create_list_of_items_with_HTML /en-US/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals#Lists -/en-US/docs/Learn/HTML/Howto/Display_computer_code_with_HTML /en-US/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting#Representing_computer_code -/en-US/docs/Learn/HTML/Howto/Divide_a_webpage_into_logical_sections /en-US/docs/Learn/HTML/Introduction_to_HTML/Document_and_website_structure -/en-US/docs/Learn/HTML/Howto/Embed_a_webpage_within_another_webpage /en-US/docs/Learn/HTML/Multimedia_and_embedding/Other_embedding_technologies -/en-US/docs/Learn/HTML/Howto/Emphasize_content_or_indicate_that_text_is_important /en-US/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals#Emphasis_and_importance -/en-US/docs/Learn/HTML/Howto/Mark_abbreviations_and_make_them_understandable /en-US/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting#Abbreviations -/en-US/docs/Learn/HTML/Howto/Set_up_a_proper_title_hierarchy /en-US/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals -/en-US/docs/Learn/HTML/Howto/abbr /en-US/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting#Abbreviations -/en-US/docs/Learn/HTML/Introduction_to_HTML/The_HTML_head /en-US/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML -/en-US/docs/Learn/HTML/Tables/Structing_planet_data /en-US/docs/Learn/HTML/Tables/Structuring_planet_data -/en-US/docs/Learn/HTML/Write_a_simple_page_in_HTML /en-US/docs/Learn/Getting_started_with_the_web +/en-US/docs/Learn/Getting_started_with_the_web /en-US/docs/Learn_web_development/Getting_started/Your_first_website +/en-US/docs/Learn/Getting_started_with_the_web/CSS_basics /en-US/docs/Learn_web_development/Getting_started/Your_first_website/Styling_the_content +/en-US/docs/Learn/Getting_started_with_the_web/Dealing_with_files /en-US/docs/Learn_web_development/Getting_started/Environment_setup/Dealing_with_files +/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics /en-US/docs/Learn_web_development/Getting_started/Your_first_website/Creating_the_content +/en-US/docs/Learn/Getting_started_with_the_web/How_the_Web_works /en-US/docs/Learn_web_development/Getting_started/Web_standards/How_the_web_works +/en-US/docs/Learn/Getting_started_with_the_web/How_to_set_up_your_work_environment /en-US/docs/Learn_web_development/Getting_started/Environment_setup/Installing_software +/en-US/docs/Learn/Getting_started_with_the_web/Installing_basic_software /en-US/docs/Learn_web_development/Getting_started/Environment_setup/Installing_software +/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics /en-US/docs/Learn_web_development/Getting_started/Your_first_website/Adding_interactivity +/en-US/docs/Learn/Getting_started_with_the_web/Publishing_your_web_site /en-US/docs/Learn_web_development/Getting_started/Your_first_website/Publishing_your_website +/en-US/docs/Learn/Getting_started_with_the_web/Publishing_your_website /en-US/docs/Learn_web_development/Getting_started/Your_first_website/Publishing_your_website +/en-US/docs/Learn/Getting_started_with_the_web/The_web_and_web_standards /en-US/docs/Learn_web_development/Getting_started/Web_standards/The_web_standards_model +/en-US/docs/Learn/Getting_started_with_the_web/What_should_your_web_site_be_like /en-US/docs/Learn_web_development/Getting_started/Your_first_website/What_will_your_website_look_like +/en-US/docs/Learn/Getting_started_with_the_web/What_will_your_website_look_like /en-US/docs/Learn_web_development/Getting_started/Your_first_website/What_will_your_website_look_like +/en-US/docs/Learn/GitHub /en-US/docs/Learn_web_development/Core/Version_control +/en-US/docs/Learn/HTML /en-US/docs/Learn_web_development/Core/Structuring_content +/en-US/docs/Learn/HTML/Cheatsheet /en-US/docs/Learn_web_development/Howto/Solve_HTML_problems/Cheatsheet +/en-US/docs/Learn/HTML/Element /en-US/docs/Learn_web_development/Howto/Solve_HTML_problems +/en-US/docs/Learn/HTML/Element/abbr /en-US/docs/Learn_web_development/Core/Structuring_content/Advanced_text_features#Abbreviations +/en-US/docs/Learn/HTML/Forms /en-US/docs/Learn_web_development/Extensions/Forms +/en-US/docs/Learn/HTML/Forms/Additional_form_controls /en-US/docs/Learn_web_development/Extensions/Forms/Other_form_controls +/en-US/docs/Learn/HTML/Forms/Advanced_styling_for_HTML_forms /en-US/docs/Learn_web_development/Extensions/Forms/Advanced_form_styling +/en-US/docs/Learn/HTML/Forms/Basic_native_form_controls /en-US/docs/Learn_web_development/Extensions/Forms/Basic_native_form_controls +/en-US/docs/Learn/HTML/Forms/Data_form_validation /en-US/docs/Learn_web_development/Extensions/Forms/Form_validation +/en-US/docs/Learn/HTML/Forms/Form_validation /en-US/docs/Learn_web_development/Extensions/Forms/Form_validation +/en-US/docs/Learn/HTML/Forms/HTML5_input_types /en-US/docs/Learn_web_development/Extensions/Forms/HTML5_input_types +/en-US/docs/Learn/HTML/Forms/HTML_forms_in_legacy_browsers /en-US/docs/Learn_web_development/Extensions/Forms/HTML_forms_in_legacy_browsers +/en-US/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls +/en-US/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_1 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_1 +/en-US/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_2 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_2 +/en-US/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_3 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_3 +/en-US/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_4 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_4 +/en-US/docs/Learn/HTML/Forms/How_to_build_custom_form_widgets/Example_5 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_5 +/en-US/docs/Learn/HTML/Forms/How_to_structure_an_HTML_form /en-US/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form +/en-US/docs/Learn/HTML/Forms/How_to_structure_an_HTML_form/Example /en-US/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form/Example +/en-US/docs/Learn/HTML/Forms/My_first_HTML_form /en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form +/en-US/docs/Learn/HTML/Forms/My_first_HTML_form/Example /en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form +/en-US/docs/Learn/HTML/Forms/Other_form_controls /en-US/docs/Learn_web_development/Extensions/Forms/Other_form_controls +/en-US/docs/Learn/HTML/Forms/Property_compatibility_table_for_form_widgets /en-US/docs/Learn_web_development/Extensions/Forms +/en-US/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data /en-US/docs/Learn_web_development/Extensions/Forms/Sending_and_retrieving_form_data +/en-US/docs/Learn/HTML/Forms/Sending_forms_through_JavaScript /en-US/docs/Learn_web_development/Extensions/Forms/Sending_forms_through_JavaScript +/en-US/docs/Learn/HTML/Forms/Styling_HTML_forms /en-US/docs/Learn_web_development/Extensions/Forms/Styling_web_forms +/en-US/docs/Learn/HTML/Forms/The_native_form_widgets /en-US/docs/Learn_web_development/Extensions/Forms/Basic_native_form_controls +/en-US/docs/Learn/HTML/Forms/UI_pseudo-classes /en-US/docs/Learn_web_development/Extensions/Forms/UI_pseudo-classes +/en-US/docs/Learn/HTML/Forms/Your_first_HTML_form /en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form +/en-US/docs/Learn/HTML/Forms/Your_first_HTML_form/Example /en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form +/en-US/docs/Learn/HTML/HTML_tags /en-US/docs/Learn_web_development/Core/Structuring_content +/en-US/docs/Learn/HTML/Howto /en-US/docs/Learn_web_development/Howto/Solve_HTML_problems +/en-US/docs/Learn/HTML/Howto/Add_Flash_content_within_a_webpage /en-US/docs/Learn_web_development/Core/Structuring_content/General_embedding_technologies#The__and__elements +/en-US/docs/Learn/HTML/Howto/Add_a_hit_map_on_top_of_an_image /en-US/docs/Learn_web_development/Howto/Solve_HTML_problems/Add_a_hit_map_on_top_of_an_image +/en-US/docs/Learn/HTML/Howto/Add_audio_or_video_content_to_a_webpage /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_video_and_audio +/en-US/docs/Learn/HTML/Howto/Add_citations_to_webpages /en-US/docs/Learn_web_development/Core/Structuring_content/Advanced_text_features#Quotations +/en-US/docs/Learn/HTML/Howto/Add_images_to_a_webpage /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_images#How_do_we_put_an_image_on_a_webpage +/en-US/docs/Learn/HTML/Howto/Add_responsive_image_to_a_webpage /en-US/docs/Web/HTML/Responsive_images +/en-US/docs/Learn/HTML/Howto/Add_vector_image_to_a_webpage /en-US/docs/Learn_web_development/Core/Structuring_content/Including_vector_graphics_in_HTML +/en-US/docs/Learn/HTML/Howto/Annotate_images_and_graphics /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_images#Annotating_images_with_figures_and_figure_captions +/en-US/docs/Learn/HTML/Howto/Author_fast-loading_HTML_pages /en-US/docs/Learn_web_development/Howto/Solve_HTML_problems/Author_fast-loading_HTML_pages +/en-US/docs/Learn/HTML/Howto/Create_a_basic_HTML_document /en-US/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax +/en-US/docs/Learn/HTML/Howto/Create_a_hyperlink /en-US/docs/Learn_web_development/Core/Structuring_content/Creating_links +/en-US/docs/Learn/HTML/Howto/Create_list_of_items_with_HTML /en-US/docs/Learn_web_development/Core/Structuring_content/Headings_and_paragraphs#Lists +/en-US/docs/Learn/HTML/Howto/Define_terms_with_HTML /en-US/docs/Learn_web_development/Howto/Solve_HTML_problems/Define_terms_with_HTML +/en-US/docs/Learn/HTML/Howto/Display_computer_code_with_HTML /en-US/docs/Learn_web_development/Core/Structuring_content/Advanced_text_features#Representing_computer_code +/en-US/docs/Learn/HTML/Howto/Divide_a_webpage_into_logical_sections /en-US/docs/Learn_web_development/Core/Structuring_content/Structuring_documents +/en-US/docs/Learn/HTML/Howto/Embed_a_webpage_within_another_webpage /en-US/docs/Learn_web_development/Core/Structuring_content/General_embedding_technologies +/en-US/docs/Learn/HTML/Howto/Emphasize_content_or_indicate_that_text_is_important /en-US/docs/Learn_web_development/Core/Structuring_content/Headings_and_paragraphs#Emphasis_and_importance +/en-US/docs/Learn/HTML/Howto/Mark_abbreviations_and_make_them_understandable /en-US/docs/Learn_web_development/Core/Structuring_content/Advanced_text_features#Abbreviations +/en-US/docs/Learn/HTML/Howto/Set_up_a_proper_title_hierarchy /en-US/docs/Learn_web_development/Core/Structuring_content/Headings_and_paragraphs +/en-US/docs/Learn/HTML/Howto/Use_JavaScript_within_a_webpage /en-US/docs/Learn_web_development/Howto/Solve_HTML_problems/Use_JavaScript_within_a_webpage +/en-US/docs/Learn/HTML/Howto/Use_data_attributes /en-US/docs/Learn_web_development/Howto/Solve_HTML_problems/Use_data_attributes +/en-US/docs/Learn/HTML/Howto/abbr /en-US/docs/Learn_web_development/Core/Structuring_content/Advanced_text_features#Abbreviations +/en-US/docs/Learn/HTML/Introduction_to_HTML /en-US/docs/Learn_web_development/Core/Structuring_content +/en-US/docs/Learn/HTML/Introduction_to_HTML/Advanced_text_formatting /en-US/docs/Learn_web_development/Core/Structuring_content/Advanced_text_features +/en-US/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks /en-US/docs/Learn_web_development/Core/Structuring_content/Creating_links +/en-US/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML /en-US/docs/Learn_web_development/Core/Structuring_content/Debugging_HTML +/en-US/docs/Learn/HTML/Introduction_to_HTML/Document_and_website_structure /en-US/docs/Learn_web_development/Core/Structuring_content/Structuring_documents +/en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started /en-US/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax +/en-US/docs/Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals /en-US/docs/Learn_web_development/Core/Structuring_content/Headings_and_paragraphs +/en-US/docs/Learn/HTML/Introduction_to_HTML/Marking_up_a_letter /en-US/docs/Learn_web_development/Core/Structuring_content/Marking_up_a_letter +/en-US/docs/Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content /en-US/docs/Learn_web_development/Core/Structuring_content/Structuring_a_page_of_content +/en-US/docs/Learn/HTML/Introduction_to_HTML/Test_your_skills:_Advanced_HTML_text /en-US/docs/Learn_web_development/Core/Structuring_content/Test_your_skills:_Advanced_HTML_text +/en-US/docs/Learn/HTML/Introduction_to_HTML/Test_your_skills:_HTML_text_basics /en-US/docs/Learn_web_development/Core/Structuring_content/Test_your_skills:_HTML_text_basics +/en-US/docs/Learn/HTML/Introduction_to_HTML/Test_your_skills:_Links /en-US/docs/Learn_web_development/Core/Structuring_content/Test_your_skills:_Links +/en-US/docs/Learn/HTML/Introduction_to_HTML/The_HTML_head /en-US/docs/Learn_web_development/Core/Structuring_content/Webpage_metadata +/en-US/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML /en-US/docs/Learn_web_development/Core/Structuring_content/Webpage_metadata +/en-US/docs/Learn/HTML/Multimedia_and_embedding /en-US/docs/Learn_web_development/Core/Structuring_content +/en-US/docs/Learn/HTML/Multimedia_and_embedding/Adding_vector_graphics_to_the_Web /en-US/docs/Learn_web_development/Core/Structuring_content/Including_vector_graphics_in_HTML +/en-US/docs/Learn/HTML/Multimedia_and_embedding/Images_in_HTML /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_images +/en-US/docs/Learn/HTML/Multimedia_and_embedding/Images_in_HTML/Test_your_skills:_HTML_images /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_images/Test_your_skills:_HTML_images +/en-US/docs/Learn/HTML/Multimedia_and_embedding/Mozilla_splash_page /en-US/docs/Learn_web_development/Core/Structuring_content/Mozilla_splash_page +/en-US/docs/Learn/HTML/Multimedia_and_embedding/Other_embedding_technologies /en-US/docs/Learn_web_development/Core/Structuring_content/General_embedding_technologies +/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images /en-US/docs/Web/HTML/Responsive_images +/en-US/docs/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_video_and_audio +/en-US/docs/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content/Test_your_skills:_Multimedia_and_embedding /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_video_and_audio/Test_your_skills:_Multimedia_and_embedding +/en-US/docs/Learn/HTML/Tables /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_table_basics +/en-US/docs/Learn/HTML/Tables/Advanced /en-US/docs/Learn_web_development/Core/Structuring_content/Table_accessibility +/en-US/docs/Learn/HTML/Tables/Basics /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_table_basics +/en-US/docs/Learn/HTML/Tables/Structing_planet_data /en-US/docs/Learn_web_development/Core/Structuring_content/Planet_data_table +/en-US/docs/Learn/HTML/Tables/Structuring_planet_data /en-US/docs/Learn_web_development/Core/Structuring_content/Planet_data_table +/en-US/docs/Learn/HTML/Write_a_simple_page_in_HTML /en-US/docs/Learn_web_development/Getting_started/Your_first_website /en-US/docs/Learn/HTML/XHTML /en-US/docs/Glossary/XHTML -/en-US/docs/Learn/How_TCP_IP_works /en-US/docs/Learn/Common_questions/Web_mechanics/How_does_the_Internet_work -/en-US/docs/Learn/How_much_does_it_cost /en-US/docs/Learn/Common_questions/Tools_and_setup/How_much_does_it_cost -/en-US/docs/Learn/How_networks_talk_with_each_other /en-US/docs/Learn/Common_questions/Web_mechanics/How_does_the_Internet_work -/en-US/docs/Learn/How_the_Internet_works /en-US/docs/Learn/Common_questions/Web_mechanics/How_does_the_Internet_work -/en-US/docs/Learn/How_to_create_an_HTML_document /en-US/docs/Learn/Getting_started_with_the_web -/en-US/docs/Learn/How_web_pages_work /en-US/docs/Learn/Common_questions/Web_mechanics/Pages_sites_servers_and_search_engines -/en-US/docs/Learn/Index /en-US/docs/Learn -/en-US/docs/Learn/Infrastructure /en-US/docs/Learn/Common_questions -/en-US/docs/Learn/JavaScript/Asynchronous/Async_await /en-US/docs/Learn/JavaScript/Asynchronous/Promises -/en-US/docs/Learn/JavaScript/Asynchronous/Async_loops_and_intervals /en-US/docs/Learn/JavaScript/Asynchronous -/en-US/docs/Learn/JavaScript/Asynchronous/Choosing_the_right_approach /en-US/docs/Learn/JavaScript/Asynchronous -/en-US/docs/Learn/JavaScript/Asynchronous/Concepts /en-US/docs/Learn/JavaScript/Asynchronous/Introducing -/en-US/docs/Learn/JavaScript/Asynchronous/Loops_and_intervals /en-US/docs/Learn/JavaScript/Asynchronous -/en-US/docs/Learn/JavaScript/Asynchronous/Timeouts_and_intervals /en-US/docs/Learn/JavaScript/Asynchronous -/en-US/docs/Learn/JavaScript/Asynchronous_JavaScript /en-US/docs/Learn/JavaScript/Asynchronous -/en-US/docs/Learn/JavaScript/Building_blocks/Functions/Build_your_own_function /en-US/docs/Learn/JavaScript/Building_blocks/Build_your_own_function -/en-US/docs/Learn/JavaScript/Building_blocks/Functions/Return_values /en-US/docs/Learn/JavaScript/Building_blocks/Return_values -/en-US/docs/Learn/JavaScript/First_steps/Maths /en-US/docs/Learn/JavaScript/First_steps/Math -/en-US/docs/Learn/JavaScript/How_to /en-US/docs/Learn/JavaScript/Howto -/en-US/docs/Learn/JavaScript/Introduction_to_JavaScript_1 /en-US/docs/Learn/JavaScript/First_steps -/en-US/docs/Learn/JavaScript/Introduction_to_JavaScript_1/A_first_splash /en-US/docs/Learn/JavaScript/First_steps/A_first_splash -/en-US/docs/Learn/JavaScript/Introduction_to_JavaScript_1/Maths /en-US/docs/Learn/JavaScript/First_steps/Math -/en-US/docs/Learn/JavaScript/Introduction_to_JavaScript_1/Variables /en-US/docs/Learn/JavaScript/First_steps/Variables -/en-US/docs/Learn/JavaScript/Introduction_to_JavaScript_1/What_is_JavaScript /en-US/docs/Learn/JavaScript/First_steps/What_is_JavaScript -/en-US/docs/Learn/JavaScript/Introduction_to_JavaScript_1/What_went_wrong /en-US/docs/Learn/JavaScript/First_steps/What_went_wrong -/en-US/docs/Learn/JavaScript/JavaScript_building_blocks /en-US/docs/Learn/JavaScript/Building_blocks -/en-US/docs/Learn/JavaScript/Object-oriented /en-US/docs/Learn/JavaScript/Objects -/en-US/docs/Learn/JavaScript/Object-oriented/Advanced /en-US/docs/Learn/JavaScript/Objects/Classes_in_JavaScript -/en-US/docs/Learn/JavaScript/Object-oriented/Introduction /en-US/docs/Learn/JavaScript/Objects/Basics -/en-US/docs/Learn/JavaScript/Object-oriented/Introduction_to_objects /en-US/docs/Learn/JavaScript/Objects/Basics -/en-US/docs/Learn/JavaScript/Objects/Advanced /en-US/docs/Learn/JavaScript/Objects/Classes_in_JavaScript -/en-US/docs/Learn/JavaScript/Objects/Inheritance /en-US/docs/Learn/JavaScript/Objects/Classes_in_JavaScript -/en-US/docs/Learn/JavaScript/Objects/Introduction /en-US/docs/Learn/JavaScript/Objects/Basics -/en-US/docs/Learn/JavaScript/Objects/Object-oriented_JS /en-US/docs/Learn/JavaScript/Objects/Classes_in_JavaScript -/en-US/docs/Learn/JavaScript/Objects/Object_building_practise /en-US/docs/Learn/JavaScript/Objects/Object_building_practice -/en-US/docs/Learn/Open_a_file_in_a_browser /en-US/docs/Learn/Getting_started_with_the_web/Dealing_with_files -/en-US/docs/Learn/Other_learning_material /en-US/docs/Learn -/en-US/docs/Learn/Pages_sites_servers_and_search_engines /en-US/docs/Learn/Common_questions/Web_mechanics/Pages_sites_servers_and_search_engines +/en-US/docs/Learn/How_TCP_IP_works /en-US/docs/Learn_web_development/Howto/Web_mechanics/How_does_the_Internet_work +/en-US/docs/Learn/How_much_does_it_cost /en-US/docs/Learn_web_development/Howto/Tools_and_setup/How_much_does_it_cost +/en-US/docs/Learn/How_networks_talk_with_each_other /en-US/docs/Learn_web_development/Howto/Web_mechanics/How_does_the_Internet_work +/en-US/docs/Learn/How_the_Internet_works /en-US/docs/Learn_web_development/Howto/Web_mechanics/How_does_the_Internet_work +/en-US/docs/Learn/How_to_create_an_HTML_document /en-US/docs/Learn_web_development/Getting_started/Your_first_website +/en-US/docs/Learn/How_web_pages_work /en-US/docs/Learn_web_development/Getting_started/Environment_setup/Browsing_the_web +/en-US/docs/Learn/Index /en-US/docs/Learn_web_development +/en-US/docs/Learn/Infrastructure /en-US/docs/Learn_web_development/Howto +/en-US/docs/Learn/JavaScript /en-US/docs/Learn_web_development/Core/Scripting +/en-US/docs/Learn/JavaScript/Asynchronous /en-US/docs/Learn_web_development/Extensions/Async_JS +/en-US/docs/Learn/JavaScript/Asynchronous/Async_await /en-US/docs/Learn_web_development/Extensions/Async_JS/Promises +/en-US/docs/Learn/JavaScript/Asynchronous/Async_loops_and_intervals /en-US/docs/Learn_web_development/Extensions/Async_JS +/en-US/docs/Learn/JavaScript/Asynchronous/Choosing_the_right_approach /en-US/docs/Learn_web_development/Extensions/Async_JS +/en-US/docs/Learn/JavaScript/Asynchronous/Concepts /en-US/docs/Learn_web_development/Extensions/Async_JS/Introducing +/en-US/docs/Learn/JavaScript/Asynchronous/Implementing_a_promise-based_API /en-US/docs/Learn_web_development/Extensions/Async_JS/Implementing_a_promise-based_API +/en-US/docs/Learn/JavaScript/Asynchronous/Introducing /en-US/docs/Learn_web_development/Extensions/Async_JS/Introducing +/en-US/docs/Learn/JavaScript/Asynchronous/Introducing_workers /en-US/docs/Learn_web_development/Extensions/Async_JS/Introducing_workers +/en-US/docs/Learn/JavaScript/Asynchronous/Loops_and_intervals /en-US/docs/Learn_web_development/Extensions/Async_JS +/en-US/docs/Learn/JavaScript/Asynchronous/Promises /en-US/docs/Learn_web_development/Extensions/Async_JS/Promises +/en-US/docs/Learn/JavaScript/Asynchronous/Sequencing_animations /en-US/docs/Learn_web_development/Extensions/Async_JS/Sequencing_animations +/en-US/docs/Learn/JavaScript/Asynchronous/Timeouts_and_intervals /en-US/docs/Learn_web_development/Extensions/Async_JS +/en-US/docs/Learn/JavaScript/Asynchronous_JavaScript /en-US/docs/Learn_web_development/Extensions/Async_JS +/en-US/docs/Learn/JavaScript/Building_blocks /en-US/docs/Learn_web_development/Core/Scripting +/en-US/docs/Learn/JavaScript/Building_blocks/Build_your_own_function /en-US/docs/Learn_web_development/Core/Scripting/Build_your_own_function +/en-US/docs/Learn/JavaScript/Building_blocks/Event_bubbling /en-US/docs/Learn_web_development/Core/Scripting/Event_bubbling +/en-US/docs/Learn/JavaScript/Building_blocks/Events /en-US/docs/Learn_web_development/Core/Scripting/Events +/en-US/docs/Learn/JavaScript/Building_blocks/Functions /en-US/docs/Learn_web_development/Core/Scripting/Functions +/en-US/docs/Learn/JavaScript/Building_blocks/Functions/Build_your_own_function /en-US/docs/Learn_web_development/Core/Scripting/Build_your_own_function +/en-US/docs/Learn/JavaScript/Building_blocks/Functions/Return_values /en-US/docs/Learn_web_development/Core/Scripting/Return_values +/en-US/docs/Learn/JavaScript/Building_blocks/Image_gallery /en-US/docs/Learn_web_development/Core/Scripting/Image_gallery +/en-US/docs/Learn/JavaScript/Building_blocks/Looping_code /en-US/docs/Learn_web_development/Core/Scripting/Loops +/en-US/docs/Learn/JavaScript/Building_blocks/Return_values /en-US/docs/Learn_web_development/Core/Scripting/Return_values +/en-US/docs/Learn/JavaScript/Building_blocks/Test_your_skills:_Conditionals /en-US/docs/Learn_web_development/Core/Scripting/Test_your_skills:_Conditionals +/en-US/docs/Learn/JavaScript/Building_blocks/Test_your_skills:_Events /en-US/docs/Learn_web_development/Core/Scripting/Test_your_skills:_Events +/en-US/docs/Learn/JavaScript/Building_blocks/Test_your_skills:_Functions /en-US/docs/Learn_web_development/Core/Scripting/Test_your_skills:_Functions +/en-US/docs/Learn/JavaScript/Building_blocks/Test_your_skills:_Loops /en-US/docs/Learn_web_development/Core/Scripting/Test_your_skills:_Loops +/en-US/docs/Learn/JavaScript/Building_blocks/conditionals /en-US/docs/Learn_web_development/Core/Scripting/Conditionals +/en-US/docs/Learn/JavaScript/Client-side_web_APIs /en-US/docs/Learn_web_development/Extensions/Client-side_APIs +/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Client-side_storage /en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Client-side_storage +/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Drawing_graphics /en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Drawing_graphics +/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data /en-US/docs/Learn_web_development/Core/Scripting/Network_requests +/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Introduction /en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Introduction +/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents /en-US/docs/Learn_web_development/Core/Scripting/DOM_scripting +/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Third_party_APIs /en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Third_party_APIs +/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Video_and_audio_APIs /en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Video_and_audio_APIs +/en-US/docs/Learn/JavaScript/First_steps /en-US/docs/Learn_web_development/Core/Scripting +/en-US/docs/Learn/JavaScript/First_steps/A_first_splash /en-US/docs/Learn_web_development/Core/Scripting/A_first_splash +/en-US/docs/Learn/JavaScript/First_steps/Arrays /en-US/docs/Learn_web_development/Core/Scripting/Arrays +/en-US/docs/Learn/JavaScript/First_steps/Math /en-US/docs/Learn_web_development/Core/Scripting/Math +/en-US/docs/Learn/JavaScript/First_steps/Maths /en-US/docs/Learn_web_development/Core/Scripting/Math +/en-US/docs/Learn/JavaScript/First_steps/Silly_story_generator /en-US/docs/Learn_web_development/Core/Scripting/Silly_story_generator +/en-US/docs/Learn/JavaScript/First_steps/Strings /en-US/docs/Learn_web_development/Core/Scripting/Strings +/en-US/docs/Learn/JavaScript/First_steps/Test_your_skills:_Arrays /en-US/docs/Learn_web_development/Core/Scripting/Test_your_skills:_Arrays +/en-US/docs/Learn/JavaScript/First_steps/Test_your_skills:_Math /en-US/docs/Learn_web_development/Core/Scripting/Test_your_skills:_Math +/en-US/docs/Learn/JavaScript/First_steps/Test_your_skills:_Strings /en-US/docs/Learn_web_development/Core/Scripting/Test_your_skills:_Strings +/en-US/docs/Learn/JavaScript/First_steps/Test_your_skills:_variables /en-US/docs/Learn_web_development/Core/Scripting/Test_your_skills:_variables +/en-US/docs/Learn/JavaScript/First_steps/Useful_string_methods /en-US/docs/Learn_web_development/Core/Scripting/Useful_string_methods +/en-US/docs/Learn/JavaScript/First_steps/Variables /en-US/docs/Learn_web_development/Core/Scripting/Variables +/en-US/docs/Learn/JavaScript/First_steps/What_is_JavaScript /en-US/docs/Learn_web_development/Core/Scripting/What_is_JavaScript +/en-US/docs/Learn/JavaScript/First_steps/What_went_wrong /en-US/docs/Learn_web_development/Core/Scripting/What_went_wrong +/en-US/docs/Learn/JavaScript/How_to /en-US/docs/Learn_web_development/Howto/Solve_JavaScript_problems +/en-US/docs/Learn/JavaScript/Howto /en-US/docs/Learn_web_development/Howto/Solve_JavaScript_problems +/en-US/docs/Learn/JavaScript/Introduction_to_JavaScript_1 /en-US/docs/Learn_web_development/Core/Scripting +/en-US/docs/Learn/JavaScript/Introduction_to_JavaScript_1/A_first_splash /en-US/docs/Learn_web_development/Core/Scripting/A_first_splash +/en-US/docs/Learn/JavaScript/Introduction_to_JavaScript_1/Maths /en-US/docs/Learn_web_development/Core/Scripting/Math +/en-US/docs/Learn/JavaScript/Introduction_to_JavaScript_1/Variables /en-US/docs/Learn_web_development/Core/Scripting/Variables +/en-US/docs/Learn/JavaScript/Introduction_to_JavaScript_1/What_is_JavaScript /en-US/docs/Learn_web_development/Core/Scripting/What_is_JavaScript +/en-US/docs/Learn/JavaScript/Introduction_to_JavaScript_1/What_went_wrong /en-US/docs/Learn_web_development/Core/Scripting/What_went_wrong +/en-US/docs/Learn/JavaScript/JavaScript_building_blocks /en-US/docs/Learn_web_development/Core/Scripting +/en-US/docs/Learn/JavaScript/Object-oriented /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects +/en-US/docs/Learn/JavaScript/Object-oriented/Advanced /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Classes_in_JavaScript +/en-US/docs/Learn/JavaScript/Object-oriented/Introduction /en-US/docs/Learn_web_development/Core/Scripting/Object_basics +/en-US/docs/Learn/JavaScript/Object-oriented/Introduction_to_objects /en-US/docs/Learn_web_development/Core/Scripting/Object_basics +/en-US/docs/Learn/JavaScript/Objects /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects +/en-US/docs/Learn/JavaScript/Objects/Adding_bouncing_balls_features /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Adding_bouncing_balls_features +/en-US/docs/Learn/JavaScript/Objects/Advanced /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Classes_in_JavaScript +/en-US/docs/Learn/JavaScript/Objects/Basics /en-US/docs/Learn_web_development/Core/Scripting/Object_basics +/en-US/docs/Learn/JavaScript/Objects/Classes_in_JavaScript /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Classes_in_JavaScript +/en-US/docs/Learn/JavaScript/Objects/Inheritance /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Classes_in_JavaScript +/en-US/docs/Learn/JavaScript/Objects/Introduction /en-US/docs/Learn_web_development/Core/Scripting/Object_basics +/en-US/docs/Learn/JavaScript/Objects/JSON /en-US/docs/Learn_web_development/Core/Scripting/JSON +/en-US/docs/Learn/JavaScript/Objects/Object-oriented_JS /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Classes_in_JavaScript +/en-US/docs/Learn/JavaScript/Objects/Object-oriented_programming /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Object-oriented_programming +/en-US/docs/Learn/JavaScript/Objects/Object_building_practice /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Object_building_practice +/en-US/docs/Learn/JavaScript/Objects/Object_building_practise /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Object_building_practice +/en-US/docs/Learn/JavaScript/Objects/Object_prototypes /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Object_prototypes +/en-US/docs/Learn/JavaScript/Objects/Test_your_skills:_JSON /en-US/docs/Learn_web_development/Core/Scripting/Test_your_skills:_JSON +/en-US/docs/Learn/JavaScript/Objects/Test_your_skills:_Object-oriented_JavaScript /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Test_your_skills:_Object-oriented_JavaScript +/en-US/docs/Learn/JavaScript/Objects/Test_your_skills:_Object_basics /en-US/docs/Learn_web_development/Core/Scripting/Test_your_skills:_Object_basics +/en-US/docs/Learn/Learning_and_getting_help /en-US/docs/Learn_web_development/Getting_started/Soft_skills/Learning_and_getting_help +/en-US/docs/Learn/MathML /en-US/docs/Web/MathML +/en-US/docs/Learn/MathML/First_steps /en-US/docs/Web/MathML/Guides +/en-US/docs/Learn/MathML/First_steps/Fractions_and_roots /en-US/docs/Web/MathML/Guides/Fractions_and_roots +/en-US/docs/Learn/MathML/First_steps/Getting_started /en-US/docs/Web/MathML/Guides/Getting_started +/en-US/docs/Learn/MathML/First_steps/Scripts /en-US/docs/Web/MathML/Guides/Scripts +/en-US/docs/Learn/MathML/First_steps/Tables /en-US/docs/Web/MathML/Guides/Tables +/en-US/docs/Learn/MathML/First_steps/Text_containers /en-US/docs/Web/MathML/Guides/Text_containers +/en-US/docs/Learn/MathML/First_steps/Three_famous_mathematical_formulas /en-US/docs/Web/MathML/Guides/Three_famous_mathematical_formulas +/en-US/docs/Learn/Open_a_file_in_a_browser /en-US/docs/Learn_web_development/Getting_started/Environment_setup/Dealing_with_files +/en-US/docs/Learn/Other_learning_material /en-US/docs/Learn_web_development +/en-US/docs/Learn/Pages_sites_servers_and_search_engines /en-US/docs/Learn_web_development/Getting_started/Environment_setup/Browsing_the_web +/en-US/docs/Learn/Performance /en-US/docs/Learn_web_development/Extensions/Performance /en-US/docs/Learn/Performance/Animation_performance_and_frame_rate /en-US/docs/Web/Performance/Animation_performance_and_frame_rate -/en-US/docs/Learn/Performance/CSS_performance /en-US/docs/Learn/Performance/CSS -/en-US/docs/Learn/Performance/HTML_Performance_Features /en-US/docs/Learn/Performance/HTML +/en-US/docs/Learn/Performance/CSS /en-US/docs/Learn_web_development/Extensions/Performance/CSS +/en-US/docs/Learn/Performance/CSS_performance /en-US/docs/Learn_web_development/Extensions/Performance/CSS +/en-US/docs/Learn/Performance/HTML /en-US/docs/Learn_web_development/Extensions/Performance/HTML +/en-US/docs/Learn/Performance/HTML_Performance_Features /en-US/docs/Learn_web_development/Extensions/Performance/HTML /en-US/docs/Learn/Performance/How_long_is_too_long /en-US/docs/Web/Performance/How_long_is_too_long +/en-US/docs/Learn/Performance/JavaScript /en-US/docs/Learn_web_development/Extensions/Performance/JavaScript /en-US/docs/Learn/Performance/Lazy_loading /en-US/docs/Web/Performance/Lazy_loading +/en-US/docs/Learn/Performance/Measuring_performance /en-US/docs/Learn_web_development/Extensions/Performance/Measuring_performance +/en-US/docs/Learn/Performance/Multimedia /en-US/docs/Learn_web_development/Extensions/Performance/Multimedia +/en-US/docs/Learn/Performance/Perceived_performance /en-US/docs/Learn_web_development/Extensions/Performance/Perceived_performance /en-US/docs/Learn/Performance/Populating_the_page:_how_browsers_work /en-US/docs/Web/Performance/How_browsers_work /en-US/docs/Learn/Performance/Understanding_latency /en-US/docs/Web/Performance/Understanding_latency -/en-US/docs/Learn/Performance/Web_performance_overview /en-US/docs/Learn/Performance/What_is_web_performance +/en-US/docs/Learn/Performance/Web_Performance_Basics /en-US/docs/Learn_web_development/Extensions/Performance/Web_Performance_Basics +/en-US/docs/Learn/Performance/Web_performance_overview /en-US/docs/Learn_web_development/Extensions/Performance/What_is_web_performance +/en-US/docs/Learn/Performance/What_is_web_performance /en-US/docs/Learn_web_development/Extensions/Performance/What_is_web_performance +/en-US/docs/Learn/Performance/business_case_for_performance /en-US/docs/Learn_web_development/Extensions/Performance/business_case_for_performance /en-US/docs/Learn/Performance/dns-prefetch /en-US/docs/Web/Performance/dns-prefetch -/en-US/docs/Learn/Performance/javascript_performance /en-US/docs/Learn/Performance/JavaScript -/en-US/docs/Learn/Python /en-US/docs/Learn/Server-side/Django -/en-US/docs/Learn/Python/First_steps /en-US/docs/Learn/Server-side/Django -/en-US/docs/Learn/Release_notes /en-US/docs/Learn -/en-US/docs/Learn/Server-side/Django/Django_Tutorial_(5__):_Index_page_using_a_function /en-US/docs/Learn/Server-side/Django/Home_page -/en-US/docs/Learn/Server-side/Django/authentication_and_sessions /en-US/docs/Learn/Server-side/Django/Authentication -/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/flow_control_using_async /en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data -/en-US/docs/Learn/Server-side/Server-side_website_programming_first_steps /en-US/docs/Learn/Server-side/First_steps -/en-US/docs/Learn/Set_up_a_basic_working_environment /en-US/docs/Learn/Common_questions/Tools_and_setup/set_up_a_local_testing_server -/en-US/docs/Learn/Skills/Coding-Scripting /en-US/docs/Learn -/en-US/docs/Learn/Skills/Composing_for_the_web /en-US/docs/Learn/Common_questions -/en-US/docs/Learn/Skills/Design_and_Accessibility /en-US/docs/Learn/Common_questions -/en-US/docs/Learn/Skills/Infrastructure /en-US/docs/Learn/Common_questions -/en-US/docs/Learn/Skills/Infrastructure/Understanding_URLs /en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL -/en-US/docs/Learn/Skills/Web_Mechanics /en-US/docs/Learn/Common_questions -/en-US/docs/Learn/Thinking_before_coding /en-US/docs/Learn/Common_questions/Design_and_accessibility/Thinking_before_coding -/en-US/docs/Learn/Understanding_URLs /en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL -/en-US/docs/Learn/Understanding_domain_names /en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_domain_name -/en-US/docs/Learn/Understanding_links_on_the_web /en-US/docs/Learn/Common_questions/Web_mechanics/What_are_hyperlinks -/en-US/docs/Learn/Upload_files_to_a_web_server /en-US/docs/Learn/Common_questions/Tools_and_setup/Upload_files_to_a_web_server -/en-US/docs/Learn/Using_Github_pages /en-US/docs/Learn/Common_questions/Tools_and_setup/Using_GitHub_pages +/en-US/docs/Learn/Performance/javascript_performance /en-US/docs/Learn_web_development/Extensions/Performance/JavaScript +/en-US/docs/Learn/Performance/video /en-US/docs/Learn_web_development/Extensions/Performance/video +/en-US/docs/Learn/Performance/why_web_performance /en-US/docs/Learn_web_development/Extensions/Performance/why_web_performance +/en-US/docs/Learn/Python /en-US/docs/Learn_web_development/Extensions/Server-side/Django +/en-US/docs/Learn/Python/First_steps /en-US/docs/Learn_web_development/Extensions/Server-side/Django +/en-US/docs/Learn/Release_notes /en-US/docs/Learn_web_development +/en-US/docs/Learn/Server-side /en-US/docs/Learn_web_development/Extensions/Server-side +/en-US/docs/Learn/Server-side/Apache_Configuration_htaccess /en-US/docs/Learn_web_development/Extensions/Server-side/Apache_Configuration_htaccess +/en-US/docs/Learn/Server-side/Configuring_server_MIME_types /en-US/docs/Learn_web_development/Extensions/Server-side/Configuring_server_MIME_types +/en-US/docs/Learn/Server-side/Django /en-US/docs/Learn_web_development/Extensions/Server-side/Django +/en-US/docs/Learn/Server-side/Django/Admin_site /en-US/docs/Learn_web_development/Extensions/Server-side/Django/Admin_site +/en-US/docs/Learn/Server-side/Django/Authentication /en-US/docs/Learn_web_development/Extensions/Server-side/Django/Authentication +/en-US/docs/Learn/Server-side/Django/Deployment /en-US/docs/Learn_web_development/Extensions/Server-side/Django/Deployment +/en-US/docs/Learn/Server-side/Django/Django_Tutorial_(5__):_Index_page_using_a_function /en-US/docs/Learn_web_development/Extensions/Server-side/Django/Home_page +/en-US/docs/Learn/Server-side/Django/Forms /en-US/docs/Learn_web_development/Extensions/Server-side/Django/Forms +/en-US/docs/Learn/Server-side/Django/Generic_views /en-US/docs/Learn_web_development/Extensions/Server-side/Django/Generic_views +/en-US/docs/Learn/Server-side/Django/Home_page /en-US/docs/Learn_web_development/Extensions/Server-side/Django/Home_page +/en-US/docs/Learn/Server-side/Django/Introduction /en-US/docs/Learn_web_development/Extensions/Server-side/Django/Introduction +/en-US/docs/Learn/Server-side/Django/Models /en-US/docs/Learn_web_development/Extensions/Server-side/Django/Models +/en-US/docs/Learn/Server-side/Django/Sessions /en-US/docs/Learn_web_development/Extensions/Server-side/Django/Sessions +/en-US/docs/Learn/Server-side/Django/Testing /en-US/docs/Learn_web_development/Extensions/Server-side/Django/Testing +/en-US/docs/Learn/Server-side/Django/Tutorial_local_library_website /en-US/docs/Learn_web_development/Extensions/Server-side/Django/Tutorial_local_library_website +/en-US/docs/Learn/Server-side/Django/authentication_and_sessions /en-US/docs/Learn_web_development/Extensions/Server-side/Django/Authentication +/en-US/docs/Learn/Server-side/Django/development_environment /en-US/docs/Learn_web_development/Extensions/Server-side/Django/development_environment +/en-US/docs/Learn/Server-side/Django/django_assessment_blog /en-US/docs/Learn_web_development/Extensions/Server-side/Django/django_assessment_blog +/en-US/docs/Learn/Server-side/Django/skeleton_website /en-US/docs/Learn_web_development/Extensions/Server-side/Django/skeleton_website +/en-US/docs/Learn/Server-side/Django/web_application_security /en-US/docs/Learn_web_development/Extensions/Server-side/Django/web_application_security +/en-US/docs/Learn/Server-side/Express_Nodejs /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs +/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data +/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/Author_detail_page /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Author_detail_page +/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/Author_list_page /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Author_list_page +/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/BookInstance_detail_page_and_challenge /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/BookInstance_detail_page_and_challenge +/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/BookInstance_list_page /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/BookInstance_list_page +/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/Book_detail_page /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Book_detail_page +/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/Book_list_page /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Book_list_page +/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/Date_formatting_using_moment /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Date_formatting_using_moment +/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/Genre_detail_page /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Genre_detail_page +/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/Home_page /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Home_page +/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/LocalLibrary_base_template /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/LocalLibrary_base_template +/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/Template_primer /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Template_primer +/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/flow_control_using_async /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data +/en-US/docs/Learn/Server-side/Express_Nodejs/Introduction /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Introduction +/en-US/docs/Learn/Server-side/Express_Nodejs/Tutorial_local_library_website /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/Tutorial_local_library_website +/en-US/docs/Learn/Server-side/Express_Nodejs/deployment /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/deployment +/en-US/docs/Learn/Server-side/Express_Nodejs/development_environment /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/development_environment +/en-US/docs/Learn/Server-side/Express_Nodejs/forms /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/forms +/en-US/docs/Learn/Server-side/Express_Nodejs/forms/Create_BookInstance_form /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/forms/Create_BookInstance_form +/en-US/docs/Learn/Server-side/Express_Nodejs/forms/Create_author_form /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/forms/Create_author_form +/en-US/docs/Learn/Server-side/Express_Nodejs/forms/Create_book_form /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/forms/Create_book_form +/en-US/docs/Learn/Server-side/Express_Nodejs/forms/Create_genre_form /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/forms/Create_genre_form +/en-US/docs/Learn/Server-side/Express_Nodejs/forms/Delete_author_form /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/forms/Delete_author_form +/en-US/docs/Learn/Server-side/Express_Nodejs/forms/Update_Book_form /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/forms/Update_Book_form +/en-US/docs/Learn/Server-side/Express_Nodejs/mongoose /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/mongoose +/en-US/docs/Learn/Server-side/Express_Nodejs/routes /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/routes +/en-US/docs/Learn/Server-side/Express_Nodejs/skeleton_website /en-US/docs/Learn_web_development/Extensions/Server-side/Express_Nodejs/skeleton_website +/en-US/docs/Learn/Server-side/First_steps /en-US/docs/Learn_web_development/Extensions/Server-side/First_steps +/en-US/docs/Learn/Server-side/First_steps/Client-Server_overview /en-US/docs/Learn_web_development/Extensions/Server-side/First_steps/Client-Server_overview +/en-US/docs/Learn/Server-side/First_steps/Introduction /en-US/docs/Learn_web_development/Extensions/Server-side/First_steps/Introduction +/en-US/docs/Learn/Server-side/First_steps/Web_frameworks /en-US/docs/Learn_web_development/Extensions/Server-side/First_steps/Web_frameworks +/en-US/docs/Learn/Server-side/First_steps/Website_security /en-US/docs/Learn_web_development/Extensions/Server-side/First_steps/Website_security +/en-US/docs/Learn/Server-side/Node_server_without_framework /en-US/docs/Learn_web_development/Extensions/Server-side/Node_server_without_framework +/en-US/docs/Learn/Server-side/Server-side_website_programming_first_steps /en-US/docs/Learn_web_development/Extensions/Server-side/First_steps +/en-US/docs/Learn/Set_up_a_basic_working_environment /en-US/docs/Learn_web_development/Howto/Tools_and_setup/set_up_a_local_testing_server +/en-US/docs/Learn/Skills/Coding-Scripting /en-US/docs/Learn_web_development +/en-US/docs/Learn/Skills/Composing_for_the_web /en-US/docs/Learn_web_development/Howto +/en-US/docs/Learn/Skills/Design_and_Accessibility /en-US/docs/Learn_web_development/Howto +/en-US/docs/Learn/Skills/Infrastructure /en-US/docs/Learn_web_development/Howto +/en-US/docs/Learn/Skills/Infrastructure/Understanding_URLs /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_URL +/en-US/docs/Learn/Skills/Web_Mechanics /en-US/docs/Learn_web_development/Howto +/en-US/docs/Learn/Thinking_before_coding /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/Thinking_before_coding +/en-US/docs/Learn/Tools_and_testing /en-US/docs/Learn_web_development/Extensions/Testing +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks /en-US/docs/Learn_web_development/Core/Frameworks_libraries +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Angular_building /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Angular_building +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Angular_filtering /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Angular_filtering +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Angular_getting_started /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Angular_getting_started +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Angular_item_component /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Angular_item_component +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Angular_styling /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Angular_styling +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Angular_todo_list_beginning /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Angular_todo_list_beginning +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_conditional_footer /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Ember_conditional_footer +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_getting_started /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Ember_getting_started +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_interactivity_events_state /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Ember_interactivity_events_state +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_resources /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Ember_resources +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_routing /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Ember_routing +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_structure_componentization /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Ember_structure_componentization +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Introduction /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Introduction +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Main_features /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Main_features +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_accessibility /en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_accessibility +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_components /en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_components +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started /en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_getting_started +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_interactivity_events_state /en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_interactivity_events_state +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_interactivity_filtering_conditional_rendering /en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_interactivity_filtering_conditional_rendering +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_resources /en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_resources +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_todo_list_beginning /en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_todo_list_beginning +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_Todo_list_beginning /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Svelte_Todo_list_beginning +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_TypeScript /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Svelte_TypeScript +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_components /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Svelte_components +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_deployment_next /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Svelte_deployment_next +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_getting_started /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Svelte_getting_started +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_reactivity_lifecycle_accessibility /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Svelte_reactivity_lifecycle_accessibility +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_stores /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Svelte_stores +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_variables_props /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Svelte_variables_props +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_computed_properties /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Vue_computed_properties +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_conditional_rendering /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Vue_conditional_rendering +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_first_component /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Vue_first_component +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_getting_started /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Vue_getting_started +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_methods_events_models /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Vue_methods_events_models +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_refs_focus_management /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Vue_refs_focus_management +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_rendering_lists /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Vue_rendering_lists +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_resources /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Vue_resources +/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_styling /en-US/docs/Learn_web_development/Core/Frameworks_libraries/Vue_styling +/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing /en-US/docs/Learn_web_development/Extensions/Testing +/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Accessibility /en-US/docs/Learn_web_development/Core/Accessibility/Tooling +/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Automated_testing /en-US/docs/Learn_web_development/Extensions/Testing/Automated_testing +/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Feature_detection /en-US/docs/Learn_web_development/Extensions/Testing/Feature_detection +/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/HTML_and_CSS /en-US/docs/Learn_web_development/Extensions/Testing/HTML_and_CSS +/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Introduction /en-US/docs/Learn_web_development/Extensions/Testing/Introduction +/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/JavaScript /en-US/docs/Learn_web_development/Core/Scripting/Debugging_JavaScript +/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Testing_strategies /en-US/docs/Learn_web_development/Extensions/Testing/Testing_strategies +/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment /en-US/docs/Learn_web_development/Extensions/Testing/Your_own_automation_environment +/en-US/docs/Learn/Tools_and_testing/GitHub /en-US/docs/Learn_web_development/Core/Version_control +/en-US/docs/Learn/Tools_and_testing/Understanding_client-side_tools /en-US/docs/Learn_web_development/Extensions/Client-side_tools +/en-US/docs/Learn/Tools_and_testing/Understanding_client-side_tools/Command_line /en-US/docs/Learn_web_development/Getting_started/Environment_setup/Command_line +/en-US/docs/Learn/Tools_and_testing/Understanding_client-side_tools/Deployment /en-US/docs/Learn_web_development/Extensions/Client-side_tools/Deployment +/en-US/docs/Learn/Tools_and_testing/Understanding_client-side_tools/Introducing_complete_toolchain /en-US/docs/Learn_web_development/Extensions/Client-side_tools/Introducing_complete_toolchain +/en-US/docs/Learn/Tools_and_testing/Understanding_client-side_tools/Overview /en-US/docs/Learn_web_development/Extensions/Client-side_tools/Overview +/en-US/docs/Learn/Tools_and_testing/Understanding_client-side_tools/Package_management /en-US/docs/Learn_web_development/Extensions/Client-side_tools/Package_management +/en-US/docs/Learn/Understanding_URLs /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_URL +/en-US/docs/Learn/Understanding_domain_names /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_domain_name +/en-US/docs/Learn/Understanding_links_on_the_web /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_are_hyperlinks +/en-US/docs/Learn/Upload_files_to_a_web_server /en-US/docs/Learn_web_development/Howto/Tools_and_setup/Upload_files_to_a_web_server +/en-US/docs/Learn/Using_Github_pages /en-US/docs/Learn_web_development/Howto/Tools_and_setup/Using_GitHub_pages /en-US/docs/Learn/WebGL/By_example /en-US/docs/Web/API/WebGL_API/By_example /en-US/docs/Learn/WebGL/By_example/Basic_scissoring /en-US/docs/Web/API/WebGL_API/By_example/Basic_scissoring /en-US/docs/Learn/WebGL/By_example/Boilerplate_1 /en-US/docs/Web/API/WebGL_API/By_example/Boilerplate_1 @@ -5386,18 +5745,47 @@ /en-US/docs/Learn/WebGL/By_example/Simple_color_animation /en-US/docs/Web/API/WebGL_API/By_example/Simple_color_animation /en-US/docs/Learn/WebGL/By_example/Textures_from_code /en-US/docs/Web/API/WebGL_API/By_example/Textures_from_code /en-US/docs/Learn/WebGL/By_example/Video_textures /en-US/docs/Web/API/WebGL_API/By_example/Video_textures -/en-US/docs/Learn/Web_Mechanics /en-US/docs/Learn/Common_questions -/en-US/docs/Learn/What_is_AJAX_and_how_does_it_work /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data +/en-US/docs/Learn/Web_Mechanics /en-US/docs/Learn_web_development/Howto +/en-US/docs/Learn/What_is_AJAX_and_how_does_it_work /en-US/docs/Learn_web_development/Core/Scripting/Network_requests /en-US/docs/Learn/What_is_XML_and_how_it_works /en-US/docs/Web/XML/XML_introduction -/en-US/docs/Learn/What_is_a_web_server /en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_web_server -/en-US/docs/Learn/What_is_accessibility /en-US/docs/Learn/Common_questions/Design_and_accessibility/What_is_accessibility -/en-US/docs/Learn/What_software_do_I_need /en-US/docs/Learn/Common_questions/Tools_and_setup/What_software_do_I_need -/en-US/docs/Learn/page_vs_site_vs_server_vs_search_engine /en-US/docs/Learn/Common_questions/Web_mechanics/Pages_sites_servers_and_search_engines -/en-US/docs/Learn/skills /en-US/docs/Learn -/en-US/docs/Learn/skills/Infrastructure/Undersanding_URLs /en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL -/en-US/docs/Learn/tutorial /en-US/docs/Learn -/en-US/docs/Learn/tutorial/How_to_build_a_web_site /en-US/docs/Learn -/en-US/docs/Liberty!_Equality!_Validity! /en-US/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML +/en-US/docs/Learn/What_is_a_web_server /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_web_server +/en-US/docs/Learn/What_is_accessibility /en-US/docs/Learn_web_development/Howto/Design_and_accessibility/What_is_accessibility +/en-US/docs/Learn/What_software_do_I_need /en-US/docs/Learn_web_development/Howto/Tools_and_setup/What_software_do_I_need +/en-US/docs/Learn/page_vs_site_vs_server_vs_search_engine /en-US/docs/Learn_web_development/Getting_started/Environment_setup/Browsing_the_web +/en-US/docs/Learn/skills /en-US/docs/Learn_web_development +/en-US/docs/Learn/skills/Infrastructure/Undersanding_URLs /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_URL +/en-US/docs/Learn/tutorial /en-US/docs/Learn_web_development +/en-US/docs/Learn/tutorial/How_to_build_a_web_site /en-US/docs/Learn_web_development +/en-US/docs/Learn_web_development/Core/Structuring_content/Advanced_text_formatting /en-US/docs/Learn_web_development/Core/Structuring_content/Advanced_text_features +/en-US/docs/Learn_web_development/Core/Structuring_content/Creating_hyperlinks /en-US/docs/Learn_web_development/Core/Structuring_content/Creating_links +/en-US/docs/Learn_web_development/Core/Structuring_content/Document_and_website_structure /en-US/docs/Learn_web_development/Core/Structuring_content/Structuring_documents +/en-US/docs/Learn_web_development/Core/Structuring_content/Getting_started /en-US/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax +/en-US/docs/Learn_web_development/Core/Structuring_content/HTML_text_fundamentals /en-US/docs/Learn_web_development/Core/Structuring_content/Headings_and_paragraphs +/en-US/docs/Learn_web_development/Core/Structuring_content/The_head_metadata_in_HTML /en-US/docs/Learn_web_development/Core/Structuring_content/Webpage_metadata +/en-US/docs/Learn_web_development/Core/Styling_basics/A_cool_looking_box /en-US/docs/Learn_web_development/Core/Styling_basics/Cool-looking_box +/en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors/Attribute_selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Attribute_selectors +/en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors/Combinators /en-US/docs/Learn_web_development/Core/Styling_basics/Combinators +/en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors/Pseudo-classes_and_pseudo-elements /en-US/docs/Learn_web_development/Core/Styling_basics/Pseudo_classes_and_elements +/en-US/docs/Learn_web_development/Core/Styling_basics/Cascade_and_inheritance /en-US/docs/Learn_web_development/Core/Styling_basics/Handling_conflicts +/en-US/docs/Learn_web_development/Core/Styling_basics/Creating_fancy_letterheaded_paper /en-US/docs/Learn_web_development/Core/Styling_basics/Fancy_letterheaded_paper +/en-US/docs/Learn_web_development/Core/Styling_basics/Images_media_form_elements /en-US/docs/Learn_web_development/Core/Styling_basics/Images_media_forms +/en-US/docs/Learn_web_development/Core/Styling_basics/Overflowing_content /en-US/docs/Learn_web_development/Core/Styling_basics/Overflow +/en-US/docs/Learn_web_development/Core/Styling_basics/Selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors +/en-US/docs/Learn_web_development/Core/Styling_basics/Selectors/Attribute_selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Attribute_selectors +/en-US/docs/Learn_web_development/Core/Styling_basics/Selectors/Combinators /en-US/docs/Learn_web_development/Core/Styling_basics/Combinators +/en-US/docs/Learn_web_development/Core/Styling_basics/Selectors/Pseudo-classes_and_pseudo-elements /en-US/docs/Learn_web_development/Core/Styling_basics/Pseudo_classes_and_elements +/en-US/docs/Learn_web_development/Core/Styling_basics/Selectors/Selectors_Tasks /en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors/Selectors_Tasks +/en-US/docs/Learn_web_development/Core/Styling_basics/Sizing_items_in_CSS /en-US/docs/Learn_web_development/Core/Styling_basics/Sizing +/en-US/docs/Learn_web_development/Core/Styling_basics/Styling_tables /en-US/docs/Learn_web_development/Core/Styling_basics/Tables +/en-US/docs/Learn_web_development/Core/Styling_basics/The_box_model /en-US/docs/Learn_web_development/Core/Styling_basics/Box_model +/en-US/docs/Learn_web_development/Extensions/Forms/Property_compatibility_table_for_form_controls /en-US/docs/Learn_web_development/Extensions/Forms +/en-US/docs/Learn_web_development/Getting_started/Basic_setup /en-US/docs/Learn_web_development/Getting_started/Environment_setup/Installing_software +/en-US/docs/Learn_web_development/Getting_started/Your_first_website/CSS_basics /en-US/docs/Learn_web_development/Getting_started/Your_first_website/Styling_the_content +/en-US/docs/Learn_web_development/Getting_started/Your_first_website/HTML_basics /en-US/docs/Learn_web_development/Getting_started/Your_first_website/Creating_the_content +/en-US/docs/Learn_web_development/Getting_started/Your_first_website/How_the_Web_works /en-US/docs/Learn_web_development/Getting_started/Web_standards/How_the_web_works +/en-US/docs/Learn_web_development/Getting_started/Your_first_website/JavaScript_basics /en-US/docs/Learn_web_development/Getting_started/Your_first_website/Adding_interactivity +/en-US/docs/Learn_web_development/Getting_started/Your_first_website/The_web_and_web_standards /en-US/docs/Learn_web_development/Getting_started/Web_standards/The_web_standards_model +/en-US/docs/Liberty!_Equality!_Validity! /en-US/docs/Learn_web_development/Core/Structuring_content/Debugging_HTML /en-US/docs/Link_prefetching_FAQ /en-US/docs/Glossary/Prefetch /en-US/docs/Localization /en-US/docs/Glossary/Localization /en-US/docs/MDC:How_to_Help /en-US/docs/MDN/Community/Contributing @@ -5664,7 +6052,7 @@ /en-US/docs/Media_Streams_API /en-US/docs/Web/API/Media_Capture_and_Streams_API /en-US/docs/Media_formats_supported_by_the_audio_and_video_elements /en-US/docs/Web/Media/Formats /en-US/docs/Memory_Sanitizer https://firefox-source-docs.mozilla.org/tools/sanitizer/memory_sanitizer.html#memory-sanitizer -/en-US/docs/Mobile/Mobile_Web_Development /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design +/en-US/docs/Mobile/Mobile_Web_Development /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design /en-US/docs/MouseEvent.initMouseEvent /en-US/docs/Web/API/MouseEvent/initMouseEvent /en-US/docs/Mozilla's_Quirks_Mode /en-US/docs/Web/HTML/Quirks_Mode_and_Standards_Mode /en-US/docs/Mozilla/Add-ons/AMO/Policy https://extensionworkshop.com/documentation/publish/add-on-policies/ @@ -6375,7 +6763,7 @@ /en-US/docs/NavigatorUserMedia.getUserMedia /en-US/docs/Web/API/Navigator/getUserMedia /en-US/docs/NavigatorUserMedia.mediaDevices /en-US/docs/Web/API/Navigator/mediaDevices /en-US/docs/Netscape_Gecko_User_Agent_Strings /en-US/docs/Web/HTTP/Headers/User-Agent/Firefox -/en-US/docs/Node_server_without_framework /en-US/docs/Learn/Server-side/Node_server_without_framework +/en-US/docs/Node_server_without_framework /en-US/docs/Learn_web_development/Extensions/Server-side/Node_server_without_framework /en-US/docs/Notable_bugs_fixed_in_Firefox_3 /en-US/docs/Mozilla/Firefox/Releases/3/Notable_bugs_fixed /en-US/docs/Online/Offline_Events /en-US/docs/Web/API/Navigator/onLine /en-US/docs/Online_Offline_Events /en-US/docs/Web/API/Navigator/onLine @@ -6422,10 +6810,10 @@ /en-US/docs/Plugins/Guide/Version_UI_and_Status_Information /en-US/docs/Glossary/Plugin /en-US/docs/Plugins/Roadmap /en-US/docs/Glossary/Plugin /en-US/docs/Printing /en-US/docs/Web/CSS/CSS_media_queries/Printing -/en-US/docs/Properly_Configuring_Server_MIME_Types /en-US/docs/Learn/Server-side/Configuring_server_MIME_types -/en-US/docs/Properties_compatibility_table_for_forms_widgets /en-US/docs/Learn/Forms/Property_compatibility_table_for_form_controls -/en-US/docs/Property_compatibility_table_for_form_widgets /en-US/docs/Learn/Forms/Property_compatibility_table_for_form_controls -/en-US/docs/Python /en-US/docs/Learn/Server-side/Django +/en-US/docs/Properly_Configuring_Server_MIME_Types /en-US/docs/Learn_web_development/Extensions/Server-side/Configuring_server_MIME_types +/en-US/docs/Properties_compatibility_table_for_forms_widgets /en-US/docs/Learn_web_development/Extensions/Forms +/en-US/docs/Property_compatibility_table_for_form_widgets /en-US/docs/Learn_web_development/Extensions/Forms +/en-US/docs/Python /en-US/docs/Learn_web_development/Extensions/Server-side/Django /en-US/docs/Python/Virtualenv https://github.com/mdn/archived-content/tree/main/files/en-us/mozilla/virtualenv /en-US/docs/Python_binding_for_NSS https://firefox-source-docs.mozilla.org/security/nss/index.html /en-US/docs/Quirks_Mode_and_Standards_Mode /en-US/docs/Web/HTML/Quirks_Mode_and_Standards_Mode @@ -6717,8 +7105,8 @@ /en-US/docs/SVG/SVG_animation_with_SMIL /en-US/docs/Web/SVG/SVG_animation_with_SMIL /en-US/docs/SVG/SVG_as_an_Image /en-US/docs/Web/SVG/SVG_as_an_Image /en-US/docs/SVG/Scripting /en-US/docs/Web/SVG/Scripting -/en-US/docs/SVG/Server-configuration /en-US/docs/Web/SVG/Server-configuration -/en-US/docs/SVG/Specification_Deviations /en-US/docs/Web/SVG/Specification_Deviations +/en-US/docs/SVG/Server-configuration https://www.w3.org/services/svg-server/ +/en-US/docs/SVG/Specification_Deviations /en-US/docs/Web/SVG /en-US/docs/SVG/Tutorial /en-US/docs/Web/SVG/Tutorial /en-US/docs/SVG/Tutorial/Basic_Shapes /en-US/docs/Web/SVG/Tutorial/Basic_Shapes /en-US/docs/SVG/Tutorial/Basic_Transformations /en-US/docs/Web/SVG/Tutorial/Basic_Transformations @@ -6745,12 +7133,11 @@ /en-US/docs/SVG/polyline /en-US/docs/Web/SVG/Element/polyline /en-US/docs/SVG/rect /en-US/docs/Web/SVG/Element/rect /en-US/docs/SVG/use /en-US/docs/Web/SVG/Element/use -/en-US/docs/SVG/教程 /zh-TW/docs/Web/SVG/Tutorial /en-US/docs/SVG:Linking /en-US/docs/Web/SVG/Linking /en-US/docs/SVG:Namespaces_Crash_Course /en-US/docs/Web/SVG/Namespaces_Crash_Course /en-US/docs/SVG:Namespaces_Crash_Course:Example /en-US/docs/Web/SVG/Namespaces_Crash_Course/Example /en-US/docs/SVG:Scripting /en-US/docs/Web/SVG/Scripting -/en-US/docs/SVG:Specification_Deviations /en-US/docs/Web/SVG/Specification_Deviations +/en-US/docs/SVG:Specification_Deviations /en-US/docs/Web/SVG /en-US/docs/SVG:Tutorial /en-US/docs/Web/SVG/Tutorial /en-US/docs/SVG:Tutorial:Basic_Shapes /en-US/docs/Web/SVG/Tutorial/Basic_Shapes /en-US/docs/SVG:Tutorial:Fill_Stroke_and_Gradients /en-US/docs/Web/SVG/Tutorial/Fills_and_Strokes @@ -6773,9 +7160,8 @@ /en-US/docs/SVG_animation_(SMIL)_in_Firefox /en-US/docs/Web/SVG/SVG_animation_with_SMIL /en-US/docs/SVG_improvements_in_Firefox_3 /en-US/docs/Mozilla/Firefox/Releases/3/SVG_improvements /en-US/docs/Same_origin_policy_for_JavaScript /en-US/docs/Web/Security/Same-origin_policy -/en-US/docs/Sample_.htaccess_file /en-US/docs/Learn/Server-side/Apache_Configuration_htaccess +/en-US/docs/Sample_.htaccess_file /en-US/docs/Learn_web_development/Extensions/Server-side/Apache_Configuration_htaccess /en-US/docs/Scripting_plugins /en-US/docs/Glossary/Plugin -/en-US/docs/Secciones_y_contornos_de_un_documento_HTML5 /es/docs/Sections_and_Outlines_of_an_HTML5_document /en-US/docs/Security/CSP /en-US/docs/Web/HTTP/CSP /en-US/docs/Security/CSP/CSP_policy_directives /en-US/docs/Web/HTTP/Headers/Content-Security-Policy /en-US/docs/Security/CSP/Default_CSP_restrictions /en-US/docs/Web/HTTP/Headers/Content-Security-Policy @@ -6839,8 +7225,8 @@ /en-US/docs/The_Do_Not_Track_Field_Guide/Tutorials/2_Displaying_DNT_status_with_caching /en-US/docs/Web/HTTP/Headers/DNT /en-US/docs/The_Do_Not_Track_Field_Guide/Tutorials/3_Collecting_aggregate_data_based_on_DNT /en-US/docs/Web/HTTP/Headers/DNT /en-US/docs/The_Do_Not_Track_Field_Guide/Tutorials/Additional_resources /en-US/docs/Web/HTTP/Headers/DNT -/en-US/docs/The_Importance_of_Correct_Commenting /en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started#HTML_comments -/en-US/docs/The_Importance_of_Correct_HTML_Commenting /en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started#HTML_comments +/en-US/docs/The_Importance_of_Correct_Commenting /en-US/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax#HTML_comments +/en-US/docs/The_Importance_of_Correct_HTML_Commenting /en-US/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax#HTML_comments /en-US/docs/The_X-FRAME-OPTIONS_response_header /en-US/docs/Web/HTTP/Headers/X-Frame-Options /en-US/docs/The_XSLT /en-US/docs/Web/XSLT /en-US/docs/The_XSLT/JavaScript_Interface_in_Gecko /en-US/docs/Web/API/XSLTProcessor @@ -6866,11 +7252,11 @@ /en-US/docs/The_XSLT_JavaScript_Interface_in_Gecko:Resources /en-US/docs/Web/API/XSLTProcessor /en-US/docs/The_XSLT_JavaScript_Interface_in_Gecko:Setting_Parameters /en-US/docs/Web/API/XSLTProcessor /en-US/docs/The_add-on_bar /en-US/docs/Mozilla/Firefox/Releases/4/The_add-on_bar -/en-US/docs/The_data_URL_scheme /en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs +/en-US/docs/The_data_URL_scheme /en-US/docs/Web/URI/Schemes/data /en-US/docs/Thunderbird/Autoconfiguration https://www.bucksch.org/1/projects/thunderbird/autoconfiguration/ /en-US/docs/Thunderbird/Autoconfiguration/FileFormat/Definition https://www.bucksch.org/1/projects/thunderbird/autoconfiguration/config-file-format.html /en-US/docs/Thunderbird/Autoconfiguration/FileFormat/HowTo https://www.bucksch.org/1/projects/thunderbird/autoconfiguration/how-to-create-your-own -/en-US/docs/Tips_for_Authoring_Fast-loading_HTML_Pages /en-US/docs/Learn/HTML/Howto/Author_fast-loading_HTML_pages +/en-US/docs/Tips_for_Authoring_Fast-loading_HTML_Pages /en-US/docs/Learn_web_development/Howto/Solve_HTML_problems/Author_fast-loading_HTML_pages /en-US/docs/Toolbox https://firefox-source-docs.mozilla.org/devtools-user/tools_toolbox/index.html /en-US/docs/Tools https://firefox-source-docs.mozilla.org/devtools-user/index.html /en-US/docs/Tools/3D_View https://firefox-source-docs.mozilla.org/devtools-user/3d_view/index.html @@ -7130,21 +7516,21 @@ /en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/with-param /en-US/docs/Web/XSLT/Element/with-param /en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Functions /en-US/docs/Web/XPath/Functions /en-US/docs/Transforming_XML_with_XSLT/Resources /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT /en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes /en-US/docs/Web/XPath/Axes -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor-or-self /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor-or-self -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/attribute /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/attribute -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/child /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/child -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant-or-self /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant-or-self -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following-sibling /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following-sibling -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/namespace /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/namespace -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/parent /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/parent -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding-sibling /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding-sibling -/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/self /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/self +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor-or-self /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/attribute /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/child /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant-or-self /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following-sibling /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/namespace /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/parent /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding-sibling /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/self /en-US/docs/Web/XPath/Axes /en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Elements/xsl/decimal-format /en-US/docs/Web/XSLT/Element/decimal-format /en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Elements/xsl/element /en-US/docs/Web/XSLT/Element/element /en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Functions /en-US/docs/Web/XPath/Functions @@ -7255,46 +7641,46 @@ /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:with-param /en-US/docs/Web/XSLT/Element/with-param /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Functions /en-US/docs/Web/XPath/Functions /en-US/docs/Transforming_XML_with_XSLT:Resources /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT /en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes /en-US/docs/Web/XPath/Axes -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:ancestor /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:ancestor-or-self /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor-or-self -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:attribute /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/attribute -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:child /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/child -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:descendant /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:descendant-or-self /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant-or-self -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:following /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:following-sibling /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following-sibling -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:namespace /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/namespace -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:parent /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/parent -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:preceding /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:preceding-sibling /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding-sibling -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:self /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/self +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:ancestor /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:ancestor-or-self /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:attribute /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:child /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:descendant /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:descendant-or-self /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:following /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:following-sibling /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:namespace /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:parent /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:preceding /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:preceding-sibling /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Axes:self /en-US/docs/Web/XPath/Axes /en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Elements:xsl:decimal-format /en-US/docs/Web/XSLT/Element/decimal-format /en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Elements:xsl:element /en-US/docs/Web/XSLT/Element/element /en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Functions /en-US/docs/Web/XPath/Functions -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT /en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes /en-US/docs/Web/XPath/Axes -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:ancestor /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:ancestor-or-self /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor-or-self -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:attribute /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/attribute -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:child /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/child -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:descendant /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:descendant-or-self /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant-or-self -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:following /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:following-sibling /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following-sibling -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:namespace /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/namespace -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:parent /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/parent -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:preceding /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:preceding-sibling /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding-sibling -/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:self /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/self +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:ancestor /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:ancestor-or-self /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:attribute /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:child /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:descendant /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:descendant-or-self /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:following /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:following-sibling /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:namespace /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:parent /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:preceding /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:preceding-sibling /en-US/docs/Web/XPath/Axes +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Axes:self /en-US/docs/Web/XPath/Axes /en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Elements:xsl:decimal-format /en-US/docs/Web/XSLT/Element/decimal-format /en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Elements:xsl:element /en-US/docs/Web/XSLT/Element/element /en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Functions /en-US/docs/Web/XPath/Functions /en-US/docs/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces /en-US/docs/Web/API/Document_Object_Model/Traversing_an_HTML_table_with_JavaScript_and_DOM_Interfaces /en-US/docs/URI /en-US/docs/Glossary/URI -/en-US/docs/URI/www and non-www URLs /en-US/docs/Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs -/en-US/docs/URI/www_vs_non-www_URLs /en-US/docs/Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs +/en-US/docs/URI/www and non-www URLs /en-US/docs/Web/URI/Authority/Choosing_between_www_and_non-www_URLs +/en-US/docs/URI/www_vs_non-www_URLs /en-US/docs/Web/URI/Authority/Choosing_between_www_and_non-www_URLs /en-US/docs/URL.createObjectURL /en-US/docs/Web/API/URL/createObjectURL_static /en-US/docs/URLUtilsReadOnly.origin /en-US/docs/Web/API/WorkerLocation/origin /en-US/docs/USA /en-US/docs/Web/Progressive_web_apps @@ -7314,8 +7700,8 @@ /en-US/docs/Understanding_CSS_z-index:Stacking_context_example_3 /en-US/docs/Web/CSS/CSS_positioned_layout/Understanding_z-index/Stacking_context_example_3 /en-US/docs/Understanding_CSS_z-index:Stacking_without_z-index /en-US/docs/Web/CSS/CSS_positioned_layout/Understanding_z-index/Stacking_without_z-index /en-US/docs/Understanding_CSS_z-index:The_stacking_context /en-US/docs/Web/CSS/CSS_positioned_layout/Understanding_z-index/Stacking_context -/en-US/docs/Understanding_URLS /en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL -/en-US/docs/Understanding_Underlines /en-US/docs/Learn/CSS/Styling_text/Fundamentals#Font_style_font_weight_text_transform_and_text_decoration +/en-US/docs/Understanding_URLS /en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_URL +/en-US/docs/Understanding_Underlines /en-US/docs/Learn_web_development/Core/Text_styling/Fundamentals#Font_style_font_weight_text_transform_and_text_decoration /en-US/docs/Updating_Extensions_for_Firefox_4 /en-US/docs/Mozilla/Firefox/Releases/4/Updating_extensions_for_Firefox_4 /en-US/docs/Updating_Extensions_for_Firefox_4.0 /en-US/docs/Mozilla/Firefox/Releases/4/Updating_extensions_for_Firefox_4 /en-US/docs/Updating_extensions_for_Firefox_2 /en-US/docs/Mozilla/Firefox/Releases/2/Updating_extensions @@ -7338,16 +7724,16 @@ /en-US/docs/Using_DOM_workers /en-US/docs/Web/API/Web_Workers_API/Using_web_workers /en-US/docs/Using_Deviceorientation_In_3D_Transforms /en-US/docs/Web/API/Device_orientation_events/Using_device_orientation_with_3D_transforms /en-US/docs/Using_Firefox_1.5_caching /en-US/docs/Mozilla/Firefox/Releases/1.5/Using_Firefox_1.5_caching -/en-US/docs/Using_HTML5_audio_and_video /en-US/docs/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +/en-US/docs/Using_HTML5_audio_and_video /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_video_and_audio /en-US/docs/Using_JSON_in_Firefox /en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON -/en-US/docs/Using_Web_Standards_in_your_Web_Pages/Making_your_page_using_web_standards_-_how_to /en-US/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML +/en-US/docs/Using_Web_Standards_in_your_Web_Pages/Making_your_page_using_web_standards_-_how_to /en-US/docs/Learn_web_development/Core/Structuring_content/Debugging_HTML /en-US/docs/Using_Web_Standards_in_your_Web_Pages/Using_XMLHttpRequest /en-US/docs/Web/API/XMLHttpRequest_API/Using_XMLHttpRequest -/en-US/docs/Using_Web_Standards_in_your_Web_Pages:Making_your_page_using_web_standards_-_how_to /en-US/docs/Learn/HTML/Introduction_to_HTML/Debugging_HTML +/en-US/docs/Using_Web_Standards_in_your_Web_Pages:Making_your_page_using_web_standards_-_how_to /en-US/docs/Learn_web_development/Core/Structuring_content/Debugging_HTML /en-US/docs/Using_Web_Standards_in_your_Web_Pages:Using_XMLHttpRequest /en-US/docs/Web/API/XMLHttpRequest_API/Using_XMLHttpRequest /en-US/docs/Using_XMLHttpRequest /en-US/docs/Web/API/XMLHttpRequest_API/Using_XMLHttpRequest /en-US/docs/Using_XPath /en-US/docs/Web/XPath/Introduction_to_using_XPath_in_JavaScript /en-US/docs/Using_an_External_Spell-checker /en-US/docs/Mozilla/Firefox/Releases/3/Using_an_external_spell_checker -/en-US/docs/Using_audio_and_video_in_Firefox /en-US/docs/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +/en-US/docs/Using_audio_and_video_in_Firefox /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_video_and_audio /en-US/docs/Using_files_from_web_applications /en-US/docs/Web/API/File_API/Using_files_from_web_applications /en-US/docs/Using_flexbox /en-US/docs/Web/CSS/CSS_flexible_box_layout/Basic_concepts_of_flexbox /en-US/docs/Using_geolocation /en-US/docs/Web/API/Geolocation_API @@ -7371,7 +7757,7 @@ /en-US/docs/Vuletube-vue-typescript-threejs-nui-voice-opencvjs /en-US/docs/Games/ /en-US/docs/WOFF /en-US/docs/Web/CSS/CSS_fonts/WOFF /en-US/docs/We/API/RotationRate /en-US/docs/Web/API/DeviceMotionEvent/rotationRate -/en-US/docs/Web-based_protocol_handlers /en-US/docs/Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers +/en-US/docs/Web-based_protocol_handlers /en-US/docs/Web/API/Navigator/registerProtocolHandler /en-US/docs/Web-related_technologies /en-US/docs/Related /en-US/docs/Web/API/AbortController/FetchController /en-US/docs/Web/API/AbortController/AbortController /en-US/docs/Web/API/AbortSignal/abort /en-US/docs/Web/API/AbortSignal/abort_static @@ -7607,11 +7993,11 @@ /en-US/docs/Web/API/BluetoothDevice/deviceClass /en-US/docs/Web/API/BluetoothDevice /en-US/docs/Web/API/BluetoothDevice/gattServer /en-US/docs/Web/API/BluetoothDevice /en-US/docs/Web/API/BluetoothDevice/paired /en-US/docs/Web/API/BluetoothDevice -/en-US/docs/Web/API/BluetoothDevice/productID /en-US/docs/Web/API/BluetoothDevice +/en-US/docs/Web/API/BluetoothDevice/productId /en-US/docs/Web/API/BluetoothDevice /en-US/docs/Web/API/BluetoothDevice/productVersion /en-US/docs/Web/API/BluetoothDevice /en-US/docs/Web/API/BluetoothDevice/uuids /en-US/docs/Web/API/BluetoothDevice -/en-US/docs/Web/API/BluetoothDevice/vendorID /en-US/docs/Web/API/BluetoothDevice -/en-US/docs/Web/API/BluetoothDevice/vendorIDSource /en-US/docs/Web/API/BluetoothDevice +/en-US/docs/Web/API/BluetoothDevice/vendorId /en-US/docs/Web/API/BluetoothDevice +/en-US/docs/Web/API/BluetoothDevice/vendorIdSource /en-US/docs/Web/API/BluetoothDevice /en-US/docs/Web/API/BluetoothGATTRemoteServer /en-US/docs/Web/API/BluetoothRemoteGATTServer /en-US/docs/Web/API/BluetoothGATTRemoteServer/connected /en-US/docs/Web/API/BluetoothRemoteGATTServer/connected /en-US/docs/Web/API/BluetoothGATTRemoteServer/device /en-US/docs/Web/API/BluetoothRemoteGATTServer/device @@ -7694,6 +8080,7 @@ /en-US/docs/Web/API/CSSUnitValue/CSSUnitValue() /en-US/docs/Web/API/CSSUnitValue/CSSUnitValue /en-US/docs/Web/API/CSSUnitValue/CSSUnitValue.CSSUnitValue /en-US/docs/Web/API/CSSUnitValue/CSSUnitValue /en-US/docs/Web/API/CSSValueList/CSSValueList.length /en-US/docs/Web/API/CSSValueList/length +/en-US/docs/Web/API/CSS_Counter_Styles /en-US/docs/Web/CSS/CSS_counter_styles /en-US/docs/Web/API/CSS_Properties_and_Values_API/_Using_the_CSS_properties_and_values_API /en-US/docs/Web/API/CSS_Properties_and_Values_API/guide /en-US/docs/Web/API/CSS_Typed_Object_Model_API /en-US/docs/Web/API/CSS_Object_Model#CSS_Typed_Object_Model /en-US/docs/Web/API/Cache/Cache.addAll() /en-US/docs/Web/API/Cache/addAll @@ -7807,8 +8194,8 @@ /en-US/docs/Web/API/Console.count /en-US/docs/Web/API/console/count_static /en-US/docs/Web/API/Console.debug /en-US/docs/Web/API/console/log_static /en-US/docs/Web/API/Console.table /en-US/docs/Web/API/console/table_static -/en-US/docs/Web/API/Console/Console.countReset() /en-US/docs/Web/API/console/countreset_static -/en-US/docs/Web/API/Console/Console.timeLog() /en-US/docs/Web/API/console/timelog_static +/en-US/docs/Web/API/Console/Console.countReset() /en-US/docs/Web/API/console/countReset_static +/en-US/docs/Web/API/Console/Console.timeLog() /en-US/docs/Web/API/console/timeLog_static /en-US/docs/Web/API/ConstantSourceNode/onended /en-US/docs/Web/API/AudioScheduledSourceNode/ended_event /en-US/docs/Web/API/ConstantSourceNode/start /en-US/docs/Web/API/AudioScheduledSourceNode/start /en-US/docs/Web/API/ConstantSourceNode/stop /en-US/docs/Web/API/AudioScheduledSourceNode/stop @@ -7819,7 +8206,7 @@ /en-US/docs/Web/API/ConstrainDouble /en-US/docs/Web/API/MediaTrackConstraints /en-US/docs/Web/API/ConstrainLong /en-US/docs/Web/API/MediaTrackConstraints /en-US/docs/Web/API/ConstrainULong /en-US/docs/Web/API/MediaTrackConstraints -/en-US/docs/Web/API/Constraint_validation /en-US/docs/Learn/Forms/Form_validation +/en-US/docs/Web/API/Constraint_validation /en-US/docs/Learn_web_development/Extensions/Forms/Form_validation /en-US/docs/Web/API/Constraint_validation/invalid_event /en-US/docs/Web/API/HTMLInputElement/invalid_event /en-US/docs/Web/API/ContentVisibilityAutoStateChangeEvent/ContentVisibilityAutoStateChangedEvent /en-US/docs/Web/API/ContentVisibilityAutoStateChangeEvent/ContentVisibilityAutoStateChangeEvent /en-US/docs/Web/API/ContentVisibilityAutoStateChangedEvent /en-US/docs/Web/API/ContentVisibilityAutoStateChangeEvent @@ -8041,7 +8428,7 @@ /en-US/docs/Web/API/DocumentTouch.createTouchList /en-US/docs/Web/API/Document/createTouchList /en-US/docs/Web/API/DocumentTouch/createTouch /en-US/docs/Web/API/Document/createTouch /en-US/docs/Web/API/DocumentTouch/createTouchList /en-US/docs/Web/API/Document/createTouchList -/en-US/docs/Web/API/Document_Object_Model/Events /en-US/docs/Learn/JavaScript/Building_blocks/Events +/en-US/docs/Web/API/Document_Object_Model/Events /en-US/docs/Learn_web_development/Core/Scripting/Events /en-US/docs/Web/API/Document_Object_Model/How_to_create_a_DOM_tree /en-US/docs/Web/API/Document_Object_Model/Using_the_Document_Object_Model /en-US/docs/Web/API/Document_Object_Model/Preface /en-US/docs/Web/API/Document_Object_Model /en-US/docs/Web/API/Document_Object_Model/Using_the_Document_Object_Model/Example /en-US/docs/Web/API/Document_Object_Model/Using_the_Document_Object_Model @@ -8101,7 +8488,7 @@ /en-US/docs/Web/API/Element/MozMousePixelScroll /en-US/docs/Web/API/Element/MozMousePixelScroll_event /en-US/docs/Web/API/Element/accessKey /en-US/docs/Web/API/HTMLElement/accessKey /en-US/docs/Web/API/Element/attachInternals /en-US/docs/Web/API/HTMLElement/attachInternals -/en-US/docs/Web/API/Element/cancel_event /en-US/docs/Web/API/HTMLElement/cancel_event +/en-US/docs/Web/API/Element/cancel_event /en-US/docs/Web/API/HTMLDialogElement/cancel_event /en-US/docs/Web/API/Element/contentvisibilityautostatechanged_event /en-US/docs/Web/API/Element/contentvisibilityautostatechange_event /en-US/docs/Web/API/Element/createShadowRoot /en-US/docs/Web/API/Element/shadowRoot /en-US/docs/Web/API/Element/error_event /en-US/docs/Web/API/HTMLElement/error_event @@ -8135,7 +8522,7 @@ /en-US/docs/Web/API/Event.Event /en-US/docs/Web/API/Event/Event /en-US/docs/Web/API/Event.initEvent() /en-US/docs/Web/API/Event/initEvent /en-US/docs/Web/API/Event/AnimationEvent /en-US/docs/Web/API/AnimationEvent -/en-US/docs/Web/API/Event/Comparison_of_Event_Targets /en-US/docs/Learn/JavaScript/Building_blocks/Event_bubbling +/en-US/docs/Web/API/Event/Comparison_of_Event_Targets /en-US/docs/Learn_web_development/Core/Scripting/Event_bubbling /en-US/docs/Web/API/Event/CustomEvent /en-US/docs/Web/API/CustomEvent /en-US/docs/Web/API/Event/UIEvent /en-US/docs/Web/API/UIEvent /en-US/docs/Web/API/Event/UIEvent/KeyEvent /en-US/docs/Web/API/KeyboardEvent @@ -8419,7 +8806,7 @@ /en-US/docs/Web/API/HTMLContentElement.select /en-US/docs/Web/API/HTMLSlotElement /en-US/docs/Web/API/HTMLContentElement/getDistributedNodes /en-US/docs/Web/API/HTMLSlotElement /en-US/docs/Web/API/HTMLContentElement/select /en-US/docs/Web/API/HTMLSlotElement -/en-US/docs/Web/API/HTMLDialogElement/cancel_event /en-US/docs/Web/API/HTMLElement/cancel_event +/en-US/docs/Web/API/HTMLDetailsElement/toggle_event /en-US/docs/Web/API/HTMLElement/toggle_event /en-US/docs/Web/API/HTMLDialogElement/close() /en-US/docs/Web/API/HTMLDialogElement/close /en-US/docs/Web/API/HTMLDialogElement/returnValue() /en-US/docs/Web/API/HTMLDialogElement/returnValue /en-US/docs/Web/API/HTMLDialogElement/show() /en-US/docs/Web/API/HTMLDialogElement/show @@ -8554,6 +8941,7 @@ /en-US/docs/Web/API/HTMLMediaElement/onencrypted /en-US/docs/Web/API/HTMLMediaElement /en-US/docs/Web/API/HTMLMediaElement/onerror /en-US/docs/Web/API/HTMLMediaElement/error_event /en-US/docs/Web/API/HTMLMediaElement/onwaitingforkey /en-US/docs/Web/API/HTMLMediaElement +/en-US/docs/Web/API/HTMLMenuItemElement /en-US/docs/Web/API/HTMLMenuElement /en-US/docs/Web/API/HTMLMetaElement/charset /en-US/docs/Web/HTML/Element/meta#charset /en-US/docs/Web/API/HTMLObjectElement/tabIndex /en-US/docs/Web/API/HTMLObjectElement/type /en-US/docs/Web/API/HTMLOptionElement.Option /en-US/docs/Web/API/HTMLOptionElement/Option @@ -8626,7 +9014,6 @@ /en-US/docs/Web/API/HTMLVideoElement/onleavepictureinpicture /en-US/docs/Web/API/HTMLVideoElement/leavepictureinpicture_event /en-US/docs/Web/API/HTMLVideoElement/requestPictureInPicture() /en-US/docs/Web/API/HTMLVideoElement/requestPictureInPicture /en-US/docs/Web/API/HTML_DOM /en-US/docs/Web/API/HTML_DOM_API -/en-US/docs/Web/API/HTML_Santizer_API /en-US/docs/Web/API/HTML_Sanitizer_API /en-US/docs/Web/API/HashChangeEvent/HashChangeEvent.oldURL /en-US/docs/Web/API/HashChangeEvent/oldURL /en-US/docs/Web/API/Headers/getAll /en-US/docs/Web/API/Headers/get /en-US/docs/Web/API/History.length /en-US/docs/Web/API/History/length @@ -8786,7 +9173,7 @@ /en-US/docs/Web/API/IdleDetector/onchange /en-US/docs/Web/API/IdleDetector/change_event /en-US/docs/Web/API/IdleDetector/requestPermission /en-US/docs/Web/API/IdleDetector/requestPermission_static /en-US/docs/Web/API/Image /en-US/docs/Web/API/HTMLImageElement/Image -/en-US/docs/Web/API/ImageBitmapFactories/createImageBitmap /en-US/docs/Web/API/createImageBitmap +/en-US/docs/Web/API/ImageBitmapFactories/createImageBitmap /en-US/docs/Web/API/Window/createImageBitmap /en-US/docs/Web/API/ImageBitmapRenderingContext/transferImageBitmap /en-US/docs/Web/API/ImageBitmapRenderingContext/transferFromImageBitmap /en-US/docs/Web/API/ImageData.ImageData /en-US/docs/Web/API/ImageData/ImageData /en-US/docs/Web/API/ImageData.data /en-US/docs/Web/API/ImageData/data @@ -8803,6 +9190,10 @@ /en-US/docs/Web/API/IndexedDB_API/ObjectStore /en-US/docs/Web/API/IDBObjectStore /en-US/docs/Web/API/IndexedDB_API/Synchronous_API /en-US/docs/Web/API/IndexedDB_API /en-US/docs/Web/API/IndexedDB_API/Transaction /en-US/docs/Web/API/IDBTransaction +/en-US/docs/Web/API/InkPresenter /en-US/docs/Web/API/DelegatedInkTrailPresenter +/en-US/docs/Web/API/InkPresenter/expectedImprovement /en-US/docs/Web/API/DelegatedInkTrailPresenter/expectedImprovement +/en-US/docs/Web/API/InkPresenter/presentationArea /en-US/docs/Web/API/DelegatedInkTrailPresenter/presentationArea +/en-US/docs/Web/API/InkPresenter/updateInkTrailStartPoint /en-US/docs/Web/API/DelegatedInkTrailPresenter/updateInkTrailStartPoint /en-US/docs/Web/API/Input.mozGetFileNameArray /en-US/docs/Web/API/HTMLInputElement /en-US/docs/Web/API/Input.mozSetFileNameArray /en-US/docs/Web/API/HTMLInputElement /en-US/docs/Web/API/Input.multiple /en-US/docs/Web/API/HTMLInputElement/multiple @@ -9102,6 +9493,7 @@ /en-US/docs/Web/API/Navigator/mediaDevices/enumerateDevices /en-US/docs/Web/API/MediaDevices/enumerateDevices /en-US/docs/Web/API/Navigator/mediaDevices/getUserMedia /en-US/docs/Web/API/MediaDevices/getUserMedia /en-US/docs/Web/API/Navigator/mozIsLocallyAvailable /en-US/docs/Web/API/Navigator +/en-US/docs/Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers /en-US/docs/Web/API/Navigator/registerProtocolHandler /en-US/docs/Web/API/NavigatorConcurrentHardware /en-US/docs/Web/API/Navigator /en-US/docs/Web/API/NavigatorConcurrentHardware/hardwareConcurrency /en-US/docs/Web/API/Navigator/hardwareConcurrency /en-US/docs/Web/API/NavigatorGeolocation /en-US/docs/Web/API/Geolocation @@ -9406,6 +9798,7 @@ /en-US/docs/Web/API/PromiseResolver /en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise /en-US/docs/Web/API/PublicKeyCredential/PublicKeyCredential.rawId /en-US/docs/Web/API/PublicKeyCredential/rawId /en-US/docs/Web/API/PublicKeyCredential/getClientExtensionResult /en-US/docs/Web/API/PublicKeyCredential/getClientExtensionResults +/en-US/docs/Web/API/PublicKeyCredential/isConditionalMediationAvailable /en-US/docs/Web/API/PublicKeyCredential/isConditionalMediationAvailable_static /en-US/docs/Web/API/PublicKeyCredential/isUserVerifyingPlatformAuthenticatorAvailable /en-US/docs/Web/API/PublicKeyCredential/isUserVerifyingPlatformAuthenticatorAvailable_static /en-US/docs/Web/API/PublicKeyCredentialCreateOptions /en-US/docs/Web/API/PublicKeyCredentialCreationOptions /en-US/docs/Web/API/PublicKeyCredentialCreationOptions/attestation /en-US/docs/Web/API/PublicKeyCredentialCreationOptions @@ -9465,10 +9858,6 @@ /en-US/docs/Web/API/RTCIceCandidateInit/sdpMid /en-US/docs/Web/API/RTCIceCandidate/sdpMid /en-US/docs/Web/API/RTCIceCandidateInit/usernameFragment /en-US/docs/Web/API/RTCIceCandidate/usernameFragment /en-US/docs/Web/API/RTCIceCandidatePairStats/bytesReceieved /en-US/docs/Web/API/RTCIceCandidatePairStats/bytesReceived -/en-US/docs/Web/API/RTCIceCandidatePairStats/consentRequestsSent /en-US/docs/Web/API/RTCIceCandidatePairStats -/en-US/docs/Web/API/RTCIceCandidatePairStats/contentRequestsSent /en-US/docs/Web/API/RTCIceCandidatePairStats -/en-US/docs/Web/API/RTCIceCandidatePairStats/packetsReceived /en-US/docs/Web/API/RTCIceCandidatePairStats -/en-US/docs/Web/API/RTCIceCandidatePairStats/packetsSent /en-US/docs/Web/API/RTCIceCandidatePairStats /en-US/docs/Web/API/RTCIceCandidateStats/ip /en-US/docs/Web/API/RTCIceCandidateStats/address /en-US/docs/Web/API/RTCIceCandidateStats/mozLocalTransport /en-US/docs/Web/API/RTCIceCandidateStats/relayProtocol /en-US/docs/Web/API/RTCIceCandidateType /en-US/docs/Web/API/RTCIceCandidate/type @@ -9490,13 +9879,18 @@ /en-US/docs/Web/API/RTCIceTransport/onselectedcandidatepairchange /en-US/docs/Web/API/RTCIceTransport/selectedcandidatepairchange_event /en-US/docs/Web/API/RTCIceTransport/onstatechange /en-US/docs/Web/API/RTCIceTransport/statechange_event /en-US/docs/Web/API/RTCIceTransportState /en-US/docs/Web/API/RTCIceTransport/state +/en-US/docs/Web/API/RTCInboundRtpStreamStats/firCount /en-US/docs/Web/API/RTCInboundRtpStreamStats /en-US/docs/Web/API/RTCInboundRtpStreamStats/lastPacketReceivedTimesta /en-US/docs/Web/API/RTCInboundRtpStreamStats/lastPacketReceivedTimestamp +/en-US/docs/Web/API/RTCInboundRtpStreamStats/pliCount /en-US/docs/Web/API/RTCInboundRtpStreamStats +/en-US/docs/Web/API/RTCInboundRtpStreamStats/trackId /en-US/docs/Web/API/RTCInboundRtpStreamStats /en-US/docs/Web/API/RTCOfferAnswerOptions /en-US/docs/Web/API/RTCPeerConnection/createAnswer /en-US/docs/Web/API/RTCOfferAnswerOptions/voiceActivityDetection /en-US/docs/Web/API/RTCPeerConnection/createAnswer /en-US/docs/Web/API/RTCOfferOptions /en-US/docs/Web/API/RTCPeerConnection/createOffer /en-US/docs/Web/API/RTCOfferOptions/iceRestart /en-US/docs/Web/API/RTCPeerConnection/createOffer +/en-US/docs/Web/API/RTCOutboundRtpStreamStats/firCount /en-US/docs/Web/API/RTCOutboundRtpStreamStats /en-US/docs/Web/API/RTCOutboundRtpStreamStats/lastPacketSentTimestamp /en-US/docs/Web/API/RTCOutboundRtpStreamStats /en-US/docs/Web/API/RTCOutboundRtpStreamStats/perDscpPacketsReceived /en-US/docs/Web/API/RTCOutboundRtpStreamStats/perDscpPacketsSent +/en-US/docs/Web/API/RTCOutboundRtpStreamStats/pliCount /en-US/docs/Web/API/RTCOutboundRtpStreamStats /en-US/docs/Web/API/RTCPeerConnection.addStream /en-US/docs/Web/API/RTCPeerConnection/addStream /en-US/docs/Web/API/RTCPeerConnection.close /en-US/docs/Web/API/RTCPeerConnection/close /en-US/docs/Web/API/RTCPeerConnection.getIdentityAssertion /en-US/docs/Web/API/RTCPeerConnection/getIdentityAssertion @@ -9563,6 +9957,13 @@ /en-US/docs/Web/API/RTCRtpSendParameters/encodings /en-US/docs/Web/API/RTCRtpSender/setParameters /en-US/docs/Web/API/RTCRtpSender/getCapabilities /en-US/docs/Web/API/RTCRtpSender/getCapabilities_static /en-US/docs/Web/API/RTCRtpSender/getCapabilities() /en-US/docs/Web/API/RTCRtpSender/getCapabilities_static +/en-US/docs/Web/API/RTCRtpStreamStats/codecId /en-US/docs/Web/API/RTCInboundRtpStreamStats +/en-US/docs/Web/API/RTCRtpStreamStats/firCount /en-US/docs/Web/API/RTCInboundRtpStreamStats +/en-US/docs/Web/API/RTCRtpStreamStats/kind /en-US/docs/Web/API/RTCInboundRtpStreamStats +/en-US/docs/Web/API/RTCRtpStreamStats/nackCount /en-US/docs/Web/API/RTCInboundRtpStreamStats/nackCount +/en-US/docs/Web/API/RTCRtpStreamStats/pliCount /en-US/docs/Web/API/RTCOutboundRtpStreamStats +/en-US/docs/Web/API/RTCRtpStreamStats/ssrc /en-US/docs/Web/API/RTCInboundRtpStreamStats +/en-US/docs/Web/API/RTCRtpStreamStats/transportId /en-US/docs/Web/API/RTCInboundRtpStreamStats /en-US/docs/Web/API/RTCRtpSynchronizationSource /en-US/docs/Web/API/RTCRtpReceiver/getSynchronizationSources /en-US/docs/Web/API/RTCRtpSynchronizationSource/voiceActivityFlag /en-US/docs/Web/API/RTCRtpReceiver/getSynchronizationSources /en-US/docs/Web/API/RTCRtpTransceiverDirection /en-US/docs/Web/API/RTCRtpTransceiver/direction @@ -9646,9 +10047,9 @@ /en-US/docs/Web/API/SVGPathElement/getPointAtLength /en-US/docs/Web/API/SVGGeometryElement/getPointAtLength /en-US/docs/Web/API/SVGPathElement/getTotalLength /en-US/docs/Web/API/SVGGeometryElement/getTotalLength /en-US/docs/Web/API/SVGPathElement/pathLength /en-US/docs/Web/API/SVGGeometryElement/pathLength +/en-US/docs/Web/API/SVGRect/The__X__property /en-US/docs/Web/API/SVGRect/x /en-US/docs/Web/API/SVGStylable /en-US/docs/Web/API/SVGElement /en-US/docs/Web/API/SVGURIReference /en-US/docs/Web/SVG/Attribute/href -/en-US/docs/Web/API/Sanitizer/sanitizeFor /en-US/docs/Web/API/Sanitizer /en-US/docs/Web/API/Screen.availHeight /en-US/docs/Web/API/Screen/availHeight /en-US/docs/Web/API/Screen.availLeft /en-US/docs/Web/API/ScreenDetailed/availLeft /en-US/docs/Web/API/Screen.availTop /en-US/docs/Web/API/ScreenDetailed/availTop @@ -10004,6 +10405,8 @@ /en-US/docs/Web/API/VideoTrackList/onaddtrack /en-US/docs/Web/API/VideoTrackList/addtrack_event /en-US/docs/Web/API/VideoTrackList/onchange /en-US/docs/Web/API/VideoTrackList/change_event /en-US/docs/Web/API/VideoTrackList/onremovetrack /en-US/docs/Web/API/VideoTrackList/removetrack_event +/en-US/docs/Web/API/View_Transitions_API /en-US/docs/Web/API/View_Transition_API +/en-US/docs/Web/API/View_Transitions_API/Using /en-US/docs/Web/API/View_Transition_API/Using /en-US/docs/Web/API/VisualViewport/onresize /en-US/docs/Web/API/VisualViewport/resize_event /en-US/docs/Web/API/VisualViewport/onscroll /en-US/docs/Web/API/VisualViewport/scroll_event /en-US/docs/Web/API/WEBGL_compressed_texture_es3 /en-US/docs/Web/API/WEBGL_compressed_texture_etc @@ -10014,7 +10417,6 @@ /en-US/docs/Web/API/WebGL2RenderingContext/clearBufferfv /en-US/docs/Web/API/WebGL2RenderingContext/clearBuffer /en-US/docs/Web/API/WebGL2RenderingContext/clearBufferiv /en-US/docs/Web/API/WebGL2RenderingContext/clearBuffer /en-US/docs/Web/API/WebGL2RenderingContext/clearBufferuiv /en-US/docs/Web/API/WebGL2RenderingContext/clearBuffer -/en-US/docs/Web/API/WebGL2RenderingContext/compressedTexImage3D /en-US/docs/Web/API/WebGLRenderingContext/compressedTexImage2D /en-US/docs/Web/API/WebGL2RenderingContext/samplerParameterf /en-US/docs/Web/API/WebGL2RenderingContext/samplerParameter /en-US/docs/Web/API/WebGL2RenderingContext/samplerParameteri /en-US/docs/Web/API/WebGL2RenderingContext/samplerParameter /en-US/docs/Web/API/WebGL2RenderingContext/uniform1ui /en-US/docs/Web/API/WebGL2RenderingContext/uniform @@ -10074,9 +10476,7 @@ /en-US/docs/Web/API/WebGL_API/Creating_3D_objects_using_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Creating_3D_objects_using_WebGL /en-US/docs/Web/API/WebGL_API/Cross-Domain_Textures /en-US/docs/Web/API/WebGL_API/Tutorial/Using_textures_in_WebGL#Cross-domain_textures /en-US/docs/Web/API/WebGL_API/Getting_started_with_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL -/en-US/docs/Web/API/WebGL_API/Getting_started_with_WebGL/Commencer_avec_le_WebGL /fr/docs/Web/API/WebGL_API/Tutorial/Commencer_avec_WebGL /en-US/docs/Web/API/WebGL_API/Lighting_in_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Lighting_in_WebGL -/en-US/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL/Commencer_avec_le_WebGL /fr/docs/Web/API/WebGL_API/Tutorial/Commencer_avec_WebGL /en-US/docs/Web/API/WebGL_API/Using_shaders_to_apply_color_in_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Using_shaders_to_apply_color_in_WebGL /en-US/docs/Web/API/WebGL_API/Using_textures_in_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Using_textures_in_WebGL /en-US/docs/Web/API/WebKitCSSMatrix /en-US/docs/Web/API/DOMMatrix @@ -10119,6 +10519,7 @@ /en-US/docs/Web/API/Web_Audio_API/Migrating_from_webkitAudioContext /en-US/docs/Web/API/Web_Audio_API /en-US/docs/Web/API/Web_Audio_API/Porting_webkitAudioContext_code_to_standards_based_AudioContext /en-US/docs/Web/API/Web_Audio_API /en-US/docs/Web/API/Web_Audio_API/Targeting /en-US/docs/Web/API/WebXR_Device_API/Targeting +/en-US/docs/Web/API/Web_Audio_API/Tools /en-US/docs/Web/API/Web_Audio_API /en-US/docs/Web/API/Web_Audio_API/Web_audio_spatialisation_basics /en-US/docs/Web/API/Web_Audio_API/Web_audio_spatialization_basics /en-US/docs/Web/API/Web_Audio_API/ended_event /en-US/docs/Web/API/AudioScheduledSourceNode/ended_event /en-US/docs/Web/API/Web_Crypto_API/Supported_algorithms /en-US/docs/Web/API/SubtleCrypto @@ -10149,8 +10550,6 @@ /en-US/docs/Web/API/Window/animationend_event /en-US/docs/Web/API/Element/animationend_event /en-US/docs/Web/API/Window/animationiteration_event /en-US/docs/Web/API/Element/animationiteration_event /en-US/docs/Web/API/Window/animationstart_event /en-US/docs/Web/API/Element/animationstart_event -/en-US/docs/Web/API/Window/clearInterval /en-US/docs/Web/API/clearInterval -/en-US/docs/Web/API/Window/clearTimeout /en-US/docs/Web/API/clearTimeout /en-US/docs/Web/API/Window/content /en-US/docs/Web/API/Window /en-US/docs/Web/API/Window/convertPointFromNodeToPage /en-US/docs/Web/API/Window/webkitConvertPointFromNodeToPage /en-US/docs/Web/API/Window/convertPointFromPageToNode /en-US/docs/Web/API/Window/webkitConvertPointFromPageToNode @@ -10214,13 +10613,13 @@ /en-US/docs/Web/API/Window/removeEventListener /en-US/docs/Web/API/EventTarget/removeEventListener /en-US/docs/Web/API/Window/resolveLocalFileSystemURL /en-US/docs/Web/API/File_and_Directory_Entries_API#resolvelocalfilesystemurl() /en-US/docs/Web/API/Window/restore /en-US/docs/Web/API/Window/moveTo -/en-US/docs/Web/API/Window/setInterval /en-US/docs/Web/API/setInterval -/en-US/docs/Web/API/Window/setTimeout /en-US/docs/Web/API/setTimeout +/en-US/docs/Web/API/Window/sidebar /en-US/docs/Web/API/Window/external /en-US/docs/Web/API/Window/sidebar/Adding_search_engines_from_Web_pages /en-US/docs/Web/OpenSearch /en-US/docs/Web/API/Window/transitioncancel_event /en-US/docs/Web/API/Element/transitioncancel_event /en-US/docs/Web/API/Window/transitionend_event /en-US/docs/Web/API/Element/transitionend_event /en-US/docs/Web/API/Window/transitionrun_event /en-US/docs/Web/API/Element/transitionrun_event /en-US/docs/Web/API/Window/transitionstart_event /en-US/docs/Web/API/Element/transitionstart_event +/en-US/docs/Web/API/Window/updateCommands /en-US/docs/Web/API/Window /en-US/docs/Web/API/Window/vrdisplayblur_event /en-US/docs/Web/API/Window /en-US/docs/Web/API/Window/vrdisplayfocus_event /en-US/docs/Web/API/Window /en-US/docs/Web/API/Window/vrdisplaypointerrestricted_event /en-US/docs/Web/API/Window @@ -10254,30 +10653,30 @@ /en-US/docs/Web/API/WindowOrWorkerGlobalScope/atob /en-US/docs/Web/API/Window/atob /en-US/docs/Web/API/WindowOrWorkerGlobalScope/btoa /en-US/docs/Web/API/Window/btoa /en-US/docs/Web/API/WindowOrWorkerGlobalScope/caches /en-US/docs/Web/API/Window/caches -/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval /en-US/docs/Web/API/clearInterval -/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout /en-US/docs/Web/API/clearTimeout -/en-US/docs/Web/API/WindowOrWorkerGlobalScope/createImageBitmap /en-US/docs/Web/API/createImageBitmap +/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval /en-US/docs/Web/API/Window/clearInterval +/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout /en-US/docs/Web/API/Window/clearTimeout +/en-US/docs/Web/API/WindowOrWorkerGlobalScope/createImageBitmap /en-US/docs/Web/API/Window/createImageBitmap /en-US/docs/Web/API/WindowOrWorkerGlobalScope/crossOriginIsolated /en-US/docs/Web/API/Window/crossOriginIsolated /en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch /en-US/docs/Web/API/Window/fetch /en-US/docs/Web/API/WindowOrWorkerGlobalScope/indexedDB /en-US/docs/Web/API/Window/indexedDB /en-US/docs/Web/API/WindowOrWorkerGlobalScope/isSecureContext /en-US/docs/Web/API/Window/isSecureContext /en-US/docs/Web/API/WindowOrWorkerGlobalScope/origin /en-US/docs/Web/API/Window/origin -/en-US/docs/Web/API/WindowOrWorkerGlobalScope/queueMicrotask /en-US/docs/Web/API/queueMicrotask +/en-US/docs/Web/API/WindowOrWorkerGlobalScope/queueMicrotask /en-US/docs/Web/API/Window/queueMicrotask /en-US/docs/Web/API/WindowOrWorkerGlobalScope/rejectionhandled_event /en-US/docs/Web/API/Window/rejectionhandled_event -/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval /en-US/docs/Web/API/setInterval -/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout /en-US/docs/Web/API/setTimeout -/en-US/docs/Web/API/WindowOrWorkerGlobalScope/structuredClone /en-US/docs/Web/API/structuredClone +/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval /en-US/docs/Web/API/Window/setInterval +/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout /en-US/docs/Web/API/Window/setTimeout +/en-US/docs/Web/API/WindowOrWorkerGlobalScope/structuredClone /en-US/docs/Web/API/Window/structuredClone /en-US/docs/Web/API/WindowOrWorkerGlobalScope/unhandledrejection_event /en-US/docs/Web/API/Window/unhandledrejection_event /en-US/docs/Web/API/WindowSessionStorage /en-US/docs/Web/API/Window/sessionStorage /en-US/docs/Web/API/WindowSessionStorage.sessionStorage /en-US/docs/Web/API/Window/sessionStorage -/en-US/docs/Web/API/WindowTimers.clearInterval /en-US/docs/Web/API/clearInterval -/en-US/docs/Web/API/WindowTimers.clearTimeout /en-US/docs/Web/API/clearTimeout -/en-US/docs/Web/API/WindowTimers.setInterval /en-US/docs/Web/API/setInterval -/en-US/docs/Web/API/WindowTimers.setTimeout /en-US/docs/Web/API/setTimeout -/en-US/docs/Web/API/WindowTimers/clearInterval /en-US/docs/Web/API/clearInterval -/en-US/docs/Web/API/WindowTimers/clearTimeout /en-US/docs/Web/API/clearTimeout -/en-US/docs/Web/API/WindowTimers/setInterval /en-US/docs/Web/API/setInterval -/en-US/docs/Web/API/WindowTimers/setTimeout /en-US/docs/Web/API/setTimeout +/en-US/docs/Web/API/WindowTimers.clearInterval /en-US/docs/Web/API/Window/clearInterval +/en-US/docs/Web/API/WindowTimers.clearTimeout /en-US/docs/Web/API/Window/clearTimeout +/en-US/docs/Web/API/WindowTimers.setInterval /en-US/docs/Web/API/Window/setInterval +/en-US/docs/Web/API/WindowTimers.setTimeout /en-US/docs/Web/API/Window/setTimeout +/en-US/docs/Web/API/WindowTimers/clearInterval /en-US/docs/Web/API/Window/clearInterval +/en-US/docs/Web/API/WindowTimers/clearTimeout /en-US/docs/Web/API/Window/clearTimeout +/en-US/docs/Web/API/WindowTimers/setInterval /en-US/docs/Web/API/Window/setInterval +/en-US/docs/Web/API/WindowTimers/setTimeout /en-US/docs/Web/API/Window/setTimeout /en-US/docs/Web/API/Worker.Worker /en-US/docs/Web/API/Worker/Worker /en-US/docs/Web/API/Worker.Worker() /en-US/docs/Web/API/Worker/Worker /en-US/docs/Web/API/Worker.onmessage /en-US/docs/Web/API/Worker/message_event @@ -10305,8 +10704,6 @@ /en-US/docs/Web/API/WorkerGlobalScope.performance /en-US/docs/Web/API/WorkerGlobalScope/performance /en-US/docs/Web/API/WorkerGlobalScope.self /en-US/docs/Web/API/WorkerGlobalScope/self /en-US/docs/Web/API/WorkerGlobalScope/WorkerGlobalScope.caches /en-US/docs/Web/API/WorkerGlobalScope/caches -/en-US/docs/Web/API/WorkerGlobalScope/clearInterval /en-US/docs/Web/API/clearInterval -/en-US/docs/Web/API/WorkerGlobalScope/clearTimeout /en-US/docs/Web/API/clearTimeout /en-US/docs/Web/API/WorkerGlobalScope/close /en-US/docs/Web/API/DedicatedWorkerGlobalScope/close /en-US/docs/Web/API/WorkerGlobalScope/console /en-US/docs/Web/API/console /en-US/docs/Web/API/WorkerGlobalScope/onclose /en-US/docs/Web/API/DedicatedWorkerGlobalScope/close @@ -10315,8 +10712,6 @@ /en-US/docs/Web/API/WorkerGlobalScope/onoffline /en-US/docs/Web/API/WorkerGlobalScope/offline_event /en-US/docs/Web/API/WorkerGlobalScope/ononline /en-US/docs/Web/API/WorkerGlobalScope/online_event /en-US/docs/Web/API/WorkerGlobalScope/requestFileSystemSync /en-US/docs/Web/API/File_and_Directory_Entries_API -/en-US/docs/Web/API/WorkerGlobalScope/setInterval /en-US/docs/Web/API/setInterval -/en-US/docs/Web/API/WorkerGlobalScope/setTimeout /en-US/docs/Web/API/setTimeout /en-US/docs/Web/API/WorkerLocation.hash /en-US/docs/Web/API/WorkerLocation/hash /en-US/docs/Web/API/WorkerNavigator/taintEnabled /en-US/docs/Web/API/Navigator/taintEnabled /en-US/docs/Web/API/WritableStreamDefaultWriter/WritableStreamDefaultWriter.closed /en-US/docs/Web/API/WritableStreamDefaultWriter/closed @@ -10404,41 +10799,44 @@ /en-US/docs/Web/API/atob /en-US/docs/Web/API/Window/atob /en-US/docs/Web/API/btoa /en-US/docs/Web/API/Window/btoa /en-US/docs/Web/API/caches /en-US/docs/Web/API/Window/caches +/en-US/docs/Web/API/clearInterval /en-US/docs/Web/API/Window/clearInterval +/en-US/docs/Web/API/clearTimeout /en-US/docs/Web/API/Window/clearTimeout /en-US/docs/Web/API/console.assert /en-US/docs/Web/API/console/assert_static /en-US/docs/Web/API/console.dir /en-US/docs/Web/API/console/dir_static /en-US/docs/Web/API/console.error /en-US/docs/Web/API/console/error_static /en-US/docs/Web/API/console.exception /en-US/docs/Web/API/console/error_static /en-US/docs/Web/API/console.group /en-US/docs/Web/API/console/group_static -/en-US/docs/Web/API/console.groupCollapsed /en-US/docs/Web/API/console/groupcollapsed_static -/en-US/docs/Web/API/console.groupEnd /en-US/docs/Web/API/console/groupend_static +/en-US/docs/Web/API/console.groupCollapsed /en-US/docs/Web/API/console/groupCollapsed_static +/en-US/docs/Web/API/console.groupEnd /en-US/docs/Web/API/console/groupEnd_static /en-US/docs/Web/API/console.info /en-US/docs/Web/API/console/info_static /en-US/docs/Web/API/console.log /en-US/docs/Web/API/console/log_static /en-US/docs/Web/API/console.time /en-US/docs/Web/API/console/time_static -/en-US/docs/Web/API/console.timeEnd /en-US/docs/Web/API/console/timeend_static +/en-US/docs/Web/API/console.timeEnd /en-US/docs/Web/API/console/timeEnd_static /en-US/docs/Web/API/console.trace /en-US/docs/Web/API/console/trace_static /en-US/docs/Web/API/console.warn /en-US/docs/Web/API/console/warn_static /en-US/docs/Web/API/console/assert /en-US/docs/Web/API/console/assert_static /en-US/docs/Web/API/console/clear /en-US/docs/Web/API/console/clear_static /en-US/docs/Web/API/console/count /en-US/docs/Web/API/console/count_static -/en-US/docs/Web/API/console/countReset /en-US/docs/Web/API/console/countreset_static +/en-US/docs/Web/API/console/countReset /en-US/docs/Web/API/console/countReset_static /en-US/docs/Web/API/console/debug /en-US/docs/Web/API/console/debug_static /en-US/docs/Web/API/console/dir /en-US/docs/Web/API/console/dir_static /en-US/docs/Web/API/console/dirxml /en-US/docs/Web/API/console/dirxml_static /en-US/docs/Web/API/console/error /en-US/docs/Web/API/console/error_static /en-US/docs/Web/API/console/group /en-US/docs/Web/API/console/group_static -/en-US/docs/Web/API/console/groupCollapsed /en-US/docs/Web/API/console/groupcollapsed_static -/en-US/docs/Web/API/console/groupEnd /en-US/docs/Web/API/console/groupend_static +/en-US/docs/Web/API/console/groupCollapsed /en-US/docs/Web/API/console/groupCollapsed_static +/en-US/docs/Web/API/console/groupEnd /en-US/docs/Web/API/console/groupEnd_static /en-US/docs/Web/API/console/info /en-US/docs/Web/API/console/info_static /en-US/docs/Web/API/console/log /en-US/docs/Web/API/console/log_static /en-US/docs/Web/API/console/profile /en-US/docs/Web/API/console/profile_static -/en-US/docs/Web/API/console/profileEnd /en-US/docs/Web/API/console/profileend_static +/en-US/docs/Web/API/console/profileEnd /en-US/docs/Web/API/console/profileEnd_static /en-US/docs/Web/API/console/table /en-US/docs/Web/API/console/table_static /en-US/docs/Web/API/console/time /en-US/docs/Web/API/console/time_static -/en-US/docs/Web/API/console/timeEnd /en-US/docs/Web/API/console/timeend_static -/en-US/docs/Web/API/console/timeLog /en-US/docs/Web/API/console/timelog_static -/en-US/docs/Web/API/console/timeStamp /en-US/docs/Web/API/console/timestamp_static +/en-US/docs/Web/API/console/timeEnd /en-US/docs/Web/API/console/timeEnd_static +/en-US/docs/Web/API/console/timeLog /en-US/docs/Web/API/console/timeLog_static +/en-US/docs/Web/API/console/timeStamp /en-US/docs/Web/API/console/timeStamp_static /en-US/docs/Web/API/console/trace /en-US/docs/Web/API/console/trace_static /en-US/docs/Web/API/console/warn /en-US/docs/Web/API/console/warn_static +/en-US/docs/Web/API/createImageBitmap /en-US/docs/Web/API/Window/createImageBitmap /en-US/docs/Web/API/crossOriginIsolated /en-US/docs/Web/API/Window/crossOriginIsolated /en-US/docs/Web/API/crypto_property /en-US/docs/Web/API/Window/crypto /en-US/docs/Web/API/document.URL /en-US/docs/Web/API/Document/URL @@ -10709,6 +11107,7 @@ /en-US/docs/Web/API/onMSVideoOptimalLayoutChanged_ /en-US/docs/Web/API/HTMLVideoElement /en-US/docs/Web/API/origin /en-US/docs/Web/API/Window/origin /en-US/docs/Web/API/performance_property /en-US/docs/Web/API/Window/performance +/en-US/docs/Web/API/queueMicrotask /en-US/docs/Web/API/Window/queueMicrotask /en-US/docs/Web/API/range.cloneContents /en-US/docs/Web/API/range/cloneContents /en-US/docs/Web/API/range.cloneRange /en-US/docs/Web/API/range/cloneRange /en-US/docs/Web/API/range.collapse /en-US/docs/Web/API/range/collapse @@ -10740,9 +11139,13 @@ /en-US/docs/Web/API/range.startOffset /en-US/docs/Web/API/range/startOffset /en-US/docs/Web/API/range.surroundContents /en-US/docs/Web/API/range/surroundContents /en-US/docs/Web/API/range.toString /en-US/docs/Web/API/range/toString +/en-US/docs/Web/API/reportError /en-US/docs/Web/API/Window/reportError /en-US/docs/Web/API/scheduler_property /en-US/docs/Web/API/Window/scheduler /en-US/docs/Web/API/select.type /en-US/docs/Web/API/HTMLSelectElement/type /en-US/docs/Web/API/sessionStorage /en-US/docs/Web/API/Window/sessionStorage +/en-US/docs/Web/API/setInterval /en-US/docs/Web/API/Window/setInterval +/en-US/docs/Web/API/setTimeout /en-US/docs/Web/API/Window/setTimeout +/en-US/docs/Web/API/structuredClone /en-US/docs/Web/API/Window/structuredClone /en-US/docs/Web/API/style.media /en-US/docs/Web/API/HTMLStyleElement/media /en-US/docs/Web/API/style.type /en-US/docs/Web/API/HTMLStyleElement/type /en-US/docs/Web/API/success /en-US/docs/Web/API/IDBRequest/success_event @@ -10785,8 +11188,8 @@ /en-US/docs/Web/API/window.cancelAnimationFrame /en-US/docs/Web/API/Window/cancelAnimationFrame /en-US/docs/Web/API/window.captureEvents /en-US/docs/Web/API/Window/captureEvents /en-US/docs/Web/API/window.clearImmediate /en-US/docs/Web/API/Window/clearImmediate -/en-US/docs/Web/API/window.clearInterval /en-US/docs/Web/API/clearInterval -/en-US/docs/Web/API/window.clearTimeout /en-US/docs/Web/API/clearTimeout +/en-US/docs/Web/API/window.clearInterval /en-US/docs/Web/API/Window/clearInterval +/en-US/docs/Web/API/window.clearTimeout /en-US/docs/Web/API/Window/clearTimeout /en-US/docs/Web/API/window.close /en-US/docs/Web/API/Window/close /en-US/docs/Web/API/window.closed /en-US/docs/Web/API/Window/closed /en-US/docs/Web/API/window.confirm /en-US/docs/Web/API/Window/confirm @@ -10934,10 +11337,10 @@ /en-US/docs/Web/API/window.scrollbars /en-US/docs/Web/API/Window/scrollbars /en-US/docs/Web/API/window.self /en-US/docs/Web/API/Window/self /en-US/docs/Web/API/window.setImmediate /en-US/docs/Web/API/Window/setImmediate -/en-US/docs/Web/API/window.setInterval /en-US/docs/Web/API/setInterval -/en-US/docs/Web/API/window.setTimeout /en-US/docs/Web/API/setTimeout +/en-US/docs/Web/API/window.setInterval /en-US/docs/Web/API/Window/setInterval +/en-US/docs/Web/API/window.setTimeout /en-US/docs/Web/API/Window/setTimeout /en-US/docs/Web/API/window.showModalDialog /en-US/docs/Web/API/Window/showModalDialog -/en-US/docs/Web/API/window.sidebar /en-US/docs/Web/API/Window/sidebar +/en-US/docs/Web/API/window.sidebar /en-US/docs/Web/API/Window/external /en-US/docs/Web/API/window.sizeToContent /en-US/docs/Web/API/Window/sizeToContent /en-US/docs/Web/API/window.status /en-US/docs/Web/API/Window/status /en-US/docs/Web/API/window.statusbar /en-US/docs/Web/API/Window/statusbar @@ -10945,12 +11348,12 @@ /en-US/docs/Web/API/window.toolbar /en-US/docs/Web/API/Window/toolbar /en-US/docs/Web/API/window.top /en-US/docs/Web/API/Window/top /en-US/docs/Web/API/window.unescape /en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape -/en-US/docs/Web/API/window.updateCommands /en-US/docs/Web/API/Window/updateCommands +/en-US/docs/Web/API/window.updateCommands /en-US/docs/Web/API/Window /en-US/docs/Web/API/window.window /en-US/docs/Web/API/Window/window /en-US/docs/Web/API/window/onscroll /en-US/docs/Web/API/Element/scroll_event /en-US/docs/Web/API/window/onscroll-temp /en-US/docs/Web/API/Element/scroll_event /en-US/docs/Web/API/x-ms-aria-flowfrom /en-US/docs/Web/Accessibility/ARIA -/en-US/docs/Web/APIWwindow.sidebar /en-US/docs/Web/API/Window/sidebar +/en-US/docs/Web/APIWwindow.sidebar /en-US/docs/Web/API/Window/external /en-US/docs/Web/APIr /en-US/docs/Web/API/Document/dir /en-US/docs/Web/Accessibility/ARIA/ARIA_Examples /en-US/docs/Web/Accessibility/ARIA /en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Complementary_role /en-US/docs/Web/Accessibility/ARIA/Roles/Complementary_role @@ -11050,16 +11453,16 @@ /en-US/docs/Web/Apps/Build/Performance/Optimizing_startup_performance /en-US/docs/Web/Performance/Optimizing_startup_performance /en-US/docs/Web/Apps/Build/Performance/Performance_fundamentals /en-US/docs/Web/Performance/Fundamentals /en-US/docs/Web/Apps/Build/Performance/The_performance_of_CSS_and_JavaScript_animations /en-US/docs/Web/Performance/CSS_JavaScript_animation_performance -/en-US/docs/Web/Apps/Build/User_input_methods /en-US/docs/Learn/Forms/User_input_methods +/en-US/docs/Web/Apps/Build/User_input_methods /en-US/docs/Learn_web_development/Extensions/Forms/User_input_methods /en-US/docs/Web/Apps/Build/User_notifications/Checking_when_a_deadline_is_due /en-US/docs/Web/API/IndexedDB_API/Checking_when_a_deadline_is_due -/en-US/docs/Web/Apps/Design/Graphic_design_for_responsive_sites /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Design/Graphics_for_responsive_sites /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Design/Guidelines/what-is-responsive-web-design /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Design/Responsive_Navigation_Patterns /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Design/UI_layout_basics/Graphics_for_responsive_sites /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Design/UI_layout_basics/Mobile_first /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Design/UI_layout_basics/Responsive_Navigation_Patterns /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Design/UI_layout_basics/responsive_design_building_blocks /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Design/Graphic_design_for_responsive_sites /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Design/Graphics_for_responsive_sites /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Design/Guidelines/what-is-responsive-web-design /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Design/Responsive_Navigation_Patterns /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Design/UI_layout_basics/Graphics_for_responsive_sites /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Design/UI_layout_basics/Mobile_first /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Design/UI_layout_basics/Responsive_Navigation_Patterns /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Design/UI_layout_basics/responsive_design_building_blocks /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design /en-US/docs/Web/Apps/Developing/Control_the_display/Checking_when_a_deadline_is_due /en-US/docs/Web/API/IndexedDB_API/Checking_when_a_deadline_is_due /en-US/docs/Web/Apps/Developing/JavaScript_API/navigator.mozApps.mgmt.addEventListener /en-US/docs/Web/API/EventTarget/addEventListener /en-US/docs/Web/Apps/Developing/JavaScript_API/navigator.mozApps.mgmt.removeEventListener /en-US/docs/Web/API/EventTarget/removeEventListener @@ -11084,9 +11487,9 @@ /en-US/docs/Web/Apps/Fundamentals/Performance/CSS_JavaScript_animation_performance /en-US/docs/Web/Performance/CSS_JavaScript_animation_performance /en-US/docs/Web/Apps/Fundamentals/Performance/Optimizing_startup_performance /en-US/docs/Web/Performance/Optimizing_startup_performance /en-US/docs/Web/Apps/Fundamentals/Performance/Performance_fundamentals /en-US/docs/Web/Performance/Fundamentals -/en-US/docs/Web/Apps/Fundamentals/User_input_methods /en-US/docs/Learn/Forms/User_input_methods +/en-US/docs/Web/Apps/Fundamentals/User_input_methods /en-US/docs/Learn_web_development/Extensions/Forms/User_input_methods /en-US/docs/Web/Apps/Fundamentals/User_notifications/Checking_when_a_deadline_is_due /en-US/docs/Web/API/IndexedDB_API/Checking_when_a_deadline_is_due -/en-US/docs/Web/Apps/Graphics_and_UX/graphic_design_for_responsive_sites /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Graphics_and_UX/graphic_design_for_responsive_sites /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design /en-US/docs/Web/Apps/JavaScript_API/navigator.mozApps.mgmt.addEventListener /en-US/docs/Web/API/EventTarget/addEventListener /en-US/docs/Web/Apps/JavaScript_API/navigator.mozApps.mgmt.removeEventListener /en-US/docs/Web/API/EventTarget/removeEventListener /en-US/docs/Web/Apps/Modern /en-US/docs/Web/Progressive_web_apps @@ -11096,11 +11499,11 @@ /en-US/docs/Web/Apps/Modern/Network_independent /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web/Apps/Modern/Progressive /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web/Apps/Modern/Re-engageable /en-US/docs/Web/Progressive_web_apps -/en-US/docs/Web/Apps/Modern/Responsive /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Modern/Responsive/Graphics_for_responsive_sites /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Modern/Responsive/Mobile_first /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Modern/Responsive/Responsive_navigation_patterns /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Modern/Responsive/responsive_design_building_blocks /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Modern/Responsive /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Modern/Responsive/Graphics_for_responsive_sites /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Modern/Responsive/Mobile_first /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Modern/Responsive/Responsive_navigation_patterns /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Modern/Responsive/responsive_design_building_blocks /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design /en-US/docs/Web/Apps/Modern/Safe /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web/Apps/Progressive /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web/Apps/Progressive/Add_to_home_screen /en-US/docs/Web/Progressive_web_apps/Guides/Making_PWAs_installable @@ -11117,18 +11520,19 @@ /en-US/docs/Web/Apps/Progressive/Progressive /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web/Apps/Progressive/Re-engageable /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web/Apps/Progressive/Re-engageable_Notifications_Push /en-US/docs/Web/Progressive_web_apps/Tutorials/js13kGames/Re-engageable_Notifications_Push -/en-US/docs/Web/Apps/Progressive/Responsive /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Progressive/Responsive/Graphics_for_responsive_sites /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Progressive/Responsive/Mobile_first /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Progressive/Responsive/Responsive_navigation_patterns /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/Progressive/Responsive/responsive_design_building_blocks /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Progressive/Responsive /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Progressive/Responsive/Graphics_for_responsive_sites /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Progressive/Responsive/Mobile_first /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Progressive/Responsive/Responsive_navigation_patterns /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/Progressive/Responsive/responsive_design_building_blocks /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design /en-US/docs/Web/Apps/Progressive/Safe /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web/Apps/Quickstart/App_developer_tools https://firefox-source-docs.mozilla.org/devtools-user/index.html /en-US/docs/Web/Apps/Tools_and_frameworks/App_developer_tools https://firefox-source-docs.mozilla.org/devtools-user/index.html -/en-US/docs/Web/Apps/User_input_methods /en-US/docs/Learn/Forms/User_input_methods -/en-US/docs/Web/Apps/app_layout/Mobile_first /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Apps/app_layout/responsive_design_building_blocks /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/User_input_methods /en-US/docs/Learn_web_development/Extensions/Forms/User_input_methods +/en-US/docs/Web/Apps/app_layout/Mobile_first /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Apps/app_layout/responsive_design_building_blocks /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design /en-US/docs/Web/Apps_clone /en-US/docs/Web/Progressive_web_apps +/en-US/docs/Web/Basics_of_HTTP/Identifying_resources_on_the_Web /en-US/docs/Web/URI /en-US/docs/Web/CSS/-epub-caption-side /en-US/docs/Web/CSS/caption-side /en-US/docs/Web/CSS/-epub-text-transform /en-US/docs/Web/CSS/text-transform /en-US/docs/Web/CSS/-moz-alias /en-US/docs/Web/CSS/cursor @@ -11362,7 +11766,6 @@ /en-US/docs/Web/CSS/::cue-region /en-US/docs/Web/API/WebVTT_API /en-US/docs/Web/CSS/:@-moz-document /en-US/docs/Web/CSS/@document /en-US/docs/Web/CSS/:any /en-US/docs/Web/CSS/:is -/en-US/docs/Web/CSS/:closed /en-US/docs/Web/CSS/:popover-open /en-US/docs/Web/CSS/:dir() /en-US/docs/Web/CSS/:dir /en-US/docs/Web/CSS/:host() /en-US/docs/Web/CSS/:host_function /en-US/docs/Web/CSS/:lang() /en-US/docs/Web/CSS/:lang @@ -11375,7 +11778,6 @@ /en-US/docs/Web/CSS/:nth-last-col /en-US/docs/Web/CSS/:nth-last-of-type /en-US/docs/Web/CSS/:nth-last-of-type() /en-US/docs/Web/CSS/:nth-last-of-type /en-US/docs/Web/CSS/:nth-of-type() /en-US/docs/Web/CSS/:nth-of-type -/en-US/docs/Web/CSS/:open /en-US/docs/Web/CSS/:popover-open /en-US/docs/Web/CSS/@-moz-document /en-US/docs/Web/CSS/@document /en-US/docs/Web/CSS/@font-face/font-variant /en-US/docs/Web/CSS/@font-face /en-US/docs/Web/CSS/@media/update-frequency /en-US/docs/Web/CSS/@media/update @@ -11500,6 +11902,7 @@ /en-US/docs/Web/CSS/CSS_User_Interface /en-US/docs/Web/CSS/CSS_basic_user_interface /en-US/docs/Web/CSS/CSS_Variables /en-US/docs/Web/CSS/CSS_cascading_variables /en-US/docs/Web/CSS/CSS_Viewport /en-US/docs/Web/CSS +/en-US/docs/Web/CSS/CSS_animations/Tips /en-US/docs/Web/API/Web_Animations_API/Tips /en-US/docs/Web/CSS/CSS_charsets /en-US/docs/Web/CSS/CSS_syntax /en-US/docs/Web/CSS/CSS_container_queries /en-US/docs/Web/CSS/CSS_containment/Container_queries /en-US/docs/Web/CSS/CSS_descriptor_definition /en-US/docs/Web/CSS @@ -11507,6 +11910,7 @@ /en-US/docs/Web/CSS/CSS_flexible_box_layout/Backwards_compatibility_of_flexbox /en-US/docs/Glossary/Flexbox /en-US/docs/Web/CSS/CSS_grid_layout/Layout_using_line-based_placement /en-US/docs/Web/CSS/CSS_grid_layout/Grid_layout_using_line-based_placement /en-US/docs/Web/CSS/CSS_grid_layout/Layout_using_named_grid_lines /en-US/docs/Web/CSS/CSS_grid_layout/Grid_layout_using_named_grid_lines +/en-US/docs/Web/CSS/CSS_miscellaneous /en-US/docs/Web/CSS /en-US/docs/Web/CSS/CSS_percentage_values /en-US/docs/Web/CSS /en-US/docs/Web/CSS/CSS_ruby /en-US/docs/Web/CSS/CSS_ruby_layout /en-US/docs/Web/CSS/CSS_special_properties /en-US/docs/Web/CSS @@ -11514,7 +11918,7 @@ /en-US/docs/Web/CSS/CSS_values_serialization /en-US/docs/Web/CSS /en-US/docs/Web/CSS/CSS_values_syntax /en-US/docs/Web/CSS /en-US/docs/Web/CSS/Child_selectors /en-US/docs/Web/CSS/Child_combinator -/en-US/docs/Web/CSS/Common_CSS_Questions /en-US/docs/Learn/CSS/Howto/CSS_FAQ +/en-US/docs/Web/CSS/Common_CSS_Questions /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/CSS_FAQ /en-US/docs/Web/CSS/Compositing_and_Blending /en-US/docs/Web/CSS/CSS_compositing_and_blending /en-US/docs/Web/CSS/Currentcolor /en-US/docs/Web/CSS/color_value#currentcolor_keyword /en-US/docs/Web/CSS/Descendant_selectors /en-US/docs/Web/CSS/Descendant_combinator @@ -11577,9 +11981,9 @@ /en-US/docs/Web/CSS/calc-constant /en-US/docs/Web/CSS/calc-keyword /en-US/docs/Web/CSS/clamp() /en-US/docs/Web/CSS/clamp /en-US/docs/Web/CSS/color-adjust /en-US/docs/Web/CSS/print-color-adjust -/en-US/docs/Web/CSS/color-interpolation-filters /en-US/docs/Web/SVG/Attribute/color-interpolation-filters /en-US/docs/Web/CSS/color_value/color() /en-US/docs/Web/CSS/color_value/color -/en-US/docs/Web/CSS/color_value/color-contrast() /en-US/docs/Web/CSS/color_value/color-contrast +/en-US/docs/Web/CSS/color_value/color-contrast /en-US/docs/Web/CSS/color_value +/en-US/docs/Web/CSS/color_value/color-contrast() /en-US/docs/Web/CSS/color_value /en-US/docs/Web/CSS/color_value/color-mix() /en-US/docs/Web/CSS/color_value/color-mix /en-US/docs/Web/CSS/color_value/color_keywords /en-US/docs/Web/CSS/named-color /en-US/docs/Web/CSS/color_value/device-cmyk() /en-US/docs/Web/CSS/color_value/device-cmyk @@ -11607,13 +12011,9 @@ /en-US/docs/Web/CSS/display/two-value_syntax_of_display /en-US/docs/Web/CSS/display/multi-keyword_syntax_of_display /en-US/docs/Web/CSS/document /en-US/docs/Web/CSS/@document /en-US/docs/Web/CSS/document/@-moz-document /en-US/docs/Web/CSS/@document -/en-US/docs/Web/CSS/dominant-baseline /en-US/docs/Web/SVG/Attribute/dominant-baseline /en-US/docs/Web/CSS/element() /en-US/docs/Web/CSS/element /en-US/docs/Web/CSS/env() /en-US/docs/Web/CSS/env /en-US/docs/Web/CSS/fallback /en-US/docs/Web/CSS/@counter-style/fallback -/en-US/docs/Web/CSS/fill /en-US/docs/Web/SVG/Attribute/fill -/en-US/docs/Web/CSS/fill-opacity /en-US/docs/Web/SVG/Attribute/fill-opacity -/en-US/docs/Web/CSS/fill-rule /en-US/docs/Web/SVG/Attribute/fill-rule /en-US/docs/Web/CSS/filter-function/blur() /en-US/docs/Web/CSS/filter-function/blur /en-US/docs/Web/CSS/filter-function/brightness() /en-US/docs/Web/CSS/filter-function/brightness /en-US/docs/Web/CSS/filter-function/contrast() /en-US/docs/Web/CSS/filter-function/contrast @@ -11625,15 +12025,13 @@ /en-US/docs/Web/CSS/filter-function/path() /en-US/docs/Web/CSS/basic-shape/path /en-US/docs/Web/CSS/filter-function/saturate() /en-US/docs/Web/CSS/filter-function/saturate /en-US/docs/Web/CSS/filter-function/sepia() /en-US/docs/Web/CSS/filter-function/sepia -/en-US/docs/Web/CSS/filter-function/url /en-US/docs/Web/CSS/url +/en-US/docs/Web/CSS/filter-function/url /en-US/docs/Web/CSS/url_value /en-US/docs/Web/CSS/fit-content() /en-US/docs/Web/CSS/fit-content_function /en-US/docs/Web/CSS/flex-align /en-US/docs/Web/CSS/align-items /en-US/docs/Web/CSS/flex-item-align /en-US/docs/Web/CSS/align-self /en-US/docs/Web/CSS/flex-line-pack /en-US/docs/Web/CSS/align-content /en-US/docs/Web/CSS/flex-order /en-US/docs/Web/CSS/order /en-US/docs/Web/CSS/flex-pack /en-US/docs/Web/CSS/justify-content -/en-US/docs/Web/CSS/flood-color /en-US/docs/Web/SVG/Attribute/flood-color -/en-US/docs/Web/CSS/flood-opacity /en-US/docs/Web/SVG/Attribute/flood-opacity /en-US/docs/Web/CSS/font-size/font-optical-sizing /en-US/docs/Web/CSS/font-optical-sizing /en-US/docs/Web/CSS/gradient/conic-gradient() /en-US/docs/Web/CSS/gradient/conic-gradient /en-US/docs/Web/CSS/gradient/linear-gradient() /en-US/docs/Web/CSS/gradient/linear-gradient @@ -11653,16 +12051,15 @@ /en-US/docs/Web/CSS/image/paint() /en-US/docs/Web/CSS/image/paint /en-US/docs/Web/CSS/imagefunction /en-US/docs/Web/CSS/image/image /en-US/docs/Web/CSS/inherited_and_non-inherited_properties /en-US/docs/Web/CSS/Inheritance +/en-US/docs/Web/CSS/inset-area /en-US/docs/Web/CSS/position-area +/en-US/docs/Web/CSS/inset-area_value /en-US/docs/Web/CSS/position-area_value /en-US/docs/Web/CSS/justify-tracks /en-US/docs/Web/CSS/CSS_grid_layout/Masonry_layout /en-US/docs/Web/CSS/kerning /en-US/docs/Web/CSS/font-kerning -/en-US/docs/Web/CSS/lighting-color /en-US/docs/Web/SVG/Attribute/lighting-color /en-US/docs/Web/CSS/linear-gradient /en-US/docs/Web/CSS/gradient/linear-gradient /en-US/docs/Web/CSS/linear-gradient() /en-US/docs/Web/CSS/gradient/linear-gradient /en-US/docs/Web/CSS/margin-new /en-US/docs/Web/CSS/margin /en-US/docs/Web/CSS/margin_collapsing /en-US/docs/Web/CSS/CSS_box_model/Mastering_margin_collapsing -/en-US/docs/Web/CSS/marker-end /en-US/docs/Web/SVG/Attribute/marker-end -/en-US/docs/Web/CSS/marker-mid /en-US/docs/Web/SVG/Attribute/marker-mid -/en-US/docs/Web/CSS/marker-start /en-US/docs/Web/SVG/Attribute/marker-start +/en-US/docs/Web/CSS/masonry-auto-flow /en-US/docs/Web/CSS/grid-auto-flow /en-US/docs/Web/CSS/max() /en-US/docs/Web/CSS/max /en-US/docs/Web/CSS/media /en-US/docs/Web/CSS/@media /en-US/docs/Web/CSS/media/Bitmap /en-US/docs/Web/CSS/@media @@ -11706,27 +12103,15 @@ /en-US/docs/Web/CSS/scroll /en-US/docs/Web/CSS/overflow /en-US/docs/Web/CSS/scrollbar-track-color /en-US/docs/Web/CSS/scrollbar-color /en-US/docs/Web/CSS/shape-box /en-US/docs/Web/CSS/shape-outside -/en-US/docs/Web/CSS/shape-rendering /en-US/docs/Web/SVG/Attribute/shape-rendering /en-US/docs/Web/CSS/sign() /en-US/docs/Web/CSS/sign /en-US/docs/Web/CSS/sign_function /en-US/docs/Web/CSS/sign /en-US/docs/Web/CSS/single-transition-timing-function /en-US/docs/Web/CSS/easing-function /en-US/docs/Web/CSS/speak-as /en-US/docs/Web/CSS/@counter-style/speak-as /en-US/docs/Web/CSS/static /en-US/docs/Web/CSS/position -/en-US/docs/Web/CSS/stop-color /en-US/docs/Web/SVG/Attribute/stop-color -/en-US/docs/Web/CSS/stop-opacity /en-US/docs/Web/SVG/Attribute/stop-opacity -/en-US/docs/Web/CSS/stroke /en-US/docs/Web/SVG/Attribute/stroke -/en-US/docs/Web/CSS/stroke-dasharray /en-US/docs/Web/SVG/Attribute/stroke-dasharray -/en-US/docs/Web/CSS/stroke-dashoffset /en-US/docs/Web/SVG/Attribute/stroke-dashoffset -/en-US/docs/Web/CSS/stroke-linecap /en-US/docs/Web/SVG/Attribute/stroke-linecap -/en-US/docs/Web/CSS/stroke-linejoin /en-US/docs/Web/SVG/Attribute/stroke-linejoin -/en-US/docs/Web/CSS/stroke-miterlimit /en-US/docs/Web/SVG/Attribute/stroke-miterlimit -/en-US/docs/Web/CSS/stroke-opacity /en-US/docs/Web/SVG/Attribute/stroke-opacity -/en-US/docs/Web/CSS/stroke-width /en-US/docs/Web/SVG/Attribute/stroke-width /en-US/docs/Web/CSS/suffix /en-US/docs/Web/CSS/@counter-style/suffix /en-US/docs/Web/CSS/symbols() /en-US/docs/Web/CSS/symbols /en-US/docs/Web/CSS/symbols-descriptor /en-US/docs/Web/CSS/@counter-style/symbols /en-US/docs/Web/CSS/system /en-US/docs/Web/CSS/@counter-style/system -/en-US/docs/Web/CSS/text-anchor /en-US/docs/Web/SVG/Attribute/text-anchor /en-US/docs/Web/CSS/text-combine-horizontal /en-US/docs/Web/CSS/text-combine-upright /en-US/docs/Web/CSS/time-function /en-US/docs/Web/CSS/easing-function /en-US/docs/Web/CSS/timing-function /en-US/docs/Web/CSS/easing-function @@ -11752,8 +12137,9 @@ /en-US/docs/Web/CSS/transform-function/translateY() /en-US/docs/Web/CSS/transform-function/translateY /en-US/docs/Web/CSS/transform-function/translateZ() /en-US/docs/Web/CSS/transform-function/translateZ /en-US/docs/Web/CSS/unicode-range /en-US/docs/Web/CSS/@font-face/unicode-range -/en-US/docs/Web/CSS/uri /en-US/docs/Web/CSS/url -/en-US/docs/Web/CSS/url() /en-US/docs/Web/CSS/url +/en-US/docs/Web/CSS/uri /en-US/docs/Web/CSS/url_value +/en-US/docs/Web/CSS/url /en-US/docs/Web/CSS/url_value +/en-US/docs/Web/CSS/url() /en-US/docs/Web/CSS/url_function /en-US/docs/Web/CSS/user-ident /en-US/docs/Web/CSS/custom-ident /en-US/docs/Web/CSS/var() /en-US/docs/Web/CSS/var /en-US/docs/Web/CSS/visible /en-US/docs/Web/CSS/visibility @@ -11799,7 +12185,7 @@ /en-US/docs/Web/Events/blur /en-US/docs/Web/API/Element/blur_event /en-US/docs/Web/Events/boundary /en-US/docs/Web/API/SpeechSynthesisUtterance/boundary_event /en-US/docs/Web/Events/bufferedamountlow /en-US/docs/Web/API/RTCDataChannel/bufferedamountlow_event -/en-US/docs/Web/Events/cancel /en-US/docs/Web/API/HTMLElement/cancel_event +/en-US/docs/Web/Events/cancel /en-US/docs/Web/API/HTMLDialogElement/cancel_event /en-US/docs/Web/Events/canplay /en-US/docs/Web/API/HTMLMediaElement/canplay_event /en-US/docs/Web/Events/canplaythrough /en-US/docs/Web/API/HTMLMediaElement/canplaythrough_event /en-US/docs/Web/Events/change /en-US/docs/Web/API/HTMLElement/change_event @@ -11972,7 +12358,7 @@ /en-US/docs/Web/Events/suspend /en-US/docs/Web/API/HTMLMediaElement/suspend_event /en-US/docs/Web/Events/timeout /en-US/docs/Web/API/XMLHttpRequest/timeout_event /en-US/docs/Web/Events/timeupdate /en-US/docs/Web/API/HTMLMediaElement/timeupdate_event -/en-US/docs/Web/Events/toggle /en-US/docs/Web/API/HTMLDetailsElement/toggle_event +/en-US/docs/Web/Events/toggle /en-US/docs/Web/API/HTMLElement/toggle_event /en-US/docs/Web/Events/tonechange /en-US/docs/Web/API/RTCDTMFSender/tonechange_event /en-US/docs/Web/Events/touchcancel /en-US/docs/Web/API/Element/touchcancel_event /en-US/docs/Web/Events/touchend /en-US/docs/Web/API/Element/touchend_event @@ -12011,9 +12397,9 @@ /en-US/docs/Web/Events/webkitmouseforceup /en-US/docs/Web/API/Element/webkitmouseforceup_event /en-US/docs/Web/Events/webkitmouseforcewillbegin /en-US/docs/Web/API/Element/webkitmouseforcewillbegin_event /en-US/docs/Web/Events/wheel /en-US/docs/Web/API/Element/wheel_event -/en-US/docs/Web/Guide/AJAX /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data -/en-US/docs/Web/Guide/AJAX/Community /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data -/en-US/docs/Web/Guide/AJAX/Getting_Started /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data +/en-US/docs/Web/Guide/AJAX /en-US/docs/Learn_web_development/Core/Scripting/Network_requests +/en-US/docs/Web/Guide/AJAX/Community /en-US/docs/Learn_web_development/Core/Scripting/Network_requests +/en-US/docs/Web/Guide/AJAX/Getting_Started /en-US/docs/Learn_web_development/Core/Scripting/Network_requests /en-US/docs/Web/Guide/AJAX/WAI_ARIA_Live_Regions /en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions /en-US/docs/Web/Guide/AJAX/WAI_ARIA_Live_Regions_API_Support /en-US/docs/Mozilla/Firefox/Releases/3/WAI_ARIA_Live_Regions_API_Support /en-US/docs/Web/Guide/API /en-US/docs/Web/API @@ -12056,28 +12442,27 @@ /en-US/docs/Web/Guide/Audio_and_video_delivery/buffering_seeking_time_ranges /en-US/docs/Web/Media/Audio_and_video_delivery/buffering_seeking_time_ranges /en-US/docs/Web/Guide/Audio_and_video_delivery/cross_browser_video_player /en-US/docs/Web/Media/Audio_and_video_delivery/cross_browser_video_player /en-US/docs/Web/Guide/Audio_and_video_manipulation /en-US/docs/Web/Media/Audio_and_video_manipulation -/en-US/docs/Web/Guide/CSS /en-US/docs/Learn/CSS /en-US/docs/Web/Guide/CSS/Block_formatting_context /en-US/docs/Web/CSS/CSS_display/Block_formatting_context /en-US/docs/Web/Guide/CSS/CSS_Image_Sprites /en-US/docs/Web/CSS/CSS_images/Implementing_image_sprites_in_CSS /en-US/docs/Web/Guide/CSS/Consistent_list_indentation /en-US/docs/Web/CSS/CSS_lists/Consistent_list_indentation /en-US/docs/Web/Guide/CSS/Counters /en-US/docs/Web/CSS/CSS_counter_styles/Using_CSS_counters /en-US/docs/Web/Guide/CSS/Flexible_boxes /en-US/docs/Web/CSS/CSS_flexible_box_layout/Basic_concepts_of_flexbox -/en-US/docs/Web/Guide/CSS/Getting_started /en-US/docs/Learn/CSS/First_steps -/en-US/docs/Web/Guide/CSS/Getting_started/Boxes /en-US/docs/Learn/CSS/Building_blocks -/en-US/docs/Web/Guide/CSS/Getting_started/Cascading_and_inheritance /en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance -/en-US/docs/Web/Guide/CSS/Getting_started/Content /en-US/docs/Learn/CSS/Howto/Generated_content -/en-US/docs/Web/Guide/CSS/Getting_started/How_CSS_works /en-US/docs/Learn/CSS/First_steps/How_CSS_works -/en-US/docs/Web/Guide/CSS/Getting_started/JavaScript /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents -/en-US/docs/Web/Guide/CSS/Getting_started/Layout /en-US/docs/Learn/CSS/CSS_layout -/en-US/docs/Web/Guide/CSS/Getting_started/Lists /en-US/docs/Learn/CSS/Styling_text/Styling_lists +/en-US/docs/Web/Guide/CSS/Getting_started /en-US/docs/Learn_web_development/Core/Styling_basics +/en-US/docs/Web/Guide/CSS/Getting_started/Boxes /en-US/docs/Learn_web_development/Core/Styling_basics +/en-US/docs/Web/Guide/CSS/Getting_started/Cascading_and_inheritance /en-US/docs/Learn_web_development/Core/Styling_basics/Handling_conflicts +/en-US/docs/Web/Guide/CSS/Getting_started/Content /en-US/docs/Learn_web_development/Howto/Solve_CSS_problems/Generated_content +/en-US/docs/Web/Guide/CSS/Getting_started/How_CSS_works /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/Web/Guide/CSS/Getting_started/JavaScript /en-US/docs/Learn_web_development/Core/Scripting/DOM_scripting +/en-US/docs/Web/Guide/CSS/Getting_started/Layout /en-US/docs/Learn_web_development/Core/CSS_layout +/en-US/docs/Web/Guide/CSS/Getting_started/Lists /en-US/docs/Learn_web_development/Core/Text_styling/Styling_lists /en-US/docs/Web/Guide/CSS/Getting_started/SVG_and_CSS /en-US/docs/Web/SVG/Tutorial/SVG_and_CSS /en-US/docs/Web/Guide/CSS/Getting_started/SVG_graphics /en-US/docs/Web/SVG/Tutorial/SVG_and_CSS -/en-US/docs/Web/Guide/CSS/Getting_started/Selectors /en-US/docs/Learn/CSS/Building_blocks/Selectors -/en-US/docs/Web/Guide/CSS/Getting_started/Tables /en-US/docs/Learn/CSS/Building_blocks/Styling_tables -/en-US/docs/Web/Guide/CSS/Getting_started/Text_styles /en-US/docs/Learn/CSS/Styling_text/Fundamentals -/en-US/docs/Web/Guide/CSS/Getting_started/What_is_CSS /en-US/docs/Learn/CSS/First_steps/How_CSS_works -/en-US/docs/Web/Guide/CSS/Getting_started/Why_use_CSS /en-US/docs/Learn/CSS/First_steps/How_CSS_works -/en-US/docs/Web/Guide/CSS/Getting_started/Why_use_CSS? /en-US/docs/Learn/CSS/First_steps/How_CSS_works +/en-US/docs/Web/Guide/CSS/Getting_started/Selectors /en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors +/en-US/docs/Web/Guide/CSS/Getting_started/Tables /en-US/docs/Learn_web_development/Core/Styling_basics/Tables +/en-US/docs/Web/Guide/CSS/Getting_started/Text_styles /en-US/docs/Learn_web_development/Core/Text_styling/Fundamentals +/en-US/docs/Web/Guide/CSS/Getting_started/What_is_CSS /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/Web/Guide/CSS/Getting_started/Why_use_CSS /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS +/en-US/docs/Web/Guide/CSS/Getting_started/Why_use_CSS? /en-US/docs/Learn_web_development/Core/Styling_basics/What_is_CSS /en-US/docs/Web/Guide/CSS/Media_queries /en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries /en-US/docs/Web/Guide/CSS/Scaling_background_images /en-US/docs/Web/CSS/CSS_backgrounds_and_borders/Resizing_background_images /en-US/docs/Web/Guide/CSS/Testing_media_queries /en-US/docs/Web/CSS/CSS_media_queries/Testing_media_queries @@ -12127,9 +12512,9 @@ /en-US/docs/Web/Guide/Events/Using_device_orientation_with_3D_transforms /en-US/docs/Web/API/Device_orientation_events/Using_device_orientation_with_3D_transforms /en-US/docs/Web/Guide/File_System_API /en-US/docs/Web/API/File_and_Directory_Entries_API/Introduction /en-US/docs/Web/Guide/File_System_API/Introduction /en-US/docs/Web/API/File_and_Directory_Entries_API/Introduction -/en-US/docs/Web/Guide/Graphics /en-US/docs/Learn/HTML/Multimedia_and_embedding/Images_in_HTML +/en-US/docs/Web/Guide/Graphics /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_images /en-US/docs/Web/Guide/Graphics/Drawing_graphics_with_canvas /en-US/docs/Web/API/Canvas_API/Tutorial -/en-US/docs/Web/Guide/HTML /en-US/docs/Learn/HTML +/en-US/docs/Web/Guide/HTML /en-US/docs/Learn_web_development/Core/Structuring_content /en-US/docs/Web/Guide/HTML/Canvas_tutorial /en-US/docs/Web/API/Canvas_API/Tutorial /en-US/docs/Web/Guide/HTML/Canvas_tutorial/Applying_styles_and_colors /en-US/docs/Web/API/Canvas_API/Tutorial/Applying_styles_and_colors /en-US/docs/Web/Guide/HTML/Canvas_tutorial/Basic_animations /en-US/docs/Web/API/Canvas_API/Tutorial/Basic_animations @@ -12147,53 +12532,53 @@ /en-US/docs/Web/Guide/HTML/Drag_and_drop /en-US/docs/Web/API/HTML_Drag_and_Drop_API /en-US/docs/Web/Guide/HTML/Drag_operations /en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations /en-US/docs/Web/Guide/HTML/Editable_content /en-US/docs/Web/HTML/Global_attributes/contenteditable -/en-US/docs/Web/Guide/HTML/Element /en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started -/en-US/docs/Web/Guide/HTML/Email_links /en-US/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks#email_links -/en-US/docs/Web/Guide/HTML/Event_attributes /en-US/docs/Learn/JavaScript/Building_blocks/Events#Inline_event_handlers_—_don't_use_these -/en-US/docs/Web/Guide/HTML/Forms /en-US/docs/Learn/Forms -/en-US/docs/Web/Guide/HTML/Forms/Advanced_styling_for_HTML_forms /en-US/docs/Learn/Forms/Advanced_form_styling -/en-US/docs/Web/Guide/HTML/Forms/Data_form_validation /en-US/docs/Learn/Forms/Form_validation -/en-US/docs/Web/Guide/HTML/Forms/HTML_forms_in_legacy_browsers /en-US/docs/Learn/Forms/HTML_forms_in_legacy_browsers -/en-US/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets /en-US/docs/Learn/Forms/How_to_build_custom_form_controls -/en-US/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets/Example_1 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_1 -/en-US/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets/Example_2 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_2 -/en-US/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets/Example_3 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_3 -/en-US/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets/Example_4 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_4 -/en-US/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets/Example_5 /en-US/docs/Learn/Forms/How_to_build_custom_form_controls/Example_5 -/en-US/docs/Web/Guide/HTML/Forms/How_to_structure_an_HTML_form /en-US/docs/Learn/Forms/How_to_structure_a_web_form -/en-US/docs/Web/Guide/HTML/Forms/How_to_structure_an_HTML_form/Example /en-US/docs/Learn/Forms/How_to_structure_a_web_form/Example -/en-US/docs/Web/Guide/HTML/Forms/My_first_HTML_form /en-US/docs/Learn/Forms/Your_first_form -/en-US/docs/Web/Guide/HTML/Forms/My_first_HTML_form/Example /en-US/docs/Learn/Forms/Your_first_form -/en-US/docs/Web/Guide/HTML/Forms/Sending_and_retrieving_form_data /en-US/docs/Learn/Forms/Sending_and_retrieving_form_data -/en-US/docs/Web/Guide/HTML/Forms/Sending_forms_through_JavaScript /en-US/docs/Learn/Forms/Sending_forms_through_JavaScript -/en-US/docs/Web/Guide/HTML/Forms/Styling_HTML_forms /en-US/docs/Learn/Forms/Styling_web_forms -/en-US/docs/Web/Guide/HTML/Forms/The_native_form_widgets /en-US/docs/Learn/Forms/Basic_native_form_controls -/en-US/docs/Web/Guide/HTML/Forms_in_HTML /en-US/docs/Learn/Forms +/en-US/docs/Web/Guide/HTML/Element /en-US/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax +/en-US/docs/Web/Guide/HTML/Email_links /en-US/docs/Learn_web_development/Core/Structuring_content/Creating_links#email_links +/en-US/docs/Web/Guide/HTML/Event_attributes /en-US/docs/Learn_web_development/Core/Scripting/Events#Inline_event_handlers_—_don't_use_these +/en-US/docs/Web/Guide/HTML/Forms /en-US/docs/Learn_web_development/Extensions/Forms +/en-US/docs/Web/Guide/HTML/Forms/Advanced_styling_for_HTML_forms /en-US/docs/Learn_web_development/Extensions/Forms/Advanced_form_styling +/en-US/docs/Web/Guide/HTML/Forms/Data_form_validation /en-US/docs/Learn_web_development/Extensions/Forms/Form_validation +/en-US/docs/Web/Guide/HTML/Forms/HTML_forms_in_legacy_browsers /en-US/docs/Learn_web_development/Extensions/Forms/HTML_forms_in_legacy_browsers +/en-US/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls +/en-US/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets/Example_1 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_1 +/en-US/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets/Example_2 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_2 +/en-US/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets/Example_3 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_3 +/en-US/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets/Example_4 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_4 +/en-US/docs/Web/Guide/HTML/Forms/How_to_build_custom_form_widgets/Example_5 /en-US/docs/Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_5 +/en-US/docs/Web/Guide/HTML/Forms/How_to_structure_an_HTML_form /en-US/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form +/en-US/docs/Web/Guide/HTML/Forms/How_to_structure_an_HTML_form/Example /en-US/docs/Learn_web_development/Extensions/Forms/How_to_structure_a_web_form/Example +/en-US/docs/Web/Guide/HTML/Forms/My_first_HTML_form /en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form +/en-US/docs/Web/Guide/HTML/Forms/My_first_HTML_form/Example /en-US/docs/Learn_web_development/Extensions/Forms/Your_first_form +/en-US/docs/Web/Guide/HTML/Forms/Sending_and_retrieving_form_data /en-US/docs/Learn_web_development/Extensions/Forms/Sending_and_retrieving_form_data +/en-US/docs/Web/Guide/HTML/Forms/Sending_forms_through_JavaScript /en-US/docs/Learn_web_development/Extensions/Forms/Sending_forms_through_JavaScript +/en-US/docs/Web/Guide/HTML/Forms/Styling_HTML_forms /en-US/docs/Learn_web_development/Extensions/Forms/Styling_web_forms +/en-US/docs/Web/Guide/HTML/Forms/The_native_form_widgets /en-US/docs/Learn_web_development/Extensions/Forms/Basic_native_form_controls +/en-US/docs/Web/Guide/HTML/Forms_in_HTML /en-US/docs/Learn_web_development/Extensions/Forms /en-US/docs/Web/Guide/HTML/HTML5 /en-US/docs/Glossary/HTML5 /en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation /en-US/docs/Web/HTML/Constraint_validation -/en-US/docs/Web/Guide/HTML/HTML5/Forms_in_HTML5 /en-US/docs/Learn/Forms -/en-US/docs/Web/Guide/HTML/HTML5/HTML5_Parser /en-US/docs/Learn/HTML +/en-US/docs/Web/Guide/HTML/HTML5/Forms_in_HTML5 /en-US/docs/Learn_web_development/Extensions/Forms +/en-US/docs/Web/Guide/HTML/HTML5/HTML5_Parser /en-US/docs/Learn_web_development/Core/Structuring_content /en-US/docs/Web/Guide/HTML/HTML5/HTML5_Tags_List /en-US/docs/Web/HTML/Element /en-US/docs/Web/Guide/HTML/HTML5/HTML5_element_list /en-US/docs/Web/HTML/Element -/en-US/docs/Web/Guide/HTML/HTML5/Introduction_to_HTML5 /en-US/docs/Learn/HTML +/en-US/docs/Web/Guide/HTML/HTML5/Introduction_to_HTML5 /en-US/docs/Learn_web_development/Core/Structuring_content /en-US/docs/Web/Guide/HTML/HTML5/Optimizing_Your_Pages_for_Speculative_Parsing /en-US/docs/Glossary/speculative_parsing -/en-US/docs/Web/Guide/HTML/Hyperlink /en-US/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks -/en-US/docs/Web/Guide/HTML/Inline_event_handler /en-US/docs/Learn/JavaScript/Building_blocks/Events#Inline_event_handlers_—_don't_use_these -/en-US/docs/Web/Guide/HTML/Introduction /en-US/docs/Learn/HTML/Introduction_to_HTML -/en-US/docs/Web/Guide/HTML/Obsolete_things_to_avoid /en-US/docs/Learn/HTML/Introduction_to_HTML +/en-US/docs/Web/Guide/HTML/Hyperlink /en-US/docs/Learn_web_development/Core/Structuring_content/Creating_links +/en-US/docs/Web/Guide/HTML/Inline_event_handler /en-US/docs/Learn_web_development/Core/Scripting/Events#Inline_event_handlers_—_don't_use_these +/en-US/docs/Web/Guide/HTML/Introduction /en-US/docs/Learn_web_development/Core/Structuring_content +/en-US/docs/Web/Guide/HTML/Obsolete_things_to_avoid /en-US/docs/Learn_web_development/Core/Structuring_content /en-US/docs/Web/Guide/HTML/Recommended_Drag_Types /en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types -/en-US/docs/Web/Guide/HTML/The_Importance_of_Correct_HTML_Commenting /en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started#HTML_comments -/en-US/docs/Web/Guide/HTML/Tips_for_authoring_fast-loading_HTML_pages /en-US/docs/Learn/HTML/Howto/Author_fast-loading_HTML_pages -/en-US/docs/Web/Guide/HTML/Using_HTML5_audio_and_video /en-US/docs/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +/en-US/docs/Web/Guide/HTML/The_Importance_of_Correct_HTML_Commenting /en-US/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax#HTML_comments +/en-US/docs/Web/Guide/HTML/Tips_for_authoring_fast-loading_HTML_pages /en-US/docs/Learn_web_development/Howto/Solve_HTML_problems/Author_fast-loading_HTML_pages +/en-US/docs/Web/Guide/HTML/Using_HTML5_audio_and_video /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_video_and_audio /en-US/docs/Web/Guide/HTML/Using_HTML_sections_and_outlines /en-US/docs/Web/HTML/Element/Heading_Elements -/en-US/docs/Web/Guide/HTML/Using_data_attributes /en-US/docs/Learn/HTML/Howto/Use_data_attributes +/en-US/docs/Web/Guide/HTML/Using_data_attributes /en-US/docs/Learn_web_development/Howto/Solve_HTML_problems/Use_data_attributes /en-US/docs/Web/Guide/HTML/XHTML /en-US/docs/Glossary/XHTML /en-US/docs/Web/Guide/Houdini /en-US/docs/Web/API/Houdini_APIs /en-US/docs/Web/Guide/Index /en-US/docs/Web/Guide -/en-US/docs/Web/Guide/Introduction_to_Web_development /en-US/docs/Learn -/en-US/docs/Web/Guide/Mobile /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Guide/Mobile/A_hybrid_approach /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Guide/Mobile/Mobile-friendliness /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design +/en-US/docs/Web/Guide/Introduction_to_Web_development /en-US/docs/Learn_web_development +/en-US/docs/Web/Guide/Mobile /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Guide/Mobile/A_hybrid_approach /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Guide/Mobile/Mobile-friendliness /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design /en-US/docs/Web/Guide/Mobile/Separate_sites /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web/Guide/Needs_categorization/Functions_available_to_workers /en-US/docs/Web/API/Web_Workers_API/Functions_and_classes_available_to_workers /en-US/docs/Web/Guide/Parsing_and_serializing_XML /en-US/docs/Web/XML/Parsing_and_serializing_XML @@ -12207,10 +12592,10 @@ /en-US/docs/Web/Guide/Terminology /en-US/docs/Glossary /en-US/docs/Web/Guide/Touch_events /en-US/docs/Web/API/Touch_events /en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API /en-US/docs/Web/API/Page_Visibility_API -/en-US/docs/Web/Guide/User_input_methods /en-US/docs/Learn/Forms/User_input_methods +/en-US/docs/Web/Guide/User_input_methods /en-US/docs/Learn_web_development/Extensions/Forms/User_input_methods /en-US/docs/Web/Guide/Using_FormData_Objects /en-US/docs/Web/API/XMLHttpRequest_API/Using_FormData_Objects /en-US/docs/Web/Guide/WOFF /en-US/docs/Web/CSS/CSS_fonts/WOFF -/en-US/docs/Web/Guide/Writing_forward-compatible_websites /en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/JavaScript +/en-US/docs/Web/Guide/Writing_forward-compatible_websites /en-US/docs/Learn_web_development/Core/Scripting/Debugging_JavaScript /en-US/docs/Web/HTML/Applying_color /en-US/docs/Web/CSS/CSS_colors/Applying_color /en-US/docs/Web/HTML/Block-level_elements /en-US/docs/Glossary/Block-level_content /en-US/docs/Web/HTML/CORS_settings_attributes /en-US/docs/Web/HTML/Attributes/crossorigin @@ -12248,6 +12633,7 @@ /en-US/docs/Web/HTML/Element/input/ /en-US/docs/Web/HTML/Element/colgroup /en-US/docs/Web/HTML/Element/input/Date_and_time_formats /en-US/docs/Web/HTML/Date_and_time_formats /en-US/docs/Web/HTML/Element/math /en-US/docs/Web/MathML/Element/math +/en-US/docs/Web/HTML/Element/menuitem /en-US/docs/Web/HTML/Element /en-US/docs/Web/HTML/Element/s_ource /en-US/docs/Web/HTML/Element/source /en-US/docs/Web/HTML/Element/video/canplay_event /en-US/docs/Web/API/HTMLMediaElement/canplay_event /en-US/docs/Web/HTML/Element/video/durationchange_event /en-US/docs/Web/API/HTMLMediaElement/durationchange_event @@ -12265,13 +12651,13 @@ /en-US/docs/Web/HTML/Element/webkit-meter-optimum-value /en-US/docs/Web/CSS/::-webkit-meter-optimum-value /en-US/docs/Web/HTML/Elements/textarea /en-US/docs/Web/HTML/Element/textarea /en-US/docs/Web/HTML/Focus_management_in_HTML /en-US/docs/Web/API/Document/hasFocus -/en-US/docs/Web/HTML/Forms_in_HTML /en-US/docs/Learn/Forms +/en-US/docs/Web/HTML/Forms_in_HTML /en-US/docs/Learn_web_development/Extensions/Forms /en-US/docs/Web/HTML/Global_attributes/contextmenu /en-US/docs/Web/HTML/Element/menu /en-US/docs/Web/HTML/Index /en-US/docs/Web/HTML /en-US/docs/Web/HTML/Inline_elemente /en-US/docs/Glossary/Inline-level_content /en-US/docs/Web/HTML/Inline_elements /en-US/docs/Glossary/Inline-level_content /en-US/docs/Web/HTML/Inline_elmements /en-US/docs/Glossary/Inline-level_content -/en-US/docs/Web/HTML/Introduction /en-US/docs/Learn/HTML/Introduction_to_HTML +/en-US/docs/Web/HTML/Introduction /en-US/docs/Learn_web_development/Core/Structuring_content /en-US/docs/Web/HTML/Kinds_of_HTML_content /en-US/docs/Web/HTML/Content_categories /en-US/docs/Web/HTML/Link_types /en-US/docs/Web/HTML/Attributes/rel /en-US/docs/Web/HTML/Link_types/Link_types:_noopener /en-US/docs/Web/HTML/Attributes/rel/noopener @@ -12289,33 +12675,42 @@ /en-US/docs/Web/HTML/Optimizing_your_pages_for_speculative_parsing /en-US/docs/Glossary/speculative_parsing /en-US/docs/Web/HTML/Preloading_content /en-US/docs/Web/HTML/Attributes/rel/preload /en-US/docs/Web/HTML/Supported_media_formats /en-US/docs/Web/Media/Formats -/en-US/docs/Web/HTML/The_Importance_of_Correct_HTML_Commenting /en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started#HTML_comments -/en-US/docs/Web/HTML/Using_HTML5_audio_and_video /en-US/docs/Learn/HTML/Multimedia_and_embedding/Video_and_audio_content +/en-US/docs/Web/HTML/The_Importance_of_Correct_HTML_Commenting /en-US/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax#HTML_comments +/en-US/docs/Web/HTML/Using_HTML5_audio_and_video /en-US/docs/Learn_web_development/Core/Structuring_content/HTML_video_and_audio /en-US/docs/Web/HTML/element/content /en-US/docs/Web/HTML/element/slot /en-US/docs/Web/HTTP/Access_control_CORS /en-US/docs/Web/HTTP/CORS /en-US/docs/Web/HTTP/Basic_access_authentication /en-US/docs/Web/HTTP/Authentication -/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs /en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs -/en-US/docs/Web/HTTP/Basics_of_HTTP/Introduction_to_www_and_non-www_URLs /en-US/docs/Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs -/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types /en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types +/en-US/docs/Web/HTTP/Basics_of_HTTP /en-US/docs/Web/HTTP +/en-US/docs/Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs /en-US/docs/Web/URI/Authority/Choosing_between_www_and_non-www_URLs +/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs /en-US/docs/Web/URI/Schemes/data +/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs /en-US/docs/Web/URI/Schemes/data +/en-US/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP /en-US/docs/Web/HTTP/Evolution_of_HTTP +/en-US/docs/Web/HTTP/Basics_of_HTTP/Introduction_to_www_and_non-www_URLs /en-US/docs/Web/URI/Authority/Choosing_between_www_and_non-www_URLs +/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types /en-US/docs/Web/HTTP/MIME_types +/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types /en-US/docs/Web/HTTP/MIME_types/Common_types +/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types /en-US/docs/Web/HTTP/MIME_types/Common_types +/en-US/docs/Web/HTTP/Basics_of_HTTP/Resource_URLs /en-US/docs/Web/URI/Schemes/resource /en-US/docs/Web/HTTP/CORS/Errors/Reason:_CORS_header_‘Origin’_cannot_be_added /en-US/docs/Web/HTTP/CORS/Errors/CORSOriginHeaderNotAdded /en-US/docs/Web/HTTP/Caching_FAQ /en-US/docs/Web/HTTP/Caching +/en-US/docs/Web/HTTP/Configuring_servers_for_Ogg_media /en-US/docs/Web/Media/Formats/Configuring_servers_for_Ogg_media /en-US/docs/Web/HTTP/Controlling_DNS_prefetching /en-US/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control /en-US/docs/Web/HTTP/Cookies/Cookie_Prefixes /en-US/docs/Web/HTTP/Cookies#Cookie_prefixes /en-US/docs/Web/HTTP/Cross-Origin_Resource_Policy_(CORP) /en-US/docs/Web/HTTP/Cross-Origin_Resource_Policy -/en-US/docs/Web/HTTP/Evolution_of_HTTP /en-US/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP /en-US/docs/Web/HTTP/Feature_Policy /en-US/docs/Web/HTTP/Permissions_Policy /en-US/docs/Web/HTTP/Gecko_user_agent_string_reference /en-US/docs/Web/HTTP/Headers/User-Agent/Firefox /en-US/docs/Web/HTTP/HTTP_response_codes /en-US/docs/Web/HTTP/Status +/en-US/docs/Web/HTTP/Headers/Accept-Charset /en-US/docs/Web/HTTP/Headers /en-US/docs/Web/HTTP/Headers/Cache-Disposition /en-US/docs/Web/HTTP/Headers/Content-Disposition +/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/Sources /en-US/docs/Web/HTTP/Headers/Content-Security-Policy#fetch_directive_syntax /en-US/docs/Web/HTTP/Headers/Content-Security-Policy/navigate-to /en-US/docs/Web/HTTP/Headers/Content-Security-Policy /en-US/docs/Web/HTTP/Headers/Content-Security-Policy/referrer /en-US/docs/Web/HTTP/Headers/Referrer-Policy /en-US/docs/Web/HTTP/Headers/Content-Security-Policy/require-sri-for /en-US/docs/Web/HTTP/Headers/Content-Security-Policy /en-US/docs/Web/HTTP/Headers/Cookie2 /en-US/docs/Web/HTTP/Headers/Cookie +/en-US/docs/Web/HTTP/Headers/Digest /en-US/docs/Web/HTTP/Headers/Content-Digest /en-US/docs/Web/HTTP/Headers/Feature-Policy /en-US/docs/Web/HTTP/Headers/Permissions-Policy /en-US/docs/Web/HTTP/Headers/Feature-Policy/accelerometer /en-US/docs/Web/HTTP/Headers/Permissions-Policy/accelerometer /en-US/docs/Web/HTTP/Headers/Feature-Policy/ambient-light-sensor /en-US/docs/Web/HTTP/Headers/Permissions-Policy/ambient-light-sensor /en-US/docs/Web/HTTP/Headers/Feature-Policy/autoplay /en-US/docs/Web/HTTP/Headers/Permissions-Policy/autoplay -/en-US/docs/Web/HTTP/Headers/Feature-Policy/battery /en-US/docs/Web/HTTP/Headers/Permissions-Policy/battery /en-US/docs/Web/HTTP/Headers/Feature-Policy/camera /en-US/docs/Web/HTTP/Headers/Permissions-Policy/camera /en-US/docs/Web/HTTP/Headers/Feature-Policy/display-capture /en-US/docs/Web/HTTP/Headers/Permissions-Policy/display-capture /en-US/docs/Web/HTTP/Headers/Feature-Policy/document-domain /en-US/docs/Web/HTTP/Headers/Permissions-Policy/document-domain @@ -12357,12 +12752,14 @@ /en-US/docs/Web/HTTP/Headers/Ranges /en-US/docs/Web/HTTP/Headers/Range /en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite /en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value /en-US/docs/Web/HTTP/Headers/Set-Cookie2 /en-US/docs/Web/HTTP/Headers/Set-Cookie -/en-US/docs/Web/HTTP/History_of_HTTP_versions /en-US/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP +/en-US/docs/Web/HTTP/Headers/Want-Digest /en-US/docs/Web/HTTP/Headers/Want-Content-Digest +/en-US/docs/Web/HTTP/History_of_HTTP_versions /en-US/docs/Web/HTTP/Evolution_of_HTTP /en-US/docs/Web/HTTP/Index /en-US/docs/Web/HTTP /en-US/docs/Web/HTTP/Link_prefetching_FAQ /en-US/docs/Glossary/Prefetch /en-US/docs/Web/HTTP/Pipelining_FAQ /en-US/docs/Web/HTTP/Connection_management_in_HTTP_1.x /en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file /en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file /en-US/docs/Web/HTTP/Public_Key_Pinning /en-US/docs/Web/Security/Certificate_Transparency +/en-US/docs/Web/HTTP/Resources_and_URIs /en-US/docs/Web/HTTP/MIME_types /en-US/docs/Web/HTTP/Response_codes /en-US/docs/Web/HTTP/Status /en-US/docs/Web/HTTP/Server-Side_Access_Control /en-US/docs/Web/HTTP/CORS /en-US/docs/Web/HTTP/Status/416_Range_Not_Satisfiable /en-US/docs/Web/HTTP/Status/416 @@ -12370,8 +12767,8 @@ /en-US/docs/Web/HTTP/Status/506_Variant_Also_Negotiates /en-US/docs/Web/HTTP/Status/506 /en-US/docs/Web/HTTP/Status/510_Not_Extended /en-US/docs/Web/HTTP/Status/510 /en-US/docs/Web/HTTP/X-Frame-Options /en-US/docs/Web/HTTP/Headers/X-Frame-Options -/en-US/docs/Web/HTTP/data_URIs /en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs -/en-US/docs/Web/HTTP/www_and_non-www_URLs /en-US/docs/Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs +/en-US/docs/Web/HTTP/data_URIs /en-US/docs/Web/URI/Schemes/data +/en-US/docs/Web/HTTP/www_and_non-www_URLs /en-US/docs/Web/URI/Authority/Choosing_between_www_and_non-www_URLs /en-US/docs/Web/Houdini /en-US/docs/Web/API/Houdini_APIs /en-US/docs/Web/Houdini/CSS_Painting_API /en-US/docs/Web/API/CSS_Painting_API/Guide /en-US/docs/Web/Houdini/CSS_Typed_OM /en-US/docs/Web/API/CSS_Typed_OM_API @@ -12384,7 +12781,7 @@ /en-US/docs/Web/JavaScript/DedicatedWorkerGlobalScope /en-US/docs/Web/API/DedicatedWorkerGlobalScope /en-US/docs/Web/JavaScript/Equality_comparisons_and_when_to_use_them /en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness /en-US/docs/Web/JavaScript/EventLoop /en-US/docs/Web/JavaScript/Event_loop -/en-US/docs/Web/JavaScript/Getting_Started /en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics +/en-US/docs/Web/JavaScript/Getting_Started /en-US/docs/Learn_web_development/Getting_started/Your_first_website/Adding_interactivity /en-US/docs/Web/JavaScript/Glossary /en-US/docs/Glossary /en-US/docs/Web/JavaScript/Guide/About /en-US/docs/Web/JavaScript/Guide/Introduction /en-US/docs/Web/JavaScript/Guide/Closures /en-US/docs/Web/JavaScript/Closures @@ -12485,7 +12882,7 @@ /en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals /en-US/docs/Web/JavaScript/Guide/Grammar_and_types /en-US/docs/Web/JavaScript/Guide/Working_With_Private_Class_Features /en-US/docs/Web/JavaScript/Guide/Using_Classes#private_fields /en-US/docs/Web/JavaScript/Guide/iterable /en-US/docs/Web/JavaScript/Reference/Iteration_protocols -/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript /en-US/docs/Learn/JavaScript/Objects +/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript /en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects /en-US/docs/Web/JavaScript/Introduction_to_using_XPath_in_JavaScript /en-US/docs/Web/XPath/Introduction_to_using_XPath_in_JavaScript /en-US/docs/Web/JavaScript/JavaScript_templates /en-US/docs/Web/JavaScript/Reference/Template_literals /en-US/docs/Web/JavaScript/Javascript_How_To_Tutorials /en-US/docs/Web/JavaScript/Guide @@ -12820,20 +13217,17 @@ /en-US/docs/Web/Manifest/iarc_rating_id /en-US/docs/Web/Manifest /en-US/docs/Web/Manifest/lang /en-US/docs/Web/Manifest /en-US/docs/Web/MathML/Attribute/Values /en-US/docs/Web/MathML/Values -/en-US/docs/Web/MathML/Element/annotation /en-US/docs/Web/MathML/Element/semantics -/en-US/docs/Web/MathML/Element/annotation-xml /en-US/docs/Web/MathML/Element/semantics /en-US/docs/Web/MathML/Element/menclosed /en-US/docs/Web/MathML/Element/menclose -/en-US/docs/Web/MathML/Element/mprescripts /en-US/docs/Web/MathML/Element/mmultiscripts /en-US/docs/Web/MathML/Element/none /en-US/docs/Web/MathML/Element/mmultiscripts /en-US/docs/Web/MathML/Fonts/Test /en-US/docs/Web/MathML/Fonts /en-US/docs/Web/MathML/Global_attributes/mathvariant /en-US/docs/Web/MathML/Element/mi#mathvariant /en-US/docs/Web/MathML/Index /en-US/docs/Web/MathML /en-US/docs/Web/Media/Formats/Guide_to_codecs_for_audio_on_the_web /en-US/docs/Web/Media/Formats/Audio_codecs -/en-US/docs/Web/Media/images/aspect_ratio_mapping /en-US/docs/Learn/Performance/Multimedia +/en-US/docs/Web/Media/images/aspect_ratio_mapping /en-US/docs/Learn_web_development/Extensions/Performance/Multimedia /en-US/docs/Web/Media_Queries /en-US/docs/Web/CSS/CSS_media_queries /en-US/docs/Web/Performance/Populating_the_page:_how_browsers_work /en-US/docs/Web/Performance/How_browsers_work /en-US/docs/Web/Performance/Time_to_interactive /en-US/docs/Glossary/Time_to_interactive -/en-US/docs/Web/Performance/business_case_for_performance /en-US/docs/Learn/Performance/business_case_for_performance +/en-US/docs/Web/Performance/business_case_for_performance /en-US/docs/Learn_web_development/Extensions/Performance/business_case_for_performance /en-US/docs/Web/Performance/learn /en-US/docs/Web/Performance/How_browsers_work /en-US/docs/Web/Privacy/Partitioned_cookies /en-US/docs/Web/Privacy/Privacy_sandbox/Partitioned_cookies /en-US/docs/Web/Privacy/Tracking_Protection /en-US/docs/Web/Privacy/Firefox_tracking_protection @@ -12854,12 +13248,12 @@ /en-US/docs/Web/Progressive_web_apps/Progressive /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web/Progressive_web_apps/Re-engageable /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web/Progressive_web_apps/Re-engageable_Notifications_Push /en-US/docs/Web/Progressive_web_apps/Tutorials/js13kGames/Re-engageable_Notifications_Push -/en-US/docs/Web/Progressive_web_apps/Responsive /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Progressive_web_apps/Responsive/Graphics_for_responsive_sites /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design +/en-US/docs/Web/Progressive_web_apps/Responsive /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Progressive_web_apps/Responsive/Graphics_for_responsive_sites /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design /en-US/docs/Web/Progressive_web_apps/Responsive/Media_types /en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries -/en-US/docs/Web/Progressive_web_apps/Responsive/Mobile_first /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Progressive_web_apps/Responsive/Responsive_navigation_patterns /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web/Progressive_web_apps/Responsive/responsive_design_building_blocks /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design +/en-US/docs/Web/Progressive_web_apps/Responsive/Mobile_first /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Progressive_web_apps/Responsive/Responsive_navigation_patterns /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web/Progressive_web_apps/Responsive/responsive_design_building_blocks /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design /en-US/docs/Web/Progressive_web_apps/Safe /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web/Progressive_web_apps/Structural_overview /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web/Progressive_web_apps/Tutorials/Intro /en-US/docs/Web/Progressive_web_apps/Tutorials/CycleTracker @@ -13020,6 +13414,8 @@ /en-US/docs/Web/SVG/Compatibility_sources /en-US/docs/Web/SVG /en-US/docs/Web/SVG/Element/animateColor /en-US/docs/Web/SVG/Element/animate /en-US/docs/Web/SVG/Index /en-US/docs/Web/SVG +/en-US/docs/Web/SVG/Server-configuration https://www.w3.org/services/svg-server/ +/en-US/docs/Web/SVG/Specification_Deviations /en-US/docs/Web/SVG /en-US/docs/Web/SVG/Tutorial/Fill_Stroke_and_Gradients /en-US/docs/Web/SVG/Tutorial/Fills_and_Strokes /en-US/docs/Web/SVG/circle /en-US/docs/Web/SVG/Element/circle /en-US/docs/Web/SVG/ellipse /en-US/docs/Web/SVG/Element/ellipse @@ -13029,7 +13425,6 @@ /en-US/docs/Web/SVG/polyline /en-US/docs/Web/SVG/Element/polyline /en-US/docs/Web/SVG/rect /en-US/docs/Web/SVG/Element/rect /en-US/docs/Web/SVG/use /en-US/docs/Web/SVG/Element/use -/en-US/docs/Web/SVG/教程 /zh-TW/docs/Web/SVG/Tutorial /en-US/docs/Web/Security/CSP /en-US/docs/Web/HTTP/CSP /en-US/docs/Web/Security/CSP/CSP_policy_directives /en-US/docs/Web/HTTP/Headers/Content-Security-Policy /en-US/docs/Web/Security/CSP/Default_CSP_restrictions /en-US/docs/Web/HTTP/Headers/Content-Security-Policy @@ -13064,8 +13459,10 @@ /en-US/docs/Web/Security/Mixed_content/How_to_fix_website_with_mixed_content /en-US/docs/Web/Security/Mixed_content#developer_console /en-US/docs/Web/Security/Public_Key_Pinning /en-US/docs/Web/Security/Certificate_Transparency /en-US/docs/Web/Security/Securing_your_site /en-US/docs/Web/Security/Practical_implementation_guides -/en-US/docs/Web/Security/Securing_your_site/Configuring_server_MIME_types /en-US/docs/Learn/Server-side/Configuring_server_MIME_types +/en-US/docs/Web/Security/Securing_your_site/Configuring_server_MIME_types /en-US/docs/Learn_web_development/Extensions/Server-side/Configuring_server_MIME_types /en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion /en-US/docs/Web/Security/Practical_implementation_guides/Turning_off_form_autocompletion +/en-US/docs/Web/Text_fragments /en-US/docs/Web/URI/Fragment/Text_fragments +/en-US/docs/Web/WebDriver/Commands/New_Window /en-US/docs/Web/WebDriver/Commands/NewWindow /en-US/docs/Web/WebGL /en-US/docs/Web/API/WebGL_API /en-US/docs/Web/WebGL/Adding_2D_content_to_a_WebGL_context /en-US/docs/Web/API/WebGL_API/Tutorial/Adding_2D_content_to_a_WebGL_context /en-US/docs/Web/WebGL/Animating_objects_with_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Animating_objects_with_WebGL @@ -13073,7 +13470,6 @@ /en-US/docs/Web/WebGL/Creating_3D_objects_using_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Creating_3D_objects_using_WebGL /en-US/docs/Web/WebGL/Cross-Domain_Textures /en-US/docs/Web/API/WebGL_API/Tutorial/Using_textures_in_WebGL#Cross-domain_textures /en-US/docs/Web/WebGL/Getting_started_with_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL -/en-US/docs/Web/WebGL/Getting_started_with_WebGL/Commencer_avec_le_WebGL /fr/docs/Web/API/WebGL_API/Tutorial/Commencer_avec_WebGL /en-US/docs/Web/WebGL/Lighting_in_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Lighting_in_WebGL /en-US/docs/Web/WebGL/Using_Extensions /en-US/docs/Web/API/WebGL_API/Using_Extensions /en-US/docs/Web/WebGL/Using_shaders_to_apply_color_in_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Using_shaders_to_apply_color_in_WebGL @@ -13127,7 +13523,21 @@ /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements /en-US/docs/Web/XSLT/Element /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Functions /en-US/docs/Web/XPath/Functions /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/Resources /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes /en-US/docs/Web/XPath/Axes +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor /en-US/docs/Web/XPath/Axes +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor-or-self /en-US/docs/Web/XPath/Axes +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/attribute /en-US/docs/Web/XPath/Axes +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/child /en-US/docs/Web/XPath/Axes +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant /en-US/docs/Web/XPath/Axes +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant-or-self /en-US/docs/Web/XPath/Axes +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following /en-US/docs/Web/XPath/Axes +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following-sibling /en-US/docs/Web/XPath/Axes +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/namespace /en-US/docs/Web/XPath/Axes +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/parent /en-US/docs/Web/XPath/Axes +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding /en-US/docs/Web/XPath/Axes +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding-sibling /en-US/docs/Web/XPath/Axes +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/self /en-US/docs/Web/XPath/Axes /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Functions /en-US/docs/Web/XPath/Functions /en-US/docs/Web/XSLT/Using_the_Mozilla_JavaScript_interface_to_XSL_Transformations /en-US/docs/Web/API/XSLTProcessor /en-US/docs/Web/XSLT/XSLT_JS_interface_in_Gecko /en-US/docs/Web/API/XSLTProcessor @@ -13226,7 +13636,6 @@ /en-US/docs/WebGL/Creating_3D_objects_using_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Creating_3D_objects_using_WebGL /en-US/docs/WebGL/Cross-Domain_Textures /en-US/docs/Web/API/WebGL_API/Tutorial/Using_textures_in_WebGL#Cross-domain_textures /en-US/docs/WebGL/Getting_started_with_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Getting_started_with_WebGL -/en-US/docs/WebGL/Getting_started_with_WebGL/Commencer_avec_le_WebGL /fr/docs/Web/API/WebGL_API/Tutorial/Commencer_avec_WebGL /en-US/docs/WebGL/Lighting_in_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Lighting_in_WebGL /en-US/docs/WebGL/Using_Extensions /en-US/docs/Web/API/WebGL_API/Using_Extensions /en-US/docs/WebGL/Using_shaders_to_apply_color_in_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Using_shaders_to_apply_color_in_WebGL @@ -13256,20 +13665,20 @@ /en-US/docs/Web_Audio_API/Using_Web_Audio_API /en-US/docs/Web/API/Web_Audio_API/Using_Web_Audio_API /en-US/docs/Web_Development /en-US/docs/Web/Guide /en-US/docs/Web_Development/HTTP_cookies /en-US/docs/Web/HTTP/Cookies -/en-US/docs/Web_Development/Introduction_to_Web_development /en-US/docs/Learn -/en-US/docs/Web_Development/Mobile /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web_Development/Mobile/A_hybrid_approach /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design -/en-US/docs/Web_Development/Mobile/Mobile-friendliness /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design +/en-US/docs/Web_Development/Introduction_to_Web_development /en-US/docs/Learn_web_development +/en-US/docs/Web_Development/Mobile /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web_Development/Mobile/A_hybrid_approach /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design +/en-US/docs/Web_Development/Mobile/Mobile-friendliness /en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design /en-US/docs/Web_Development/Mobile/Responsive_design /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web_Development/Mobile/Responsive_design/Responsive_design_references /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web_Development/Mobile/Separate_sites /en-US/docs/Glossary/Responsive_web_design /en-US/docs/Web_Development/Responsive_Web_design /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web_Development/Responsive_design /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web_Development/Responsive_design/Responsive_design_references /en-US/docs/Web/Progressive_web_apps -/en-US/docs/Web_Development2/Introduction_to_Web_development /en-US/docs/Learn -/en-US/docs/Web_development/Historical_artifacts_to_avoid /en-US/docs/Learn/HTML/Introduction_to_HTML -/en-US/docs/Web_development/Writing_Forward_Compatible_Websites /en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/JavaScript -/en-US/docs/Web_development/Writing_forward-compatible_websites /en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/JavaScript +/en-US/docs/Web_Development2/Introduction_to_Web_development /en-US/docs/Learn_web_development +/en-US/docs/Web_development/Historical_artifacts_to_avoid /en-US/docs/Learn_web_development/Core/Structuring_content +/en-US/docs/Web_development/Writing_Forward_Compatible_Websites /en-US/docs/Learn_web_development/Core/Scripting/Debugging_JavaScript +/en-US/docs/Web_development/Writing_forward-compatible_websites /en-US/docs/Learn_web_development/Core/Scripting/Debugging_JavaScript /en-US/docs/What's_New_in_Deer_Park_Alpha /en-US/docs/Mozilla/Firefox/Releases/1.5/What_s_new_in_1.5_alpha /en-US/docs/What_does_tracking_mean /en-US/docs/Web/HTTP/Headers/DNT /en-US/docs/Whitespace_in_the_DOM /en-US/docs/Web/API/Document_Object_Model/Whitespace @@ -13278,7 +13687,7 @@ /en-US/docs/WindowEventHandlers.onhashchange /en-US/docs/Web/API/Window/hashchange_event /en-US/docs/WindowEventHandlers.onpopstate /en-US/docs/Web/API/Window/popstate_event /en-US/docs/WindowEventHandlers.onunload /en-US/docs/Web/API/Window/unload_event -/en-US/docs/Writing_Forward_Compatible_Websites /en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/JavaScript +/en-US/docs/Writing_Forward_Compatible_Websites /en-US/docs/Learn_web_development/Core/Scripting/Debugging_JavaScript /en-US/docs/XHTML /en-US/docs/Glossary/XHTML /en-US/docs/XInclude /en-US/docs/Glossary/XInclude /en-US/docs/XLink /en-US/docs/Glossary/XLink @@ -13553,7 +13962,7 @@ /en-US/docs/cssText /en-US/docs/Web/API/CSSRule/cssText /en-US/docs/ctrlKey /en-US/docs/Web/API/MouseEvent/ctrlKey /en-US/docs/currentTarget /en-US/docs/Web/API/Event/currentTarget -/en-US/docs/data_URIs /en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs +/en-US/docs/data_URIs /en-US/docs/Web/URI/Schemes/data /en-US/docs/de_temp /en-US/docs/Web/API/document/documentElement /en-US/docs/defineGetter /en-US/docs/Web/JavaScript/Guide/Working_with_objects /en-US/docs/defineSetter /en-US/docs/Web/JavaScript/Guide/Working_with_objects @@ -13723,12 +14132,12 @@ /en-US/docs/setAttributeNodeNS /en-US/docs/Web/API/Element/setAttributeNodeNS /en-US/docs/shape-box /en-US/docs/Web/CSS/shape-outside /en-US/docs/shiftKey /en-US/docs/Web/API/MouseEvent/shiftKey -/en-US/docs/skills /en-US/docs/Learn +/en-US/docs/skills /en-US/docs/Learn_web_development /en-US/docs/slice /en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice /en-US/docs/stopPropagation /en-US/docs/Web/API/Event/stopPropagation /en-US/docs/summary /en-US/docs/Web/API/HTMLTableElement/summary /en-US/docs/supports /en-US/docs/Web/API/CSS/supports_static -/en-US/docs/switch_command_JavaScript /en-US/docs/Learn/JavaScript/Building_blocks/conditionals +/en-US/docs/switch_command_JavaScript /en-US/docs/Learn_web_development/Core/Scripting/Conditionals /en-US/docs/tBodies /en-US/docs/Web/API/HTMLTableElement/tBodies /en-US/docs/tabIndex /en-US/docs/Web/API/HTMLElement/tabIndex /en-US/docs/tabs.moveInSuccession /en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/moveInSuccession @@ -13742,7 +14151,6 @@ /en-US/docs/transform /en-US/docs/Web/CSS/transform /en-US/docs/typeof /en-US/docs/Web/JavaScript/Reference/Operators/typeof /en-US/docs/var /en-US/docs/Web/CSS/var -/en-US/docs/video /es/docs/Web/HTML/Elemento/video /en-US/docs/web/accessibility/aria/aria_techniques/using_the_alertdialog_role/ /en-US/docs/Web/Accessibility/ARIA/Roles/alertdialog_role /en-US/docs/web/accessibility/aria/aria_techniques/using_the_article_role/ /en-US/docs/Web/Accessibility/ARIA/Roles/article_role /en-US/docs/web/accessibility/aria/aria_techniques/using_the_group_role/ /en-US/docs/Web/Accessibility/ARIA/Roles/group_role @@ -13757,8 +14165,8 @@ /en-US/docs/web/api/DOMPoint/fromPoint /en-US/docs/Web/API/DOMPoint/fromPoint_static /en-US/docs/width /en-US/docs/Web/CSS/width /en-US/docs/window.captureEvents /en-US/docs/Web/API/Window/captureEvents -/en-US/docs/window.clearInterval /en-US/docs/Web/API/clearInterval -/en-US/docs/window.clearTimeout /en-US/docs/Web/API/clearTimeout +/en-US/docs/window.clearInterval /en-US/docs/Web/API/Window/clearInterval +/en-US/docs/window.clearTimeout /en-US/docs/Web/API/Window/clearTimeout /en-US/docs/window.close /en-US/docs/Web/API/Window/close /en-US/docs/window.closed /en-US/docs/Web/API/Window/closed /en-US/docs/window.confirm /en-US/docs/Web/API/Window/confirm @@ -13800,16 +14208,14 @@ /en-US/docs/window.scrollX /en-US/docs/Web/API/Window/scrollX /en-US/docs/window.scrollY /en-US/docs/Web/API/Window/scrollY /en-US/docs/window.scrollbars /en-US/docs/Web/API/Window/scrollbars -/en-US/docs/window.setInterval /en-US/docs/Web/API/setInterval -/en-US/docs/window.setTimeout /en-US/docs/Web/API/setTimeout -/en-US/docs/window.sidebar /en-US/docs/Web/API/Window/sidebar +/en-US/docs/window.setInterval /en-US/docs/Web/API/Window/setInterval +/en-US/docs/window.setTimeout /en-US/docs/Web/API/Window/setTimeout +/en-US/docs/window.sidebar /en-US/docs/Web/API/Window/external /en-US/docs/window.sizeToContent /en-US/docs/Web/API/Window/sizeToContent /en-US/docs/window.status /en-US/docs/Web/API/Window/status /en-US/docs/window.statusbar /en-US/docs/Web/API/Window/statusbar /en-US/docs/window.toolbar /en-US/docs/Web/API/Window/toolbar /en-US/docs/window.unescape /en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape /en-US/docs/window.window /en-US/docs/Web/API/Window/window -/en-US/docs/www_vs_non-www_URLs /en-US/docs/Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs +/en-US/docs/www_vs_non-www_URLs /en-US/docs/Web/URI/Authority/Choosing_between_www_and_non-www_URLs /en-US/docs/xml:base /en-US/docs/Web/API/Node/baseURI -/en-US/docs/zh-n/JavaScript/Reference/Global_Objects/String/quote /zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/quote -/en-US/docs/zh_cn /zh-CN/docs/Web diff --git a/files/en-us/_wikihistory.json b/files/en-us/_wikihistory.json index 1344c175a017b6e..0c0776ae71796e0 100644 --- a/files/en-us/_wikihistory.json +++ b/files/en-us/_wikihistory.json @@ -832,21 +832,6 @@ "roryokane" ] }, - "Games/Tutorials/Touch_Event_Horizon": { - "modified": "2020-10-27T19:53:30.191Z", - "contributors": [ - "escattone", - "wbamberg", - "chrisdavidmills", - "rolfedh", - "dkocho4", - "nithinsudarsan", - "fscholz", - "Werebgle", - "aamiryan23", - "franciov" - ] - }, "Glossary": { "modified": "2020-12-14T11:30:09.332Z", "contributors": [ @@ -1912,18 +1897,6 @@ "ajinkya_p" ] }, - "Glossary/DOS_attack": { - "modified": "2019-03-23T23:08:00.112Z", - "contributors": [ - "SebastienParis", - "Sodan", - "klez", - "Aleksej", - "Andrew_Pfeiffer", - "pbmj5233", - "RufusCSharma" - ] - }, "Glossary/DTLS": { "modified": "2019-12-09T06:56:39.078Z", "contributors": [ @@ -2709,6 +2682,10 @@ "modified": "2020-09-14T07:48:57.436Z", "contributors": ["darby", "roshan0708", "iigmir"] }, + "Glossary/HTTP_Content": { + "modified": "2020-12-04T06:44:11.807Z", + "contributors": ["chrisdavidmills", "hamishwillee"] + }, "Glossary/HTTP_header": { "modified": "2020-11-30T03:35:20.276Z", "contributors": [ @@ -3870,10 +3847,6 @@ "panaggio" ] }, - "Glossary/Payload_body": { - "modified": "2020-12-04T06:44:11.807Z", - "contributors": ["chrisdavidmills", "hamishwillee"] - }, "Glossary/Perceived_performance": { "modified": "2019-05-20T13:01:45.834Z", "contributors": ["estelle", "sideshowbarker", "andystevensname"] @@ -4522,10 +4495,6 @@ "modified": "2020-10-05T12:31:04.165Z", "contributors": ["alattalatta", "darby", "klez", "devanshmanu", "jswisher"] }, - "Glossary/Self-Executing_Anonymous_Function": { - "modified": "2019-09-24T05:50:18.861Z", - "contributors": ["natevw", "Porkepix", "chrisdavidmills"] - }, "Glossary/Semantics": { "modified": "2020-11-27T04:59:07.153Z", "contributors": [ @@ -5759,105 +5728,11 @@ "modified": "2019-03-23T22:52:22.152Z", "contributors": ["klez", "Sheppy", "hbloomer"] }, - "Learn": { - "modified": "2020-12-13T13:31:06.505Z", - "contributors": [ - "chrisdavidmills", - "aawwais", - "sideshowbarker", - "seo", - "pdfkomar", - "Software202", - "haneenjarrah88", - "jatin.kumar.1675", - "rolfedh", - "roshan0708", - "nicholaschildress53", - "manish", - "SphinxKnight", - "Anitha489", - "parttimemaidsg2", - "Anitha", - "onurbasturk", - "maeeel968", - "Frontsy", - "mycodewheel", - "taxisforhimachal", - "Hortuo", - "jsfuentes", - "Zearin_Galaurum", - "methodx", - "mbkanty", - "EasyForever", - "simukou", - "calin", - "Mattumd", - "alattalatta", - "KLIWONJagung", - "LiHaowen", - "gepanther", - "cracraaf", - "phillipgraniero", - "broughammer", - "jswisher", - "horndoc", - "Ollasmyke", - "MNizam0802", - "stevenchen1245", - "svarlamov", - "estelle", - "PW79", - "kostyadubinin", - "easywebplansdaman", - "ExE-Boss", - "AdrianSkar", - "vamsikrishnareddybevara", - "bhushan_mdn", - "bettybluemoore", - "mridularya7", - "PhonySpy", - "irenesmith", - "babylinda1973", - "mostafasam", - "alanfeld", - "j8j8Le1", - "vincssal", - "kumarpranav1234", - "kaza_hesto", - "tutorials2learnclub", - "david_ross", - "tty9", - "har256b", - "leafront", - "mykebrian", - "raisedadead", - "bhaskarmac", - "genSud", - "ProHos", - "ayespi", - "Sibiraj-S", - "Agilan", - "hadleyel", - "danieltex", - "dvincent", - "entriek", - "Lahcener", - "l34kr", - "BychekRU", - "Sebastianz", - "fscholz", - "Sheppy", - "espinielli", - "fanousek", - "Jeremie", - "jsx", - "SURAJPRATAP", - "Andrew_Pfeiffer", - "kscarfone", - "anistark" - ] + "Learn/CSS/Howto/create_fancy_boxes": { + "modified": "2020-07-16T22:25:49.147Z", + "contributors": ["hbloomer", "Jeremie"] }, - "Learn/Accessibility": { + "Learn_web_development/Core/Accessibility": { "modified": "2020-10-04T00:35:19.095Z", "contributors": [ "hadleyel", @@ -5875,11 +5750,11 @@ "charlie-s" ] }, - "Learn/Accessibility/Accessibility_troubleshooting": { + "Learn_web_development/Core/Accessibility/Accessibility_troubleshooting": { "modified": "2020-07-16T22:40:34.005Z", "contributors": ["chrisdavidmills", "jswisher", "RicardsVeveris", "qdirks"] }, - "Learn/Accessibility/CSS_and_JavaScript": { + "Learn_web_development/Core/Accessibility/CSS_and_JavaScript": { "modified": "2020-07-16T22:40:16.216Z", "contributors": [ "chrisdavidmills", @@ -5896,11 +5771,11 @@ "unused" ] }, - "Learn/Accessibility/CSS_and_JavaScript/Test_your_skills:_CSS_and_JavaScript_accessibility": { + "Learn_web_development/Core/Accessibility/CSS_and_JavaScript/Test_your_skills:_CSS_and_JavaScript_accessibility": { "modified": "2020-07-16T22:40:20.219Z", "contributors": ["chrisdavidmills"] }, - "Learn/Accessibility/HTML": { + "Learn_web_development/Core/Accessibility/HTML": { "modified": "2020-11-20T01:54:13.621Z", "contributors": [ "hamishwillee", @@ -5932,7 +5807,7 @@ "unused" ] }, - "Learn/Accessibility/Mobile": { + "Learn_web_development/Core/Accessibility/Mobile": { "modified": "2020-12-10T09:45:31.215Z", "contributors": [ "chrisdavidmills", @@ -5948,7 +5823,7 @@ "qdirks" ] }, - "Learn/Accessibility/Multimedia": { + "Learn_web_development/Core/Accessibility/Multimedia": { "modified": "2020-12-03T08:05:47.296Z", "contributors": [ "chrisdavidmills", @@ -5965,11 +5840,28 @@ "qdirks" ] }, - "Learn/Accessibility/Test_your_skills:_HTML_accessibility": { + "Learn_web_development/Core/Accessibility/Test_your_skills:_HTML_accessibility": { "modified": "2020-07-16T22:40:37.539Z", "contributors": ["chrisdavidmills"] }, - "Learn/Accessibility/WAI-ARIA_basics": { + "Learn_web_development/Core/Accessibility/Tooling": { + "modified": "2020-11-20T02:03:56.749Z", + "contributors": [ + "hamishwillee", + "chrisdavidmills", + "ckashby", + "kruschk", + "eduDevCF", + "mharty", + "nackman", + "joestrouth1", + "stephaniehobson", + "conradbeach", + "joelcollinsdc", + "granttchart" + ] + }, + "Learn_web_development/Core/Accessibility/WAI-ARIA_basics": { "modified": "2020-11-24T11:05:10.811Z", "contributors": [ "SpartaSixZero", @@ -5991,11 +5883,11 @@ "joshbader" ] }, - "Learn/Accessibility/WAI-ARIA_basics/Test_your_skills:_WAI-ARIA": { + "Learn_web_development/Core/Accessibility/WAI-ARIA_basics/Test_your_skills:_WAI-ARIA": { "modified": "2020-11-13T16:57:24.326Z", "contributors": ["BassOfBass", "chrisdavidmills"] }, - "Learn/Accessibility/What_is_accessibility": { + "Learn_web_development/Core/Accessibility/What_is_accessibility": { "modified": "2020-10-04T01:37:18.886Z", "contributors": [ "hadleyel", @@ -6019,359 +5911,7 @@ "granttchart" ] }, - "Learn/CSS": { - "modified": "2020-10-22T15:00:03.053Z", - "contributors": [ - "hakantr", - "chrisdavidmills", - "ksam", - "onurbasturk", - "erictleung", - "Superl3", - "josh-wong", - "mrmowji", - "suterj", - "sideshowbarker", - "ashutoshchaturvedi", - "Anawriter1", - "Sheppy", - "TornadoIDS", - "mfluehr", - "dvincent", - "SphinxKnight", - "CamillaLaursen", - "serratusmagnus", - "VladdOs", - "maybe", - "Jeremie", - "MexieAndCo", - "Andrew_Pfeiffer", - "teoli", - "rhyne24", - "fscholz" - ] - }, - "Learn/CSS/Building_blocks": { - "modified": "2020-10-27T21:16:26.666Z", - "contributors": [ - "gdsimoes", - "chrisdavidmills", - "salutis", - "SphinxKnight", - "Hemiptera1" - ] - }, - "Learn/CSS/Building_blocks/A_cool_looking_box": { - "modified": "2020-07-16T22:28:25.961Z", - "contributors": [ - "chrisdavidmills", - "jamesdhurd", - "stevedav", - "jruota", - "jswisher", - "richardzacur" - ] - }, - "Learn/CSS/Building_blocks/Advanced_styling_effects": { - "modified": "2020-07-16T22:28:20.113Z", - "contributors": [ - "mbrasseau", - "chrisdavidmills", - "agnelvishal", - "PanayiotisPaschalides", - "juandesouza", - "stephaniehobson", - "qdirks", - "y0u-s", - "kiriakosv", - "richardzacur", - "Sebastianz" - ] - }, - "Learn/CSS/Building_blocks/Backgrounds_and_borders": { - "modified": "2020-07-16T22:29:07.190Z", - "contributors": [ - "chrisdavidmills", - "rolfedh", - "Azzedine2020", - "haond10adp", - "rachelandrew", - "choudh70", - "xp44mm" - ] - }, - "Learn/CSS/Building_blocks/Cascade_and_inheritance": { - "modified": "2020-11-02T04:01:22.115Z", - "contributors": [ - "sourabhramsingh", - "gdsimoes", - "erictleung", - "30nov88", - "chrisdavidmills", - "gerfolder", - "rachelandrew", - "flowfire", - "snakada", - "choudh70", - "mikemorr", - "sharma86hub", - "bernardirfan", - "j-sea", - "SphinxKnight", - "cybmdm", - "gumchum", - "ExE-Boss" - ] - }, - "Learn/CSS/Building_blocks/Cascade_tasks": { - "modified": "2020-07-16T22:29:36.222Z", - "contributors": ["blueblots", "RafeyIqbalRahman", "rachelandrew"] - }, - "Learn/CSS/Building_blocks/Creating_fancy_letterheaded_paper": { - "modified": "2020-07-16T22:28:23.858Z", - "contributors": ["chrisdavidmills", "jswisher", "maurodibert"] - }, - "Learn/CSS/Building_blocks/Debugging_CSS": { - "modified": "2020-12-11T17:53:49.635Z", - "contributors": [ - "bershanskiy", - "chrisdavidmills", - "xp44mm", - "mbrasseau", - "rachelandrew" - ] - }, - "Learn/CSS/Building_blocks/Fundamental_CSS_comprehension": { - "modified": "2020-07-16T22:28:10.933Z", - "contributors": [ - "chrisdavidmills", - "bripmccann", - "jswisher", - "jenjwong", - "jrussia", - "richardzacur" - ] - }, - "Learn/CSS/Building_blocks/Handling_different_text_directions": { - "modified": "2020-08-20T07:58:55.334Z", - "contributors": ["absinth0", "rachelandrew", "chrisdavidmills", "choudh70"] - }, - "Learn/CSS/Building_blocks/Images_media_form_elements": { - "modified": "2020-07-16T22:29:23.752Z", - "contributors": [ - "rachelandrew", - "acnard", - "chrisdavidmills", - "choudh70", - "xp44mm" - ] - }, - "Learn/CSS/Building_blocks/Images_tasks": { - "modified": "2020-07-16T22:29:35.047Z", - "contributors": ["avivmu", "blueblots", "RafeyIqbalRahman", "rachelandrew"] - }, - "Learn/CSS/Building_blocks/Organizing": { - "modified": "2020-07-16T22:29:30.920Z", - "contributors": [ - "chrisdavidmills", - "avivmu", - "JohnnyMu-Cn", - "adl-g", - "renatasva", - "xp44mm", - "juanmarinaudo", - "mbrasseau", - "rachelandrew" - ] - }, - "Learn/CSS/Building_blocks/Overflow_Tasks": { - "modified": "2020-07-16T22:29:33.802Z", - "contributors": ["avivmu", "blueblots", "RafeyIqbalRahman", "rachelandrew"] - }, - "Learn/CSS/Building_blocks/Overflowing_content": { - "modified": "2020-07-16T22:29:15.226Z", - "contributors": [ - "mrodent33", - "ohaver", - "chrisdavidmills", - "matt-continuousdelta", - "rachelandrew", - "Gxz-NGU" - ] - }, - "Learn/CSS/Building_blocks/Selectors": { - "modified": "2020-07-27T04:04:29.042Z", - "contributors": [ - "chrisdavidmills", - "cattofiq", - "gerfolder", - "choudh70", - "xp44mm", - "sergberg5", - "rachelandrew", - "ExE-Boss" - ] - }, - "Learn/CSS/Building_blocks/Selectors/Attribute_selectors": { - "modified": "2020-07-16T22:28:48.447Z", - "contributors": [ - "chrisdavidmills", - "SaquibAsghar", - "fazl", - "rachelandrew", - "83C10", - "mikemorr", - "RoyZhu" - ] - }, - "Learn/CSS/Building_blocks/Selectors/Combinators": { - "modified": "2020-07-16T22:28:51.504Z", - "contributors": [ - "haond10adp", - "rachelandrew", - "xp44mm", - "DanielNoamTuby", - "chrisdavidmills" - ] - }, - "Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements": { - "modified": "2020-07-16T22:28:42.196Z", - "contributors": [ - "chrisdavidmills", - "daihadi", - "xp44mm", - "juancancela", - "sergberg5", - "rachelandrew" - ] - }, - "Learn/CSS/Building_blocks/Selectors/Selectors_Tasks": { - "modified": "2020-11-10T09:07:22.974Z", - "contributors": [ - "Re9iNee", - "impossibleshadow", - "chrisdavidmills", - "HenningTimm", - "blueblots", - "RafeyIqbalRahman", - "rachelandrew" - ] - }, - "Learn/CSS/Building_blocks/Selectors/Type_Class_and_ID_Selectors": { - "modified": "2020-10-15T19:45:39.626Z", - "contributors": [ - "impossibleshadow", - "ohaver", - "chrisdavidmills", - "revanthn", - "cattofiq", - "mabouguerra", - "Saif-Shines", - "jpfkd", - "avry", - "fazl", - "xp44mm", - "jlbuckner", - "rachelandrew", - "ExE-Boss" - ] - }, - "Learn/CSS/Building_blocks/Sizing_items_in_CSS": { - "modified": "2020-10-16T11:08:04.568Z", - "contributors": [ - "rachelandrew", - "grodwizneo", - "jswisher", - "Breckles", - "chrisdavidmills", - "haond10adp", - "choudh70", - "xp44mm", - "Mahdi_Karimi_Asl", - "juanmarinaudo", - "mbrasseau" - ] - }, - "Learn/CSS/Building_blocks/Sizing_tasks": { - "modified": "2020-07-16T22:29:34.677Z", - "contributors": ["jpfkd", "sakthivelsekar33", "blueblots", "rachelandrew"] - }, - "Learn/CSS/Building_blocks/Styling_tables": { - "modified": "2020-08-29T06:23:45.928Z", - "contributors": [ - "chrisdavidmills", - "lisahigh32", - "vgiffin", - "rachelandrew", - "xp44mm", - "nsangwan", - "Hypnosphi", - "RainSlide", - "Kwan", - "BunnyWong", - "juandesouza", - "stephaniehobson", - "flash4syth", - "PyroLagus", - "richardzacur" - ] - }, - "Learn/CSS/Building_blocks/Tables_tasks": { - "modified": "2020-10-03T15:51:56.524Z", - "contributors": ["JennyDC", "blueblots", "rachelandrew"] - }, - "Learn/CSS/Building_blocks/Test_your_skills_backgrounds_and_borders": { - "modified": "2020-10-20T11:48:06.920Z", - "contributors": ["chrisdavidmills", "rachelandrew"] - }, - "Learn/CSS/Building_blocks/The_box_model": { - "modified": "2020-12-02T16:00:00.171Z", - "contributors": [ - "Seeeven7", - "chrisdavidmills", - "jameswatyeo", - "Edsonoguera", - "mattvagni", - "uhoh-itsmaciek", - "rachelandrew", - "RicardsVeveris", - "Iqbalh11", - "Igor-Sangin", - "xp44mm", - "erictleung", - "jlbuckner", - "trondpet", - "Mahdi_Karimi_Asl", - "gumchum" - ] - }, - "Learn/CSS/Building_blocks/Values_and_units": { - "modified": "2020-09-27T15:04:48.072Z", - "contributors": [ - "grodwizneo", - "chrisdavidmills", - "theRealJennie", - "jantimon", - "Azzedine2020", - "295805950zhang", - "rachelandrew", - "prog2yannicknet", - "wlnirvana", - "xp44mm", - "cartwr40", - "wipphj", - "zbjornson" - ] - }, - "Learn/CSS/Building_blocks/Values_tasks": { - "modified": "2020-10-03T15:56:43.195Z", - "contributors": ["JennyDC", "blueblots", "rachelandrew"] - }, - "Learn/CSS/Building_blocks/Writing_Modes_Tasks": { - "modified": "2020-07-16T22:29:33.477Z", - "contributors": ["blueblots", "rachelandrew"] - }, - "Learn/CSS/CSS_layout": { + "Learn_web_development/Core/CSS_layout": { "modified": "2020-07-16T22:26:28.482Z", "contributors": [ "chrisdavidmills", @@ -6387,7 +5927,7 @@ "rolfedh" ] }, - "Learn/CSS/CSS_layout/Flexbox": { + "Learn_web_development/Core/CSS_layout/Flexbox": { "modified": "2020-10-17T16:38:32.439Z", "contributors": [ "vkweb", @@ -6414,7 +5954,7 @@ "Sebastianz" ] }, - "Learn/CSS/CSS_layout/Flexbox_skills": { + "Learn_web_development/Core/CSS_layout/Flexbox_skills": { "modified": "2020-07-16T22:27:33.630Z", "contributors": [ "chrisdavidmills", @@ -6423,7 +5963,7 @@ "rachelandrew" ] }, - "Learn/CSS/CSS_layout/Floats": { + "Learn_web_development/Core/CSS_layout/Floats": { "modified": "2020-07-16T22:26:35.746Z", "contributors": [ "vgiffin", @@ -6455,7 +5995,7 @@ "richardzacur" ] }, - "Learn/CSS/CSS_layout/Floats_skills": { + "Learn_web_development/Core/CSS_layout/Floats_skills": { "modified": "2020-11-08T17:35:30.832Z", "contributors": [ "ohaver", @@ -6467,11 +6007,11 @@ "rachelandrew" ] }, - "Learn/CSS/CSS_layout/Fundamental_Layout_Comprehension": { + "Learn_web_development/Core/CSS_layout/Fundamental_Layout_Comprehension": { "modified": "2020-07-16T22:27:23.817Z", "contributors": ["chrisdavidmills", "rachelandrew"] }, - "Learn/CSS/CSS_layout/Grid_skills": { + "Learn_web_development/Core/CSS_layout/Grid_skills": { "modified": "2020-10-20T06:22:56.547Z", "contributors": [ "Oeekker", @@ -6482,7 +6022,7 @@ "rachelandrew" ] }, - "Learn/CSS/CSS_layout/Grids": { + "Learn_web_development/Core/CSS_layout/Grids": { "modified": "2020-10-28T07:33:10.063Z", "contributors": [ "chrisdavidmills", @@ -6511,7 +6051,7 @@ "Sebastianz" ] }, - "Learn/CSS/CSS_layout/Introduction": { + "Learn_web_development/Core/CSS_layout/Introduction": { "modified": "2020-07-16T22:27:02.707Z", "contributors": [ "chrisdavidmills", @@ -6539,11 +6079,11 @@ "SnoopyRules" ] }, - "Learn/CSS/CSS_layout/Legacy_Layout_Methods": { + "Learn_web_development/Core/CSS_layout/Legacy_Layout_Methods": { "modified": "2020-07-16T22:27:13.228Z", "contributors": ["chrisdavidmills", "xiaohanyu", "rachelandrew"] }, - "Learn/CSS/CSS_layout/Media_queries": { + "Learn_web_development/Core/CSS_layout/Media_queries": { "modified": "2020-07-20T05:18:34.624Z", "contributors": [ "chrisdavidmills", @@ -6553,7 +6093,7 @@ "kruschk" ] }, - "Learn/CSS/CSS_layout/Multicol_skills": { + "Learn_web_development/Core/CSS_layout/Multicol_skills": { "modified": "2020-07-16T22:27:35.746Z", "contributors": [ "jpfkd", @@ -6562,7 +6102,7 @@ "rachelandrew" ] }, - "Learn/CSS/CSS_layout/Multiple-column_Layout": { + "Learn_web_development/Core/CSS_layout/Multiple-column_Layout": { "modified": "2020-07-16T22:27:08.953Z", "contributors": [ "chrisdavidmills", @@ -6573,7 +6113,7 @@ "jezdez" ] }, - "Learn/CSS/CSS_layout/Normal_Flow": { + "Learn_web_development/Core/CSS_layout/Normal_Flow": { "modified": "2020-07-16T22:27:19.967Z", "contributors": [ "chrisdavidmills", @@ -6586,7 +6126,7 @@ "rachelandrew" ] }, - "Learn/CSS/CSS_layout/Position_skills": { + "Learn_web_development/Core/CSS_layout/Position_skills": { "modified": "2020-07-16T22:27:34.985Z", "contributors": [ "jpfkd", @@ -6595,7 +6135,7 @@ "rachelandrew" ] }, - "Learn/CSS/CSS_layout/Positioning": { + "Learn_web_development/Core/CSS_layout/Positioning": { "modified": "2020-08-01T23:51:55.099Z", "contributors": [ "tommedema", @@ -6627,7 +6167,7 @@ "richardzacur" ] }, - "Learn/CSS/CSS_layout/Practical_positioning_examples": { + "Learn_web_development/Core/CSS_layout/Practical_positioning_examples": { "modified": "2020-07-16T22:26:47.043Z", "contributors": [ "chrisdavidmills", @@ -6645,7 +6185,7 @@ "richardzacur" ] }, - "Learn/CSS/CSS_layout/Responsive_Design": { + "Learn_web_development/Core/CSS_layout/Responsive_Design": { "modified": "2020-07-16T22:27:26.162Z", "contributors": [ "owolagbadavid", @@ -6656,7 +6196,7 @@ "rachelandrew" ] }, - "Learn/CSS/CSS_layout/Supporting_Older_Browsers": { + "Learn_web_development/Core/CSS_layout/Supporting_Older_Browsers": { "modified": "2020-07-16T22:27:16.600Z", "contributors": [ "FFV47", @@ -6670,2382 +6210,1941 @@ "rachelandrew" ] }, - "Learn/CSS/CSS_layout/rwd_skills": { + "Learn_web_development/Core/CSS_layout/rwd_skills": { "modified": "2020-07-16T22:27:36.041Z", "contributors": ["MelchiorIm3Tal", "chrisdavidmills", "rachelandrew"] }, - "Learn/CSS/First_steps": { - "modified": "2020-07-16T22:27:37.951Z", + "Learn_web_development/Core/Frameworks_libraries": { + "modified": "2020-09-25T22:34:22.129Z", + "contributors": ["chrisdavidmills", "CodeDotJS"] + }, + "Learn_web_development/Core/Frameworks_libraries/Ember_conditional_footer": { + "modified": "2020-09-03T05:31:37.623Z", + "contributors": ["Rafael_Green", "chrisdavidmills"] + }, + "Learn_web_development/Core/Frameworks_libraries/Ember_getting_started": { + "modified": "2020-08-06T07:27:06.082Z", "contributors": ["chrisdavidmills"] }, - "Learn/CSS/First_steps/Getting_started": { - "modified": "2020-07-16T22:27:48.937Z", - "contributors": [ - "onurbasturk", - "blueblots", - "gsorto", - "xp44mm", - "smilevideo", - "mbrasseau", - "chrisdavidmills", - "rachelandrew", - "ExE-Boss", - "MyNameIsBond" - ] + "Learn_web_development/Core/Frameworks_libraries/Ember_interactivity_events_state": { + "modified": "2020-08-06T07:26:59.624Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Core/Frameworks_libraries/Ember_resources": { + "modified": "2020-08-06T07:26:47.135Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Core/Frameworks_libraries/Ember_routing": { + "modified": "2020-08-06T07:26:51.530Z", + "contributors": ["chrisdavidmills"] }, - "Learn/CSS/First_steps/How_CSS_is_structured": { - "modified": "2020-11-25T08:39:35.232Z", + "Learn_web_development/Core/Frameworks_libraries/Ember_structure_componentization": { + "modified": "2020-08-06T07:27:03.636Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Core/Frameworks_libraries/Introduction": { + "modified": "2020-09-08T07:18:11.161Z", "contributors": [ - "Seeeven7", - "mfuji09", - "gdsimoes", - "ohaver", - "impossibleshadow", - "theRealJennie", - "SnakeWhisperer", - "paul2ma", - "PatientLearner", - "vgiffin", - "bart5", - "jsargey", - "fischer", - "sardarisk", "chrisdavidmills", - "choudh70", - "mikemorr", - "xp44mm", - "mbrasseau", - "jlbuckner", - "rachelandrew", - "ExE-Boss" + "harryghgim", + "terrymorse", + "valgrimm", + "nicolasguasca1", + "codeability", + "mgechev", + "jchimene" ] }, - "Learn/CSS/First_steps/How_CSS_works": { - "modified": "2020-07-27T17:10:18.945Z", + "Learn_web_development/Core/Frameworks_libraries/Main_features": { + "modified": "2020-09-08T05:53:30.007Z", + "contributors": ["chrisdavidmills", "terrymorse", "luc4leone", "mrmowji"] + }, + "Learn_web_development/Core/Frameworks_libraries/React_accessibility": { + "modified": "2020-08-06T07:27:14.576Z", "contributors": [ - "warleyfdias", - "choudh70", - "jlbuckner", - "rachelandrew", "chrisdavidmills", - "ExE-Boss" + "vgiffin", + "ndri", + "xfq", + "doncity-tech" ] }, - "Learn/CSS/First_steps/Styling_a_biography_page": { - "modified": "2020-11-20T01:07:05.733Z", + "Learn_web_development/Core/Frameworks_libraries/React_components": { + "modified": "2020-08-06T07:27:25.146Z", + "contributors": ["chrisdavidmills", "storytellerrishabh", "codeability"] + }, + "Learn_web_development/Core/Frameworks_libraries/React_getting_started": { + "modified": "2020-10-21T06:59:37.317Z", "contributors": [ - "schalkneethling", - "hakantr", - "salutis", "chrisdavidmills", - "rachelandrew" + "ramiZackaryShamir", + "spaceinvadev", + "mrmowji", + "codeability", + "bias-santa", + "franca" ] }, - "Learn/CSS/First_steps/What_is_CSS": { - "modified": "2020-11-20T01:04:49.095Z", + "Learn_web_development/Core/Frameworks_libraries/React_interactivity_events_state": { + "modified": "2020-09-01T07:11:30.226Z", "contributors": [ - "schalkneethling", "chrisdavidmills", - "jlbuckner", - "rachelandrew", - "ExE-Boss", - "MyNameIsBond" + "ndri", + "nicolasguasca1", + "mrmowji", + "alperars" ] }, - "Learn/CSS/Howto": { - "modified": "2020-07-16T22:25:41.103Z", + "Learn_web_development/Core/Frameworks_libraries/React_interactivity_filtering_conditional_rendering": { + "modified": "2020-09-28T06:18:04.788Z", "contributors": [ - "Coink", - "SphinxKnight", - "dforceacademy", - "prayagch", "chrisdavidmills", - "kruschk", - "david_ross", - "Jedipedia", - "yuj25", - "Onkar316", - "adebiyial", - "hbloomer", - "Jeremie" + "dl90", + "terrymorse", + "Rafael_Green", + "mrmowji" ] }, - "Learn/CSS/Howto/CSS_FAQ": { - "modified": "2020-07-16T22:25:44.490Z", + "Learn_web_development/Core/Frameworks_libraries/React_resources": { + "modified": "2020-08-06T07:27:08.934Z", + "contributors": ["chrisdavidmills", "mrmowji", "bias-santa", "codeability"] + }, + "Learn_web_development/Core/Frameworks_libraries/React_todo_list_beginning": { + "modified": "2020-09-08T16:44:12.600Z", + "contributors": ["terrymorse", "chrisdavidmills", "codeability"] + }, + "Learn_web_development/Core/Frameworks_libraries/Svelte_Todo_list_beginning": { + "modified": "2020-12-01T21:39:23.352Z", + "contributors": ["seneca", "chrisdavidmills"] + }, + "Learn_web_development/Core/Frameworks_libraries/Svelte_TypeScript": { + "modified": "2020-10-29T07:18:00.018Z", + "contributors": ["haond10adp", "chrisdavidmills"] + }, + "Learn_web_development/Core/Frameworks_libraries/Svelte_components": { + "modified": "2020-10-07T20:21:51.724Z", + "contributors": ["seneca", "Rafael_Green", "chrisdavidmills", "opensas"] + }, + "Learn_web_development/Core/Frameworks_libraries/Svelte_deployment_next": { + "modified": "2020-09-20T04:24:34.950Z", + "contributors": ["Rafael_Green", "chrisdavidmills"] + }, + "Learn_web_development/Core/Frameworks_libraries/Svelte_getting_started": { + "modified": "2020-09-11T14:25:08.477Z", + "contributors": ["Rafael_Green", "chrisdavidmills", "opensas"] + }, + "Learn_web_development/Core/Frameworks_libraries/Svelte_reactivity_lifecycle_accessibility": { + "modified": "2020-10-24T06:16:59.643Z", "contributors": [ + "haond10adp", "SphinxKnight", - "sarlington", - "stephaniehobson", - "Sheppy", + "Rafael_Green", "chrisdavidmills", - "leeir", - "creativenitish", - "xfq", - "teoli", - "kscarfone", - "ethertank", - "jswisher", - "tw2113", - "inma_610", - "Jürgen Jeka", - "Mgjbot", - "Ryanerasure", - "DBaron", - "1163832425", - "Ssmedberg", - "Napolj2", - "Ptak82", - "Dria", - "Randywombat", - "Saori", - "Danielwang", - "Nickolay", - "Antonality", - "Chrisblore", - "Stephen1", - "Waldo", - "bradipao" + "opensas" ] }, - "Learn/CSS/Howto/Generated_content": { - "modified": "2020-07-16T22:25:46.676Z", + "Learn_web_development/Core/Frameworks_libraries/Svelte_stores": { + "modified": "2020-12-11T07:44:13.494Z", "contributors": [ - "chrisdavidmills", - "clairealyssa", - "wbamberg", - "tirein", - "yancarq", - "mrlagerwey", - "kan199041", - "mfluehr", - "luketeaford", - "floEdelmann", - "jeansouz4", - "veryrandomname", - "Jeremie", - "kscarfone", - "stephen", - "trevorh", - "teoli", - "Sheppy", - "jswisher", - "Mgjbot", - "Leandro Mercês Xavier", - "Verruckt", - "BenoitL", - "Rod Whiteley", - "gandalf", - "Nickolay" + "Mishra-Suraj", + "haond10adp", + "Rafael_Green", + "chrisdavidmills" ] }, - "Learn/CSS/Howto/create_fancy_boxes": { - "modified": "2020-07-16T22:25:49.147Z", - "contributors": ["hbloomer", "Jeremie"] + "Learn_web_development/Core/Frameworks_libraries/Svelte_variables_props": { + "modified": "2020-10-20T01:35:26.842Z", + "contributors": ["haond10adp", "Rafael_Green", "chrisdavidmills"] }, - "Learn/CSS/Styling_text": { - "modified": "2020-07-16T22:25:57.072Z", + "Learn_web_development/Core/Frameworks_libraries/Vue_computed_properties": { + "modified": "2020-09-08T10:27:40.979Z", + "contributors": ["Rafael_Green", "chrisdavidmills", "clintbingo"] + }, + "Learn_web_development/Core/Frameworks_libraries/Vue_conditional_rendering": { + "modified": "2020-08-06T07:26:12.722Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Core/Frameworks_libraries/Vue_first_component": { + "modified": "2020-09-05T08:38:17.788Z", + "contributors": ["Rafael_Green", "chrisdavidmills"] + }, + "Learn_web_development/Core/Frameworks_libraries/Vue_getting_started": { + "modified": "2020-08-06T07:26:44.679Z", + "contributors": ["chrisdavidmills", "taiwoayanleye"] + }, + "Learn_web_development/Core/Frameworks_libraries/Vue_methods_events_models": { + "modified": "2020-10-05T06:56:15.162Z", + "contributors": ["JohnnyMu-Cn", "chrisdavidmills"] + }, + "Learn_web_development/Core/Frameworks_libraries/Vue_refs_focus_management": { + "modified": "2020-08-06T07:26:09.176Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Core/Frameworks_libraries/Vue_rendering_lists": { + "modified": "2020-09-15T11:22:44.422Z", + "contributors": ["chrisdavidmills", "technicalflaw"] + }, + "Learn_web_development/Core/Frameworks_libraries/Vue_resources": { + "modified": "2020-08-06T07:26:03.837Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Core/Frameworks_libraries/Vue_styling": { + "modified": "2020-08-06T07:26:25.263Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Core/Scripting": { + "modified": "2020-07-16T22:29:47.255Z", "contributors": [ "chrisdavidmills", - "cartwr40", - "mozdevcontrib", - "wilton-cruz", - "pranay2063", - "Didglee", - "richardzacur", - "rolfedh" + "kruschk", + "Andriy-K", + "adnankammes", + "SphinxKnight", + "billaparker", + "Elllenn", + "dartvaneri", + "kunleris", + "gotoark", + "Jeremie", + "Sheppy" ] }, - "Learn/CSS/Styling_text/Fundamentals": { - "modified": "2020-12-01T06:10:24.965Z", + "Learn_web_development/Core/Scripting/A_first_splash": { + "modified": "2020-12-05T16:30:27.992Z", "contributors": [ + "mfuji09", "chrisdavidmills", - "salutis", - "choudh70", + "mrmowji", + "blinkous", + "ghaffar_jr.codes", + "hisbvdis", + "Rohitkrops", + "ckashby", "tayyabalishan", - "xp44mm", - "pei-han", - "UnorthodoxThing", - "PanayiotisPaschalides", - "koralcem", + "Waqas-Ali-Azhar", + "kruschk", + "Sarthak23khatana", + "jswisher", + "loretta-arineva", + "jshado1", + "eremis101", + "Mei-Giyanto22", + "BogdanSorin", + "nahamshabun", + "gusmally", + "RafeyIqbalRahman", + "ehrnd21mdn", + "Polcat000", + "redrambles", + "bripmccann", + "jjen9", "stephaniehobson", - "wilton-cruz", - "Sheppy", - "TimSongCoder", - "qdirks", - "PyroLagus", - "richardzacur", - "plug-n-play" + "SumitKosta", + "yuvarajakm", + "vyaspranjal33", + "chrispincharles", + "Zmk55", + "Kongklakker", + "nmve", + "PawelRokosz", + "Jeremie", + "beardedpayton", + "Sebastianz" ] }, - "Learn/CSS/Styling_text/Styling_links": { - "modified": "2020-11-03T06:47:30.595Z", + "Learn_web_development/Core/Scripting/Arrays": { + "modified": "2020-07-16T22:30:52.384Z", "contributors": [ - "tremby", - "gerfolder", "chrisdavidmills", - "vgiffin", + "choudh70", "tayyabalishan", - "hackernewslibrary", - "angel-luis", + "jswisher", + "denise_", + "Majek", + "keshav1245", + "mfuji09", + "dq82elo", + "TasosPoursaitides", + "johnnyvalles", + "pbbob1", + "bripmccann", "stephaniehobson", - "TimSongCoder", - "multics", + "AnnaCheba", "qdirks", - "dsujeeun", - "waldr", - "PyroLagus", - "mkamalkayani", - "richardzacur" + "hadleyel", + "RobWheadon", + "faroukcharkas", + "sushobhana", + "cloverharvest", + "nmve", + "TimHandy", + "PawelRokosz", + "Jeremie", + "BaderSur", + "Sebastianz", + "BenCrab", + "fscholz" ] }, - "Learn/CSS/Styling_text/Styling_lists": { - "modified": "2020-07-16T22:26:10.863Z", + "Learn_web_development/Core/Scripting/Build_your_own_function": { + "modified": "2020-07-16T22:31:28.317Z", "contributors": [ - "avivmu", - "haond10adp", + "A.Faturechi", "chrisdavidmills", - "massood", - "ntutangyun", - "irenesmith", - "RafeyIqbalRahman", + "mariusmucenicu", + "docrob0t", + "sambgordon", "thenoelman", - "juandesouza", - "angel-luis", + "wazz", + "kan199041", "stephaniehobson", - "pbarun", - "jruota", - "anthonyvallee", - "richardzacur" + "FishinginaSombrero8", + "cPlayIt", + "nmve", + "rteliczan", + "Jeremie" ] }, - "Learn/CSS/Styling_text/Typesetting_a_homepage": { - "modified": "2020-07-16T22:26:25.604Z", - "contributors": ["chrisdavidmills", "jswisher", "richardzacur"] - }, - "Learn/CSS/Styling_text/Web_fonts": { - "modified": "2020-07-16T22:26:22.058Z", + "Learn_web_development/Core/Scripting/Conditionals": { + "modified": "2020-07-16T22:31:11.893Z", "contributors": [ "chrisdavidmills", - "mostlybytes", - "tayyabalishan", "choudh70", - "kruschk", - "darman12", - "legostud", - "msobanjo", - "edprince", - "aboagyed", - "oyenirat", + "tayyabalishan", + "jswisher", + "keshav1245", + "RafeyIqbalRahman", + "Czl.Lebleu", + "smccrindle", + "OxyDesign", "stephaniehobson", - "JonathanPool", - "mfluehr", - "potmpark", "qdirks", - "pmontegna", - "PyroLagus", - "richardzacur" + "drozycki", + "BrunkBeard", + "akshayjumbade", + "nmve", + "Rohit25negi", + "Jeremie", + "Cameron-Riecan", + "husain100b", + "fscholz", + "Sebastianz" ] }, - "Learn/Common_questions": { - "modified": "2020-07-16T22:35:20.908Z", + "Learn_web_development/Core/Scripting/DOM_scripting": { + "modified": "2020-08-23T02:38:31.029Z", "contributors": [ + "wlt", + "herrieii", + "chrisdavidmills", "kruschk", - "romanjamesmirov", + "HARARCA", + "Aternus", + "ajhsu", + "jlafica", + "sourav2706", + "francescm", + "jwq1", "stephaniehobson", - "JeffD", - "chrisdavidmills", - "rudolfo", - "Mori" + "Bogdan.G", + "JideLambo", + "lybrendan", + "mientje" ] }, - "Learn/Common_questions/Design_and_accessibility/Common_web_layouts": { - "modified": "2020-07-16T22:35:42.190Z", + "Learn_web_development/Core/Scripting/Debugging_JavaScript": { + "modified": "2020-11-23T02:24:03.962Z", "contributors": [ + "hamishwillee", "chrisdavidmills", - "SphinxKnight", - "Jeremie", - "Sheppy", - "Kathrincolyn", - "Andrew_Pfeiffer", - "mehmetaergun", - "anistark", - "rhyne24" + "ckashby", + "kruschk", + "stephaniehobson", + "EdwardB", + "qdirks", + "Juggernaughtt" ] }, - "Learn/Common_questions/Design_and_accessibility/Design_for_all_types_of_users": { - "modified": "2020-07-16T22:35:50.650Z", + "Learn_web_development/Core/Scripting/Events": { + "modified": "2020-08-19T17:34:16.897Z", "contributors": [ - "MelchiorIm3Tal", + "Aaron228", + "owolagbadavid", "chrisdavidmills", - "SphinxKnight", + "ankerok-dingdong", + "muhammadghazali", + "tayyabalishan", + "jswisher", + "VijayKumarKTG", + "FZs", + "imchriskitchens", + "mariusmucenicu", + "4R53N", + "sideshowbarker", + "christopherwilson1", + "bubzy34", + "wobedi", + "anton-mladenov", + "selrond", + "andyprickett", + "stephaniehobson", + "seasmith", + "Saabbir", + "qdirks", + "Arecius", + "Bogdancev", + "kirkins", + "cPlayIt", + "dsujeeun", + "shalvasvanidze", + "nmve", "Jeremie", - "Andrew_Pfeiffer", - "notabene" + "BaderSur", + "sngv" ] }, - "Learn/Common_questions/Design_and_accessibility/HTML_features_for_accessibility": { - "modified": "2020-07-16T22:35:51.146Z", - "contributors": ["chrisdavidmills", "Tigt", "kscarfone", "shubhraj"] - }, - "Learn/Common_questions/Design_and_accessibility/Thinking_before_coding": { - "modified": "2020-07-16T22:35:33.950Z", + "Learn_web_development/Core/Scripting/Functions": { + "modified": "2020-09-29T10:01:24.142Z", "contributors": [ - "maishakins", - "jamesdhurd", + "bhushangoel", + "JohnnyMu-Cn", "chrisdavidmills", - "surigangula", - "SphinxKnight", + "ahmaazouzi", + "gerfolder", + "choudh70", + "tayyabalishan", + "cadorej", + "karlhorky", + "loretta-arineva", + "mariusmucenicu", + "riyaz", + "dan-nix", + "MachineShot", + "thenoelman", + "redrambles", + "jruota", + "stephaniehobson", + "FishinginaSombrero8", + "gabiaad", + "Anonymous", + "GKilyar", + "stockcj", + "nmve", "Jeremie", - "Andrew_Pfeiffer", - "teoli" + "Cameron-Riecan", + "husain100b", + "fscholz" ] }, - "Learn/Common_questions/Design_and_accessibility/What_is_accessibility": { - "modified": "2020-07-16T22:35:46.668Z", + "Learn_web_development/Core/Scripting/Image_gallery": { + "modified": "2020-07-31T18:38:47.870Z", "contributors": [ + "Rafael_Green", "chrisdavidmills", - "Jeremie", - "Andrew_Pfeiffer", - "notabene" + "jswisher", + "csarami", + "jxhdev", + "jyjz2008", + "Jeremie" ] }, - "Learn/Common_questions/Tools_and_setup/Available_text_editors": { - "modified": "2020-09-11T09:55:13.639Z", + "Learn_web_development/Core/Scripting/JSON": { + "modified": "2020-10-31T11:57:03.706Z", "contributors": [ - "callpri", - "GCCSheep", - "blueblots", - "iigmir", - "rashmimalpande", + "randycasburn", "chrisdavidmills", - "funnyChinese", - "SphinxKnight", + "jswisher", + "mariusmucenicu", + "thebearingedge", + "bripmccann", + "shilili", + "thekosiguy", + "TasosPoursaitides", + "dvsgnr", + "stephaniehobson", + "torazaburo", + "DipperP", + "qdirks", + "systematis", + "mememachine666", + "nmve", "Jeremie", - "Andrew_Pfeiffer", - "fmarier" + "fscholz" ] }, - "Learn/Common_questions/Tools_and_setup/Checking_that_your_web_site_is_working_properly": { - "modified": "2020-07-16T22:35:49.891Z", + "Learn_web_development/Core/Scripting/Loops": { + "modified": "2020-09-15T14:47:05.302Z", "contributors": [ + "theRealJennie", + "SphinxKnight", + "Rafael_Green", + "mrmowji", "chrisdavidmills", - "Andrew_Pfeiffer", + "The-UCS-Variable", + "sideshowbarker", + "hhimanshu", + "naser-baig", + "tayyabalishan", + "muhammadghazali", + "loretta-arineva", + "mariusmucenicu", + "walonge", + "eremis101", + "keshav1245", + "4EPTAKA", + "Erramyne", + "li3097", + "sumnercommajohn", + "thenoelman", + "csarami", + "SebastianMaciel", + "RundongZou", + "FloraFauna", + "stephaniehobson", + "GowthamPrakaash", + "JackZL", + "BrunkBeard", + "nmve", "Jeremie", - "hbloomer", - "notabene" + "BaderSur", + "fscholz" ] }, - "Learn/Common_questions/Tools_and_setup/How_do_you_host_your_website_on_Google_App_Engine": { - "modified": "2020-07-16T22:35:52.276Z", - "contributors": ["Mori", "anton-mladenov", "4a-j"] - }, - "Learn/Common_questions/Tools_and_setup/How_much_does_it_cost": { - "modified": "2020-07-16T22:35:45.160Z", + "Learn_web_development/Core/Scripting/Math": { + "modified": "2020-07-16T22:30:23.656Z", "contributors": [ + "mrmowji", + "asavageiv", "A.Faturechi", "chrisdavidmills", - "zzhhbyt1", - "jdblischak", - "Gordon-Bleu", - "1pankajmehra1", - "surigangula", - "kamleshrao", + "choudh70", + "tayyabalishan", + "kruschk", "jswisher", - "david_ross", - "ggarrickk", - "AdityaPareek", - "martinmcbride", + "cinephile85", + "amitch38", + "alepsys", + "vitaliyterziev", + "caraya", + "Uemmra3", + "bripmccann", + "dlwagner", + "stephaniehobson", + "Saabbir", + "gabiaad", + "BadTudou", + "hadleyel", + "FIJN", + "hungvt0301", + "vatz88", + "kiley0", + "nmve", + "brendenseidel", "Jeremie", - "Andrew_Pfeiffer", - "notabene" + "BaderSur", + "sngv", + "Sheppy", + "Sebastianz" ] }, - "Learn/Common_questions/Tools_and_setup/Upload_files_to_a_web_server": { - "modified": "2020-10-02T01:23:10.799Z", + "Learn_web_development/Core/Scripting/Network_requests": { + "modified": "2020-09-12T22:58:21.536Z", "contributors": [ - "hamishwillee", - "GCCSheep", - "Sturmtiger", - "amitananddotxyz", + "JohnnyMu-Cn", + "wlt", + "timandes", "chrisdavidmills", + "joanvalis", + "thekosiguy", + "sideshowbarker", + "ezrinjaz", + "aboagyed", + "smoothie1998", + "stepharr", + "JoshApos", + "dlwagner", + "stephaniehobson", + "kriminals", "SphinxKnight", - "MandyuTOJ", - "xfq", - "Jett", - "Jeremie", - "Andrew_Pfeiffer", - "notabene", - "RufusCSharma", - "rhyne24" + "li-shasha", + "fireattack", + "marcusgenrich", + "Sheppy" ] }, - "Learn/Common_questions/Tools_and_setup/Using_GitHub_pages": { - "modified": "2020-07-16T22:35:51.402Z", - "contributors": ["chrisdavidmills", "junBryl", "Mori"] - }, - "Learn/Common_questions/Tools_and_setup/What_are_browser_developer_tools": { - "modified": "2020-07-16T22:35:47.122Z", + "Learn_web_development/Core/Scripting/Object_basics": { + "modified": "2020-07-16T22:31:55.445Z", "contributors": [ - "avivmu", - "SphinxKnight", - "HappyFeelMore", "chrisdavidmills", - "walkerbrown", - "danpoynor", - "irenesmith", - "vorian", - "ifilin", + "tayyabalishan", + "jswisher", + "FishinginaSombrero8", + "nhsz", + "gumbol", + "rayrojas", + "bripmccann", + "Battlesquid", + "Abhro", + "FeruzOripov", + "snakecase", + "vcastrejont", + "muhammadghazali", + "MarckK", + "RockyAZ", + "rajasrijanakiraman", + "stephaniehobson", + "JonathanPool", + "systematis", + "dsujeeun", + "nmve", + "BaderSur", "Jeremie", - "Andrew_Pfeiffer", - "chrisdavidmills-github" + "fscholz" ] }, - "Learn/Common_questions/Tools_and_setup/What_software_do_I_need": { - "modified": "2020-11-24T08:00:20.552Z", + "Learn_web_development/Core/Scripting/Return_values": { + "modified": "2020-08-19T08:02:22.451Z", "contributors": [ - "mmaimma", - "hamishwillee", + "wlt", + "Rafael_Green", "chrisdavidmills", - "ikabia078", - "Rafasu", - "ptrpl4", - "himanshuxd", - "riceh3", - "ashwingadhave", - "amitananddotxyz", - "mfuji09", - "maishakins", - "fac42", - "adamjimenez", - "christianbueno1", - "DerAppelt", - "bhanubais", - "MaiDoan", - "SphinxKnight", - "thalapaneni", + "xuchunyang", + "ppusher", + "feeko", + "abbasalamin12", + "choudh70", + "tayyabalishan", + "muhammadghazali", + "Zearin_Galaurum", + "loretta-arineva", + "anton-mladenov", + "stephaniehobson", + "nmve", + "rteliczan", "Jeremie", - "Andrew_Pfeiffer", - "kklein" - ] - }, - "Learn/Common_questions/Tools_and_setup/set_up_a_local_testing_server": { - "modified": "2020-07-16T22:35:52.628Z", - "contributors": [ - "chrisdavidmills", - "bhushan_mdn", - "Aviatorpaal", - "yunchispk", - "ckashby", - "diegoza", - "rax02", - "mmhyamin", - "pascalchevrel", - "RealTheOne", - "zixuan75", - "suterj", - "jaikathuria", - "jgathogo", - "Mateen" + "fscholz" ] }, - "Learn/Common_questions/Web_mechanics/How_does_the_Internet_work": { - "modified": "2020-07-16T22:35:35.495Z", + "Learn_web_development/Core/Scripting/Silly_story_generator": { + "modified": "2020-07-16T22:30:59.670Z", "contributors": [ - "MSabry809", + "neuroptera", "chrisdavidmills", - "codewilling", - "1653099", - "imba-tjd", - "SphinxKnight", - "Tan_", - "kjerinic", - "alattalatta", - "wattydev", - "diogeneshamilton", - "Jeremie", - "Andrew_Pfeiffer", - "kscarfone" + "nsangwan", + "rendner", + "csarami", + "2alin", + "jswisher", + "ctroupin", + "keshavmahajan", + "pranay2063", + "MrMaxMeranda", + "Jeremie" ] }, - "Learn/Common_questions/Web_mechanics/Pages_sites_servers_and_search_engines": { - "modified": "2020-07-16T22:35:39.329Z", + "Learn_web_development/Core/Scripting/Strings": { + "modified": "2020-07-16T22:30:38.291Z", "contributors": [ - "lghiggino", - "mfuji09", - "mammothb", - "Nucleomante", - "Patricio_Raschetti", + "chinmaykunkikar", "chrisdavidmills", - "Gitthuma", - "bminard", - "haiku11000", - "agnelvishal", - "Gordon-Bleu", + "tayyabalishan", + "kruschk", "jswisher", - "AVRILALEJANDRO", - "vikhyat", - "ladyNinja86", - "dagolinuxoid", - "Sheppy", - "xfq", + "alepsys", + "eremis101", + "gerganzh", + "grumBit", + "RafeyIqbalRahman", + "sahilwasan000", + "hello-ajayrawat", + "bripmccann", + "rileym7", + "stephaniehobson", + "hadleyel", + "shoelaces", "Jeremie", - "Andrew_Pfeiffer" + "Sebastianz", + "fscholz" ] }, - "Learn/Common_questions/Web_mechanics/What_are_hyperlinks": { - "modified": "2020-07-16T22:35:42.757Z", + "Learn_web_development/Core/Scripting/Test_your_skills:_Arrays": { + "modified": "2020-07-16T22:31:05.831Z", + "contributors": ["vgiffin", "chrisdavidmills"] + }, + "Learn_web_development/Core/Scripting/Test_your_skills:_Conditionals": { + "modified": "2020-07-16T22:31:45.710Z", + "contributors": ["jpfkd", "jmliu", "chrisdavidmills"] + }, + "Learn_web_development/Core/Scripting/Test_your_skills:_Events": { + "modified": "2020-07-16T22:31:46.881Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Core/Scripting/Test_your_skills:_Functions": { + "modified": "2020-07-16T22:31:46.557Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Core/Scripting/Test_your_skills:_JSON": { + "modified": "2020-07-16T22:32:38.003Z", + "contributors": ["chrisdavidmills", "blueblots"] + }, + "Learn_web_development/Core/Scripting/Test_your_skills:_Loops": { + "modified": "2020-07-16T22:31:46.034Z", + "contributors": ["neuroptera", "chrisdavidmills"] + }, + "Learn_web_development/Core/Scripting/Test_your_skills:_Math": { + "modified": "2020-07-31T08:15:10.749Z", + "contributors": ["chrisdavidmills", "AJMcDee"] + }, + "Learn_web_development/Core/Scripting/Test_your_skills:_Object_basics": { + "modified": "2020-12-11T06:18:00.445Z", + "contributors": ["chrisdavidmills", "iJacKP", "neuroptera"] + }, + "Learn_web_development/Core/Scripting/Test_your_skills:_Strings": { + "modified": "2020-07-16T22:31:05.493Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Core/Scripting/Test_your_skills:_variables": { + "modified": "2020-07-16T22:31:04.800Z", + "contributors": ["neuroptera", "chrisdavidmills"] + }, + "Learn_web_development/Core/Scripting/Useful_string_methods": { + "modified": "2020-10-19T12:57:52.630Z", "contributors": [ - "Patricio_Raschetti", - "maishakins", "chrisdavidmills", - "vicvarfon", - "bhanubais", - "hoosteeno", - "samlaf", + "jpfkd", + "epirnat", + "A.Faturechi", + "choudh70", + "tayyabalishan", + "jswisher", + "alepsys", + "Asimov4", + "v8sagar", + "bkucey", + "bripmccann", + "stephaniehobson", + "hadleyel", + "RobWheadon", + "sushobhana", + "nmve", + "brenseid", "Jeremie", - "jsx", - "ronakkhunt", - "Andrew_Pfeiffer", - "teoli", - "tseamans" + "BaderSur", + "sngv", + "Sebastianz", + "BenCrab", + "fscholz" ] }, - "Learn/Common_questions/Web_mechanics/What_is_a_URL": { - "modified": "2020-07-16T22:35:28.894Z", + "Learn_web_development/Core/Scripting/Variables": { + "modified": "2020-09-28T12:52:31.401Z", "contributors": [ + "mohammad92asghari", "chrisdavidmills", - "mfuji09", - "DallasBelt", - "Sheppy", - "tsaddique389", - "AbidRiaz", + "Nachec", + "choudh70", + "tayyabalishan", + "jswisher", + "JawnMarc", + "inikolaesku", + "cinephile85", + "alepsys", "SphinxKnight", - "yzfdjzwl", - "bhanubais", + "blimp", + "msobanjo", + "TasosPoursaitides", + "RafeyIqbalRahman", + "aswaniprakash", + "felipe-lee", + "sxnaprkhr", + "alexandr-osprey", + "Uemmra3", + "martian2049", + "bripmccann", + "jruota", + "stephaniehobson", + "rmdobservations", + "shoelaces", + "stockcj", "Jeremie", - "jsx", - "ronakkhunt", - "Andrew_Pfeiffer", - "amygori", - "teoli" + "razouckt", + "Sebastianz", + "Sheppy", + "salman-shah" ] }, - "Learn/Common_questions/Web_mechanics/What_is_a_domain_name": { - "modified": "2020-12-11T01:30:52.383Z", + "Learn_web_development/Core/Scripting/What_is_JavaScript": { + "modified": "2020-12-05T16:30:59.604Z", "contributors": [ - "darby", - "ronal.candia11", - "ezzep66", - "NateEag", + "mfuji09", + "dcompcoder", + "jpfkd", + "rajatsan", "chrisdavidmills", - "amitananddotxyz", - "jsx", - "gavenkoa", - "elcamlost", - "davidwhy", - "SphinxKnight", + "ibnlanre", + "ckashby", + "tayyabalishan", + "JawnMarc", + "inikolaesku", + "Sheppy", + "nitramrelpmur", + "eremis101", + "agnelvishal", + "rachelcarmena", + "jk777", + "massood", + "riceh3", + "KirankumarAmbati", + "caraya", + "nceresole", + "MelissaNg", + "kevinlmadison", + "hackernewslibrary", + "MadEmperorYuri", + "Wenfang_Du", + "Anonymous", + "alanfeld", + "championshuttler", + "bripmccann", + "baustinfry", + "sumankisku", + "JonathanBrownCFA", + "1rjun", + "stephaniehobson", + "morfioce", + "whiteheat2019", + "hadleyel", + "SarahSakura1990", + "rmateus", + "nmve", + "OrthoLearner", "Jeremie", - "ronakkhunt", - "Andrew_Pfeiffer", - "notabene" + "ObroAhmed", + "hamishwillee", + "Sebastianz" ] }, - "Learn/Common_questions/Web_mechanics/What_is_a_web_server": { - "modified": "2020-11-21T18:13:05.008Z", + "Learn_web_development/Core/Scripting/What_went_wrong": { + "modified": "2020-09-04T06:06:17.140Z", "contributors": [ - "Havardox", - "ohaver", - "hussamkhatib", - "gbui", - "mfuji09", - "fiver22", "chrisdavidmills", - "ashishcodes", - "surigangula", - "xclusivesaurav", - "iigmir", - "ggarrickk", - "StarkBjorn", - "thanhvk", - "hierror", + "jswisher", + "manideep39", + "tayyabalishan", + "inikolaesku", + "Alek2077", + "wbreakell", + "redrambles", + "bripmccann", + "MiaD", + "stephaniehobson", + "kewinsousa", + "hadleyel", + "nmaksymchuk", + "Tony-Thomas", + "rsidorov", + "stockcj", + "niklasholm", + "nmve", + "DeboraG", + "BrianCsection", "Jeremie", - "Andrew_Pfeiffer", - "sboroda", - "klez" + "Sebastianz" ] }, - "Learn/Forms": { - "modified": "2020-09-07T06:45:29.152Z", + "Learn_web_development/Core/Structuring_content": { + "modified": "2020-12-03T08:31:03.862Z", "contributors": [ "chrisdavidmills", - "ShubhamShukla", - "SphinxKnight", - "iwo12", - "wbamberg", - "estelle", + "vlnsubmit", + "onurbasturk", + "sideshowbarker", + "animeansiklopedisi", + "CodeDotJS", + "tayyabalishan", + "DevForrestLyu", + "kakwanisiddharth", + "shilili", + "boxa6", + "weisan0616", + "Koavf", + "Beatheat", + "PanayiotisPaschalides", + "JuanRomoDev", + "mjibrower", + "federico71", + "Avinash028", "Jeffrey_Yang", - "wilhelmtell", - "Porkepix", - "ttamminen", - "ajayashuba", - "Bandaged", - "Markus Prokott", - "sjmiles", - "ishita", - "Fredchat", - "sailplaneTW", - "SteveFaulkner", - "kscarfone", - "Sheppy", - "teoli", - "haboqueferus", - "Jeremie" + "Alihoday", + "hadleyel", + "jk777", + "shashishekhar333", + "LostLucidity" ] }, - "Learn/Forms/Advanced_form_styling": { - "modified": "2020-12-09T16:39:42.715Z", + "Learn_web_development/Core/Structuring_content/Advanced_text_features": { + "modified": "2020-08-29T01:56:34.668Z", "contributors": [ + "SnakeWhisperer", + "ZO14", + "vodov", + "mrmurtazaabbasi", + "vgiffin", + "avivmu", + "onurbasturk", "chrisdavidmills", - "rpxs", - "edchasw", - "Uemmra3", - "Lisadot", - "A.Faturechi", - "sjud", - "estelle", - "Aubrays", - "Tigt", - "ferrysdayoff", - "missmatsuko", - "soonoo", - "coderjerk", + "tayyabalishan", + "choudh70", + "SphinxKnight", + "famees", + "markwood87", + "Yachi_Huang", + "Jesssie", + "imi-tating", + "suterj", "stephaniehobson", - "david_ross", - "toraritte", - "samford", - "Jeremie", - "kscarfone", - "teoli", - "FredB", - "notabene", - "Brettz9", - "Sheppy" + "Nintendao", + "agnelvishal", + "rarevans", + "vkweb", + "wilhelmtell", + "flash4syth", + "GowthamPrakaash", + "Wispring", + "CatalinMengheris", + "waldr", + "robinfromsps", + "AmazingJamesLee", + "goto.prototype", + "amins", + "richardzacur" ] }, - "Learn/Forms/Basic_native_form_controls": { - "modified": "2020-10-25T00:26:19.500Z", + "Learn_web_development/Core/Structuring_content/Basic_HTML_syntax": { + "modified": "2020-12-05T12:24:44.561Z", "contributors": [ - "Harold-Gao", - "amikalperkins", + "Seeeven7", "chrisdavidmills", - "A.Faturechi", - "estelle", + "philou", + "alurodriguez", + "gdsimoes", + "sxnaprkhr", + "ohaver", + "RogueDynamite", + "lucida959595", + "grzim", "sideshowbarker", - "zubaer54", + "girlref", + "abbasalamin12", "tayyabalishan", - "choudh70", - "cybmdm", - "amIsmael", - "853419196", + "SphinxKnight", + "LittleMissS", + "MrPodu", + "exercism-1", + "tywmick", + "JacobRuigrok", + "thanhvt1984", + "imba-tjd", + "bminard", + "Chomchaum", + "mat-bi", + "madmadi", + "Sunit41557077", + "sdkiko", + "flow2k", + "irenesmith", + "formatkaka", + "bripmccann", + "sasigit7", "Sheppy", - "Ko.Kyaw.Zin.Htet", - "Tigt", - "juandesouza", + "Avinash028", + "SelenIT", + "MexieAndCo", + "hamasaki", + "suterj", + "Manisha0605", "stephaniehobson", - "Jeffrey_Yang", - "toraritte", - "Ajedi32", - "Jeremie", - "aksht", - "kscarfone", - "lemgrb" + "agnelvishal", + "MiltonAkash", + "KadirTopal", + "ameridan", + "mondaya", + "wilhelmtell", + "hadleyel", + "psylone", + "jorgeclesio", + "abdusalah", + "Bryzzle", + "Cameron-Riecan", + "jswisher", + "KevinDonnelly", + "richardzacur", + "mauney" ] }, - "Learn/Forms/Form_validation": { - "modified": "2020-12-12T20:31:48.908Z", + "Learn_web_development/Core/Structuring_content/Creating_links": { + "modified": "2020-12-02T15:56:05.660Z", "contributors": [ - "bershanskiy", - "scottBowles", "chrisdavidmills", - "tbolt", - "A.Faturechi", - "Halochkin", - "83C10", - "NikolayPe", - "Brettz9", - "SphinxKnight", - "kyonlee", - "estelle", - "tayyabalishan", + "asad_mozilla", + "codejayant", + "gdsimoes", + "techdocswriter", + "josh.591536", + "onurbasturk", + "sideshowbarker", + "deepaksenguttuvan", + "santimirandarp", "choudh70", - "perfmattersconf", - "SabineEmden", - "lbraun", - "ychouloute", - "alacritas", - "metamas", - "escattone", - "richajak", - "sidd", - "RachelM", - "jpaugh", - "shilili", - "agrimarcal", - "Sal56", - "jswisher", - "Marvinside", - "libmw", + "Elched", + "eremis101", + "noorfathima11", + "MNizam0802", + "Jozefi87", "mfuji09", - "RafeyIqbalRahman", - "mnoorenberghe", - "futureworktechno", - "futuretechnologies01", - "sideshowbarker", - "FutureWork08", - "thenoelman", - "csarami", - "mmeinzer", - "tjmcewan", - "chafic", - "zsogolow", - "zorrobei", - "BryanL", - "Sajag", + "mbuc", + "DrewGeisler", "stephaniehobson", - "stellartux", - "sparecycles", - "lobsterhands", - "manikos", - "sabrinaluo", - "RobWheadon", - "denilsonsa", - "xmbhasin", - "ggyismjxd", - "wido", - "tkrotoff", - "Chandan-97", - "eanakashima", - "programmer5000", - "itsrahulpandey", - "andreaswachowski", - "enderandpeter", - "jrussia", - "cezaraugusto", - "mmk", - "Sheppy", - "PushpitaPikuDey", - "Tuxosaurus", - "gto1", - "Jeremie", - "dalex", - "kscarfone", - "dbuch", - "jumpnett", - "Havvy" - ] - }, - "Learn/Forms/HTML5_input_types": { - "modified": "2020-10-04T09:16:43.234Z", - "contributors": [ - "JennyDC", - "amikalperkins", - "chrisdavidmills", - "arjenlgill", - "blueblots", - "panpy-web", - "A.Faturechi", - "joyjade", - "estelle", - "kyonlee", - "zubaer54", - "Zearin_Galaurum" + "bgrayland", + "Hiroshivam", + "vkweb", + "potmpark", + "scottaohara", + "svmartin", + "rebelstatus", + "NurudeenPopoola", + "richardzacur" ] }, - "Learn/Forms/HTML_forms_in_legacy_browsers": { - "modified": "2020-07-16T22:22:02.938Z", + "Learn_web_development/Core/Structuring_content/Debugging_HTML": { + "modified": "2020-08-09T17:31:16.592Z", "contributors": [ + "anewton", + "avivmu", "chrisdavidmills", - "estelle", - "ferrysdayoff", - "soonoo", + "tayyabalishan", + "sideshowbarker", + "frezier", "stephaniehobson", - "nunu10000", - "Jeremie", - "kscarfone", - "teoli", - "Sheppy", - "jswisher" + "stefanocbl", + "johnjago", + "mustak", + "breno785au", + "richardzacur", + "sockofleas" ] }, - "Learn/Forms/How_to_build_custom_form_controls": { - "modified": "2020-09-17T01:08:40.244Z", + "Learn_web_development/Core/Structuring_content/General_embedding_technologies": { + "modified": "2020-10-19T05:59:20.512Z", "contributors": [ - "ralaplines1988", - "prosciutto1", - "vgiffin", - "JoshApos", "chrisdavidmills", - "estelle", - "trieudh58", - "lonelywhisper", - "yiosh", + "gdsimoes", + "Sichen-Wang", + "TheMageKing", + "choudh70", + "Elched", + "darby", + "eremis101", + "Wind1808", + "RafeyIqbalRahman", + "Jesssie", + "pradeeprajr93", + "juandesouza", "stephaniehobson", - "jhggins", - "meshulam", - "Sheppy", - "Jeremie", - "kscarfone", - "notabene", - "BYK" + "NilSocket", + "flash4syth", + "BaderSur", + "richardzacur" ] }, - "Learn/Forms/How_to_build_custom_form_controls/Example_1": { - "modified": "2020-07-16T22:21:58.881Z", + "Learn_web_development/Core/Structuring_content/HTML_images": { + "modified": "2020-11-06T07:13:32.741Z", "contributors": [ "chrisdavidmills", - "estelle", - "kscarfone", - "ethertank", + "philou", + "atd30", + "abbasalamin12", + "RicardsVeveris", + "choudh70", + "LeonFrempong", + "Mahdi_Karimi_Asl", + "sudipbhandari126", "Sheppy", - "Jeremie" + "cinephile85", + "eremis101", + "MNizam0802", + "oyenirat", + "adyavanapalli", + "bripmccann", + "sideshowbarker", + "Ajimi", + "stephaniehobson", + "Potch", + "andrealaw", + "tedmetaltns", + "david_ross", + "Looserof7", + "jamalss", + "mishkadoma", + "jswisher", + "rishianand", + "richardzacur" ] }, - "Learn/Forms/How_to_build_custom_form_controls/Example_2": { - "modified": "2020-07-16T22:21:59.274Z", - "contributors": ["chrisdavidmills", "Sheppy", "Jeremie"] + "Learn_web_development/Core/Structuring_content/HTML_images/Test_your_skills:_HTML_images": { + "modified": "2020-10-18T19:47:17.929Z", + "contributors": ["gdsimoes", "chrisdavidmills"] }, - "Learn/Forms/How_to_build_custom_form_controls/Example_3": { - "modified": "2020-07-16T22:21:59.617Z", + "Learn_web_development/Core/Structuring_content/HTML_table_basics": { + "modified": "2020-07-16T22:25:17.858Z", "contributors": [ + "avivmu", "chrisdavidmills", - "estelle", + "radiocane", + "Sichen-Wang", + "choudh70", + "tayyabalishan", + "santiago-rodrig", + "Octopinky", + "ratbeard", + "irenesmith", "Sheppy", - "Jeremie", - "lmorchard" + "nrebhun", + "surigangula", + "stephaniehobson", + "yanlee26", + "qdirks", + "Sebastianz", + "mientje" ] }, - "Learn/Forms/How_to_build_custom_form_controls/Example_4": { - "modified": "2020-07-16T22:21:59.939Z", + "Learn_web_development/Core/Structuring_content/HTML_video_and_audio": { + "modified": "2020-11-20T14:06:53.297Z", "contributors": [ + "philou", "chrisdavidmills", - "estelle", - "abt8601", + "mohammad92asghari", + "pabdani", + "avivmu", + "atd30", + "295805950zhang", + "Sichen-Wang", + "valgrimm", + "choudh70", + "mukhtar-github", + "pzrq", + "LeonFrempong", + "darby", + "kerusasu", "Sheppy", - "Jeremie" + "Elched", + "6truvian", + "sideshowbarker", + "thet002", + "eremis101", + "sbkrish", + "christopherwilson1", + "Devendra0110", + "imi-tating", + "stephaniehobson", + "adelyoussif", + "vkweb", + "ferjm", + "fachalo1996", + "jk777", + "jayantsarkar", + "sashaburchuk", + "waldr", + "rishianand", + "goto.prototype", + "richardzacur" ] }, - "Learn/Forms/How_to_build_custom_form_controls/Example_5": { - "modified": "2020-07-16T22:22:00.262Z", - "contributors": ["chrisdavidmills", "estelle", "Sheppy", "Jeremie"] + "Learn_web_development/Core/Structuring_content/HTML_video_and_audio/Test_your_skills:_Multimedia_and_embedding": { + "modified": "2020-11-20T14:20:14.413Z", + "contributors": ["philou", "gdsimoes", "chrisdavidmills"] }, - "Learn/Forms/How_to_structure_a_web_form": { - "modified": "2020-07-16T22:21:09.116Z", + "Learn_web_development/Core/Structuring_content/Headings_and_paragraphs": { + "modified": "2020-10-29T23:24:18.960Z", "contributors": [ + "philou", "chrisdavidmills", - "A.Faturechi", - "andrewbluepiano", - "estelle", - "perfmattersconf", - "RicardsVeveris", - "tayyabalishan", - "willi-berger", - "groprog", - "UnorthodoxThing", - "richajak", - "Sal56", - "Devendra0110", - "sideshowbarker", - "Milind-Gawande", - "surigangula", - "Pav_ka", - "sgnl", - "BunnyWong", - "jaredef", - "Tunisiano32", + "theRealJennie", + "trebuchet", + "emckean", + "onurbasturk", + "choudh70", + "cadorej", + "WindLo", + "eremis101", + "xubres", + "bminard", + "Chomchaum", + "quixx", + "Manisha0605", + "WikiMarc", "stephaniehobson", - "tyreer", - "tedmetaltns", - "davidalejandro", - "Lehakos", - "brandonrodriguez", + "cknapp92", "mientje", - "JonathanLake", - "freekngdom", - "ivaturi", - "rolfedh", + "Wispring", + "sideshowbarker", + "phorgan1", + "abdusalah", + "NurudeenPopoola", + "monooran1", "PushpitaPikuDey", - "marcos-abreu", - "Qombella", - "susanBuck", - "Sheppy", - "rylan", - "andrew-luhring", - "LayZeeDK", - "xfq", - "Jeremie", - "Serenity", - "kscarfone", - "FredB", - "notabene" + "rolfedh" ] }, - "Learn/Forms/How_to_structure_a_web_form/Example": { - "modified": "2020-07-16T22:21:16.974Z", - "contributors": ["chrisdavidmills", "rashmimalpande", "Sheppy", "Jeremie"] + "Learn_web_development/Core/Structuring_content/Including_vector_graphics_in_HTML": { + "modified": "2020-10-19T00:06:33.919Z", + "contributors": [ + "gdsimoes", + "ralaplines1988", + "dd-pardal", + "chrisdavidmills", + "choudh70", + "tayyabalishan", + "Zectbumo", + "danialtaherifar", + "imba-tjd", + "mfuji09", + "bdeloeste", + "deacon", + "agnelvishal", + "stephaniehobson", + "potmpark", + "richardzacur", + "Andrew_Pfeiffer", + "hbloomer" + ] }, - "Learn/Forms/Other_form_controls": { - "modified": "2020-07-16T22:22:07.520Z", + "Learn_web_development/Core/Structuring_content/Marking_up_a_letter": { + "modified": "2020-07-16T22:23:10.729Z", "contributors": [ "chrisdavidmills", - "riturajshakti", - "A.Faturechi", - "w13rdo", - "estelle" + "avivmu", + "ohaver", + "tayyabalishan", + "sideshowbarker", + "r_arpeet82", + "fazl", + "soppa91", + "bripmccann", + "jswisher", + "jk777", + "mishkadoma" ] }, - "Learn/Forms/Property_compatibility_table_for_form_controls": { - "modified": "2020-07-16T22:21:38.501Z", + "Learn_web_development/Core/Structuring_content/Mozilla_splash_page": { + "modified": "2020-07-16T22:25:05.240Z", "contributors": [ - "jasjenand", "chrisdavidmills", - "estelle", - "kruschk", - "Dralyab", - "stephaniehobson", - "mfluehr", - "Jeremie", - "kscarfone", - "james_oh", - "Sheppy" + "FoxDie12x", + "MNizam0802", + "jswisher", + "goto.prototype", + "richardzacur" ] }, - "Learn/Forms/Sending_and_retrieving_form_data": { - "modified": "2020-09-13T14:02:27.104Z", + "Learn_web_development/Core/Structuring_content/Planet_data_table": { + "modified": "2020-07-16T22:25:28.525Z", "contributors": [ "chrisdavidmills", - "A.Faturechi", - "estelle", "tayyabalishan", - "choudh70", - "karlhorky", - "sideshowbarker", - "Dzmitry_K", - "vriojtg", - "massood", - "lvzndr", - "gabcs07", - "guacamoli", - "mfuji09", - "surigangula", - "Sheppy", - "juandesouza", - "calrrox", - "stephaniehobson", - "SphinxKnight", - "bartolocarrasco", - "MegaMindAT", - "douglas-j-bothwell", - "Markus Prokott", - "wrannaman", - "etmoore", - "AestheticArson", - "sekularac", - "Lexas", - "iammattmurphy", - "Jeremie", - "kscarfone", - "ben010783", - "ckeschnat", - "gtwhite" + "jswisher", + "Sebastianz" ] }, - "Learn/Forms/Sending_forms_through_JavaScript": { - "modified": "2020-07-21T05:40:07.618Z", + "Learn_web_development/Core/Structuring_content/Structuring_a_page_of_content": { + "modified": "2020-07-16T22:24:17.251Z", "contributors": [ + "yolo.kimc", "chrisdavidmills", - "aelliott1485", - "estelle", "tayyabalishan", + "sideshowbarker", + "markwood87", + "jswisher", + "diveshuttam", + "SoftwareRVG", + "richardzacur" + ] + }, + "Learn_web_development/Core/Structuring_content/Structuring_documents": { + "modified": "2020-11-03T08:36:09.820Z", + "contributors": [ + "chrisdavidmills", + "philou", + "onurbasturk", + "arvin_fr", + "jzunigacoayla", "choudh70", - "virtualmix", - "peterschussheim", - "ferrysdayoff", - "l1n", - "Sheppy", + "tayyabalishan", + "sharma86hub", + "taoranz", + "SphinxKnight", + "famees", + "Jerami76", + "loretta-arineva", + "eremis101", + "bminard", + "c-herrewijn", + "jswisher", + "surigangula", + "ajhsu", + "bripmccann", + "jeremiah-shore", "stephaniehobson", - "vSanjo", - "Tigt", - "andreiepure", - "jimmywarting", - "teoli", - "uddin", - "RufusCSharma", - "afzaal_ahmad_zeeshan", - "dhodder", - "DarkNexus", - "kohei.yoshino", - "Jeremie", - "kscarfone" + "potmpark", + "kevinAlbs", + "kalch", + "geraldchan", + "jk777", + "Jedeu", + "bmwadforth", + "aquaplanet", + "richardzacur", + "sockofleas", + "rmauge" ] }, - "Learn/Forms/Styling_web_forms": { - "modified": "2020-07-16T22:21:30.372Z", + "Learn_web_development/Core/Structuring_content/Table_accessibility": { + "modified": "2020-07-16T22:25:24.257Z", "contributors": [ + "tayyabalishan", "chrisdavidmills", - "Lisadot", - "A.Faturechi", - "SKempin", - "Dyomba", - "Arudarin", - "frontendlane", - "Rob_Belics", - "estelle", - "wbamberg", - "ferrysdayoff", + "santiago-rodrig", + "darman12", + "irajsuhail", + "haarabi", + "surigangula", "stephaniehobson", - "clambodile", - "david_ross", - "longdoggo", - "CarissaLynn73", - "l1n", - "stuart", - "Jeremie", - "kscarfone", - "teoli", "Sheppy", - "notabene" + "ImtiazeA", + "serratusmagnus", + "pranay2063", + "Sebastianz", + "npusr" ] }, - "Learn/Forms/Test_your_skills:_Advanced_styling": { - "modified": "2020-07-16T22:22:12.770Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/Forms/Test_your_skills:_Basic_controls": { - "modified": "2020-07-16T22:22:10.786Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/Forms/Test_your_skills:_Form_structure": { - "modified": "2020-07-16T22:22:10.470Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/Forms/Test_your_skills:_Form_validation": { - "modified": "2020-07-16T22:22:13.092Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/Forms/Test_your_skills:_HTML5_controls": { - "modified": "2020-07-16T22:22:11.117Z", - "contributors": ["chrisdavidmills"] + "Learn_web_development/Core/Structuring_content/Test_your_skills:_Advanced_HTML_text": { + "modified": "2020-08-29T02:34:36.621Z", + "contributors": ["SnakeWhisperer", "onurbasturk", "chrisdavidmills"] }, - "Learn/Forms/Test_your_skills:_Other_controls": { - "modified": "2020-07-16T22:22:11.804Z", - "contributors": ["chrisdavidmills"] + "Learn_web_development/Core/Structuring_content/Test_your_skills:_HTML_text_basics": { + "modified": "2020-08-27T05:38:52.761Z", + "contributors": ["SnakeWhisperer", "chrisdavidmills"] }, - "Learn/Forms/Test_your_skills:_Styling_basics": { - "modified": "2020-07-16T22:22:12.453Z", - "contributors": ["chrisdavidmills"] + "Learn_web_development/Core/Structuring_content/Test_your_skills:_Links": { + "modified": "2020-08-28T04:26:18.208Z", + "contributors": ["SnakeWhisperer", "chrisdavidmills", "onurbasturk"] }, - "Learn/Forms/UI_pseudo-classes": { - "modified": "2020-07-22T23:59:16.367Z", + "Learn_web_development/Core/Structuring_content/Webpage_metadata": { + "modified": "2020-09-28T22:06:13.983Z", "contributors": [ - "theBstar", + "boptilop", "chrisdavidmills", - "sjud", - "wbamberg", - "estelle" + "RogueDynamite", + "zlamma", + "arjenlgill", + "jasonsbarr", + "CrypterSr", + "choudh70", + "SphinxKnight", + "fazl", + "khendrikse", + "Calerid", + "Sheppy", + "peterschussheim", + "jecook", + "thenoelman", + "IMLERICH", + "rakeshkatti", + "jeremymouzin", + "stephaniehobson", + "prajwalkk", + "mertdemo", + "NilSocket", + "hadleyel", + "CarlosJose", + "sideshowbarker", + "Wispring", + "aculnaig", + "chibby0ne", + "Roboe", + "richardzacur" ] }, - "Learn/Forms/User_input_methods": { - "modified": "2020-07-22T12:38:46.565Z", + "Learn_web_development/Core/Styling_basics": { + "modified": "2020-10-27T21:16:26.666Z", "contributors": [ - "mfuji09", - "ericcastro", + "gdsimoes", "chrisdavidmills", - "KadirTopal", - "sprodrigues", - "MashKao", - "teoli", - "franciov" + "salutis", + "SphinxKnight", + "Hemiptera1" ] }, - "Learn/Forms/Your_first_form": { - "modified": "2020-11-15T12:17:48.584Z", + "Learn_web_development/Core/Styling_basics/Advanced_styling_effects": { + "modified": "2020-07-16T22:28:20.113Z", "contributors": [ - "keithecza", - "thedavedavies", - "codingcodymiller", - "A.Faturechi", + "mbrasseau", "chrisdavidmills", - "cybmdm", - "kyonlee", - "estelle", - "AndriiMaliuta", - "perfmattersconf", - "tayyabalishan", - "choudh70", - "Sphish", - "RafeyIqbalRahman", "agnelvishal", - "pete0phx", - "haarabi", - "dlwagner", - "PedroFischerDeveloper", - "calrrox", - "SphinxKnight", - "xioebi", + "PanayiotisPaschalides", + "juandesouza", "stephaniehobson", - "prateekvyas1996", - "Endyl", - "Samji", - "jmmarco", - "gene_wood", - "azureowl", - "indiesquidge", - "ish", - "jsx", - "tijani08", - "mbrennan", - "jswisher", - "MediaPub", - "fmdkdd", - "zekaras", - "Jeremie", - "kscarfone", - "cdelahousse", - "forest51690", - "ethertank", - "Sheppy", - "FredB", - "Hucheng", - "icyfenix" + "qdirks", + "y0u-s", + "kiriakosv", + "richardzacur", + "Sebastianz" ] }, - "Learn/Getting_started_with_the_web": { - "modified": "2020-12-07T11:57:48.782Z", + "Learn_web_development/Core/Styling_basics/Attribute_selectors": { + "modified": "2020-07-16T22:28:48.447Z", "contributors": [ - "SphinxKnight", - "mr.sithuaung", - "burakizmirli252", - "marismiglans8", - "jessica.kolek", "chrisdavidmills", - "SinEstres", - "pe.minuta.78", - "iamadityashekhar", - "Javi-21", - "K-D", - "gamma.mahdii", - "maeeel968", - "hakannakliyat", - "kmavrikakis", - "harpaljadon", - "PatrickDGarvey", - "johnsmith1554", - "kakwanisiddharth", - "kenj115188", - "shilili", - "burgess25", - "EvenC", - "mfuji09", - "james-rhodus", - "smoothie1998", - "fox-lucas", - "stevedav", - "SimDrifT", - "CodeDotJS", - "dartvaneri", - "Jenna59", - "Alihoday", - "Sibiraj-S", - "hadleyel", - "wh1msy", - "kaiarifin", - "Zh1hu1", - "Jom97", - "gleidiin", - "aquddos", - "Jeremie", - "jswisher", - "pheakvoin", - "jam1985", - "EnriquePabloBarreraVega", - "BychekRU", - "rpettit686", - "jsx", - "Trontin", - "LeBasti", - "arbatskiy", - "pravinbudharap", - "dileep.ch", - "Sheppy", - "Andrew_Pfeiffer", - "klez" + "SaquibAsghar", + "fazl", + "rachelandrew", + "83C10", + "mikemorr", + "RoyZhu" ] }, - "Learn/Getting_started_with_the_web/CSS_basics": { - "modified": "2020-11-20T01:08:35.890Z", + "Learn_web_development/Core/Styling_basics/Backgrounds_and_borders": { + "modified": "2020-07-16T22:29:07.190Z", "contributors": [ - "schalkneethling", "chrisdavidmills", - "thelovekesh", - "winst", - "dcompcoder", - "ohaver", - "ngaydainuocmat304", + "rolfedh", "Azzedine2020", - "LordZarano", - "RicardsVeveris", - "naser-baig", - "forrest.lyu.it", - "zzhhbyt1", - "rachelcarmena", - "ezrinjaz", - "edprince", - "bhuvy2", - "smoothie1998", - "oyenirat", - "jdblischak", - "jswisher", - "terevele", - "102", - "lui247", - "IMLERICH", - "ry0id", - "suterj", - "q3229270", - "MohamedSalah1998", - "hadleyel", - "thanhtran92", - "Looserof7", - "Jeremie", - "MightyBranch", - "SphinxKnight", - "jackarmley", - "odsantos", - "Andrew_Pfeiffer", - "xfq" + "haond10adp", + "rachelandrew", + "choudh70", + "xp44mm" ] }, - "Learn/Getting_started_with_the_web/Dealing_with_files": { - "modified": "2020-12-04T18:44:16.263Z", + "Learn_web_development/Core/Styling_basics/Basic_selectors": { + "modified": "2020-07-27T04:04:29.042Z", "contributors": [ - "Seeeven7", - "philou", - "xandora", - "adilalsalmi2013", - "irenesmith", - "riceh3", - "msobanjo", - "smoothie1998", "chrisdavidmills", - "dangvancuong", - "SphinxKnight", - "knows1", - "qadero", - "stephaniehobson", - "agnelvishal", - "afishop", - "hadleyel", - "Goldfish", - "shoelaces", - "Jeremie", - "ifilin", - "Ojas_A", - "Andrew_Pfeiffer", - "yokimbo", - "Sheppy", - "SueSmith" + "cattofiq", + "gerfolder", + "choudh70", + "xp44mm", + "sergberg5", + "rachelandrew", + "ExE-Boss" ] }, - "Learn/Getting_started_with_the_web/HTML_basics": { - "modified": "2020-11-13T05:59:27.045Z", + "Learn_web_development/Core/Styling_basics/Basic_selectors/Selectors_Tasks": { + "modified": "2020-11-10T09:07:22.974Z", "contributors": [ - "SphinxKnight", - "mpmadhubhashana8", + "Re9iNee", + "impossibleshadow", "chrisdavidmills", - "advancel", - "sideshowbarker", - "thelovekesh", - "dcompcoder", - "adatapost", - "donnal4", - "shilili", - "P1xt", - "a4anandsingh", - "bminard", - "Chomchaum", - "rachelcarmena", - "dwvisser", - "maria-rubina", - "thekosiguy", - "smoothie1998", + "HenningTimm", + "blueblots", "RafeyIqbalRahman", - "thoughtbyte", - "Sheppy", - "arai", - "DragMeToProgramming", - "moslyke", - "datdathcmutrans", - "suterj", - "rajasrijanakiraman", - "Quantzilla", - "q3229270", - "jswisher", - "explosive1111", - "Maruti-Ram", - "Sharoon_Francis", - "Mastermind9513", - "rishikant-sharma", - "hahaf313", - "jwhitlock", - "hadleyel", - "Tanvir-rahman", - "mishkadoma", - "Jeremie", - "Cameron-Riecan", - "klez", - "tcyyky", - "MightyBranch", - "Carmelina", - "manderton", - "jlin", - "karyse", - "NickPapayiannakis", - "odsantos", - "xfq", - "jsx" + "rachelandrew" ] }, - "Learn/Getting_started_with_the_web/How_the_Web_works": { - "modified": "2020-07-17T10:00:52.022Z", + "Learn_web_development/Core/Styling_basics/Basic_selectors/Type_Class_and_ID_Selectors": { + "modified": "2020-10-15T19:45:39.626Z", "contributors": [ - "黄晓生", + "impossibleshadow", + "ohaver", "chrisdavidmills", - "SphinxKnight", - "gepanther", - "jamesdhurd", - "ChaltinPagan", - "Ndikubwayo", - "prajwalkk", - "wilhelmtell", - "hadleyel", - "david_ross", - "AlexanderJohn", - "CommonSnowFlake", - "Jeremie", - "corderophilosophy", - "klez", - "marlon7", - "diogeneshamilton", - "xfq", - "Andrew_Pfeiffer" + "revanthn", + "cattofiq", + "mabouguerra", + "Saif-Shines", + "jpfkd", + "avry", + "fazl", + "xp44mm", + "jlbuckner", + "rachelandrew", + "ExE-Boss" ] }, - "Learn/Getting_started_with_the_web/Installing_basic_software": { - "modified": "2020-11-19T18:44:49.700Z", + "Learn_web_development/Core/Styling_basics/Box_model": { + "modified": "2020-12-02T16:00:00.171Z", "contributors": [ - "hughcrt", - "darby", + "Seeeven7", "chrisdavidmills", - "dd-pardal", - "darkwebster", - "rl2999", - "dineshram", - "SphinxKnight", - "PatrickDGarvey", - "Izzaldin", - "flexcapacitor", - "donnal4", - "robmuh", - "juanromoit", - "lol-russo", - "paszesoft", - "wi24rd", - "smoothie1998", - "bittualam.in", - "CSP-CODER", - "stevedav", - "rameezripon", - "CodeDotJS", - "Pichchayut", - "S-Dey", - "stephaniehobson", - "momdo", - "kubosho_", - "hadleyel", - "jk777", - "evaferreira", - "zizau_", - "Sheppy", - "saurabh95", - "KindRacoon", - "ownsourcing", - "alirobe", - "Jeremie", - "antoniogarcia78", - "platy11", - "goto.prototype", - "kgriff24", - "jsx", - "Jackie_Tang", - "Lisa", - "KamranMackey", - "xfq", - "pseudosavant", - "artmees", - "Andrew_Pfeiffer" + "jameswatyeo", + "Edsonoguera", + "mattvagni", + "uhoh-itsmaciek", + "rachelandrew", + "RicardsVeveris", + "Iqbalh11", + "Igor-Sangin", + "xp44mm", + "erictleung", + "jlbuckner", + "trondpet", + "Mahdi_Karimi_Asl", + "gumchum" ] }, - "Learn/Getting_started_with_the_web/JavaScript_basics": { - "modified": "2020-12-13T20:40:46.411Z", + "Learn_web_development/Core/Styling_basics/Cascade_tasks": { + "modified": "2020-07-16T22:29:36.222Z", + "contributors": ["blueblots", "RafeyIqbalRahman", "rachelandrew"] + }, + "Learn_web_development/Core/Styling_basics/Combinators": { + "modified": "2020-07-16T22:28:51.504Z", + "contributors": [ + "haond10adp", + "rachelandrew", + "xp44mm", + "DanielNoamTuby", + "chrisdavidmills" + ] + }, + "Learn_web_development/Core/Styling_basics/Cool-looking_box": { + "modified": "2020-07-16T22:28:25.961Z", "contributors": [ - "bershanskiy", - "Arpitgoyalgg", - "ekaradag14", - "bytensky", - "SphinxKnight", - "winst", "chrisdavidmills", - "mrmowji", - "Vjakupi", - "blinkous", - "biglyy", - "ohaver", - "Azzedine2020", - "jewellscott", - "radiocane", - "cogpark", - "BusiPlay", - "albanafmeti", - "InfusOnWoW", - "JonDevOps", - "bukowski73", - "badcat", - "saranshgupta1995", - "snehseel", - "taoranz", - "JawnMarc", - "julianschacher", - "gam271", - "rachelcarmena", - "DhruvDh", - "wrongsyntax", - "zzhhbyt1", - "shilili", - "pcuambe", - "bittualam.in", - "akashchy1705", - "ToshitaSingh", - "mathieucaroff", - "latinatsw28", - "Afzalafu", - "sigoa", - "trannguyenhb", - "Juchuhsu", - "lokesh-krishna", - "fscholz", - "stephaniehobson", - "Pointy", - "saud12", - "scuesta", - "SHUBHAMTRIPATH", - "dipu2013", - "Greedsy", - "Master-Osaro", - "hadleyel", - "ku3nsting", - "frankfang1990", - "prakashkmrchy", - "suriyaa", - "AprilMorone", - "lol-russo", - "mishkadoma", - "Jeremie", - "david_ross", - "dagolinuxoid", - "klez", - "Radi123", - "alexbaumgertner", - "hrishikeshbarman", - "mseyne", - "stuart", + "jamesdhurd", + "stevedav", + "jruota", "jswisher", - "javabuddy", - "garrettgrimsley", - "verpixelt", - "xfq", - "Andrew_Pfeiffer", - "netbun", - "pbschmid", - "sunilchahal", - "brnold", - "sethmcknight", - "nahero", - "teoli", - "michaelnetbiz", - "chrisdavidmills-github" + "richardzacur" ] }, - "Learn/Getting_started_with_the_web/Publishing_your_website": { - "modified": "2020-10-07T04:02:16.924Z", + "Learn_web_development/Core/Styling_basics/Debugging_CSS": { + "modified": "2020-12-11T17:53:49.635Z", "contributors": [ - "Mori", - "ohaver", + "bershanskiy", "chrisdavidmills", - "Iqbalh11", - "kakwanisiddharth", - "naser-baig", - "Rick-Manarauskis", - "SphinxKnight", - "14122712", - "iamsamwilson", - "Greedsy", - "hadleyel", - "jk777", - "Jeremie", - "klez", - "ifilin", - "xfq", - "samlaf", - "markg", - "Andrew_Pfeiffer", - "manasmahodaya" + "xp44mm", + "mbrasseau", + "rachelandrew" ] }, - "Learn/Getting_started_with_the_web/The_web_and_web_standards": { - "modified": "2020-10-25T23:30:38.501Z", + "Learn_web_development/Core/Styling_basics/Fancy_letterheaded_paper": { + "modified": "2020-07-16T22:28:23.858Z", + "contributors": ["chrisdavidmills", "jswisher", "maurodibert"] + }, + "Learn_web_development/Core/Styling_basics/Fundamental_CSS_comprehension": { + "modified": "2020-07-16T22:28:10.933Z", "contributors": [ - "philou", - "Nachec", "chrisdavidmills", - "chaitanya", - "onurbasturk", - "dcompcoder", - "DevForrestLyu" + "bripmccann", + "jswisher", + "jenjwong", + "jrussia", + "richardzacur" ] }, - "Learn/Getting_started_with_the_web/What_will_your_website_look_like": { - "modified": "2020-07-16T22:34:13.192Z", + "Learn_web_development/Core/Styling_basics/Getting_started": { + "modified": "2020-07-16T22:27:48.937Z", "contributors": [ + "onurbasturk", + "blueblots", + "gsorto", + "xp44mm", + "smilevideo", + "mbrasseau", "chrisdavidmills", - "NavetsArev", - "mfuji09", - "bduguma", - "ezrinjaz", - "IzaS", - "jbrandes", - "msobanjo", - "aboagyed", - "smoothie1998", - "RafeyIqbalRahman", - "Xyde", - "stephaniehobson", - "Lilmisscrafty116", - "RichardsonVJohnson", - "hadleyel", - "Jeremie", - "MashKao", - "klez", - "dvincent", - "ifilin", - "SphinxKnight", - "xfq", - "Andrew_Pfeiffer" + "rachelandrew", + "ExE-Boss", + "MyNameIsBond" ] }, - "Learn/HTML": { - "modified": "2020-10-13T05:26:50.329Z", + "Learn_web_development/Core/Styling_basics/Handling_conflicts": { + "modified": "2020-11-02T04:01:22.115Z", "contributors": [ + "sourabhramsingh", "gdsimoes", + "erictleung", + "30nov88", "chrisdavidmills", - "alhyrym05", - "murphychen", + "gerfolder", + "rachelandrew", + "flowfire", + "snakada", + "choudh70", + "mikemorr", + "sharma86hub", + "bernardirfan", + "j-sea", "SphinxKnight", - "www-wanglong", - "mikeongor693", - "RayPL", - "RafeyIqbalRahman", - "Sheppy", - "stephaniehobson", - "asger12345", - "TornadoIDS", - "hadleyel", - "jdescottes", - "dcondrey", - "jsx", - "hui", - "Jeremie", - "Andrew_Pfeiffer", - "fscholz" + "cybmdm", + "gumchum", + "ExE-Boss" ] }, - "Learn/HTML/Cheatsheet": { - "modified": "2020-07-16T22:22:43.887Z", - "contributors": [ - "Yel-Martinez-Consultor-Seo", - "sideshowbarker", - "verde79", - "sksankarraj", - "Quantzilla", - "Johanancuriel", - "SethClydesdale", - "arkanciscan", - "khalid32", - "jswisher", - "fachrulrazy", - "Andrew_Pfeiffer", - "SphinxKnight", - "dvincent", - "hbloomer", - "chadsansing", - "Jeremie" - ] + "Learn_web_development/Core/Styling_basics/Handling_different_text_directions": { + "modified": "2020-08-20T07:58:55.334Z", + "contributors": ["absinth0", "rachelandrew", "chrisdavidmills", "choudh70"] }, - "Learn/HTML/Howto": { - "modified": "2020-07-16T22:22:27.700Z", + "Learn_web_development/Core/Styling_basics/Images_media_forms": { + "modified": "2020-07-16T22:29:23.752Z", "contributors": [ + "rachelandrew", + "acnard", "chrisdavidmills", - "RafeyIqbalRahman", - "mrmowji", - "ishan123456789", - "Jeremie", - "Andrew_Pfeiffer" + "choudh70", + "xp44mm" ] }, - "Learn/HTML/Howto/Add_a_hit_map_on_top_of_an_image": { - "modified": "2020-07-16T22:22:42.758Z", - "contributors": ["ezrinjaz", "hbloomer", "Andrew_Pfeiffer"] + "Learn_web_development/Core/Styling_basics/Images_tasks": { + "modified": "2020-07-16T22:29:35.047Z", + "contributors": ["avivmu", "blueblots", "RafeyIqbalRahman", "rachelandrew"] }, - "Learn/HTML/Howto/Author_fast-loading_HTML_pages": { - "modified": "2020-07-16T22:22:31.788Z", + "Learn_web_development/Core/Styling_basics/Organizing": { + "modified": "2020-07-16T22:29:30.920Z", "contributors": [ - "Sheppy", - "estelle", - "sideshowbarker", - "karimos129", - "spencercorwin", - "SphinxKnight", "chrisdavidmills", - "ziyadElon", - "Harinderpreet", - "stuartharvie", - "RafeyIqbalRahman", - "ishan123456789", - "abt8601", - "xfq", - "andygongea", - "rfc791", - "fscholz", - "Jeremie", - "kscarfone", - "dbs", - "gmerencio", - "gbrown", - "haboqueferus", - "brunoais", - "teoli", - "ethertank", - "tolbon", - "leo89", - "tw2113", - "inma_610", - "xaky", - "Shz", - "JaredWBurt", - "alicethomas222", - "peterson.victor222", - "Mgjbot", - "Carrie zhxj", - "Ptak82", - "Satyr-wayfarer", - "NickolayBot", - "Dria", - "Yworfg", - "cbiesinger", - "Nerf", - "Grauw", - "CitizenK", - "Jens.B" + "avivmu", + "JohnnyMu-Cn", + "adl-g", + "renatasva", + "xp44mm", + "juanmarinaudo", + "mbrasseau", + "rachelandrew" ] }, - "Learn/HTML/Howto/Define_terms_with_HTML": { - "modified": "2020-07-16T22:22:41.646Z", + "Learn_web_development/Core/Styling_basics/Overflow": { + "modified": "2020-07-16T22:29:15.226Z", "contributors": [ - "AlexK89", - "jnegara", - "Jeremie", - "Andrew_Pfeiffer", - "Sheppy", - "MohammedAdam", - "hbloomer" + "mrodent33", + "ohaver", + "chrisdavidmills", + "matt-continuousdelta", + "rachelandrew", + "Gxz-NGU" ] }, - "Learn/HTML/Howto/Use_JavaScript_within_a_webpage": { - "modified": "2020-07-16T22:22:39.990Z", - "contributors": ["RomainLanz", "Jeremie", "Andrew_Pfeiffer"] + "Learn_web_development/Core/Styling_basics/Overflow_Tasks": { + "modified": "2020-07-16T22:29:33.802Z", + "contributors": ["avivmu", "blueblots", "RafeyIqbalRahman", "rachelandrew"] }, - "Learn/HTML/Howto/Use_data_attributes": { - "modified": "2020-07-16T22:22:34.241Z", + "Learn_web_development/Core/Styling_basics/Pseudo_classes_and_elements": { + "modified": "2020-07-16T22:28:42.196Z", "contributors": [ - "vnctdj", - "LoVo666", - "jmstfv", - "mfuji09", - "kenny-evitt", - "Enrico_Polanski", - "ryanve", - "calebmosher", "chrisdavidmills", - "rnacken", - "Sheppy", - "prusse-martin", - "torazaburo", - "jacksonrayhamilton", - "drj11", - "Manojkr", - "Speich", - "sam_eaton", - "bcruddy", - "teckno101", - "lieuwex", - "robinpokorny", - "rvighne", - "andrew.carpenter", - "Jeremie", - "magnetikonline", + "daihadi", + "xp44mm", + "juancancela", + "sergberg5", + "rachelandrew" + ] + }, + "Learn_web_development/Core/Styling_basics/Sizing": { + "modified": "2020-10-16T11:08:04.568Z", + "contributors": [ + "rachelandrew", + "grodwizneo", "jswisher", - "kscarfone", - "teoli", - "groovecoder" + "Breckles", + "chrisdavidmills", + "haond10adp", + "choudh70", + "xp44mm", + "Mahdi_Karimi_Asl", + "juanmarinaudo", + "mbrasseau" ] }, - "Learn/HTML/Introduction_to_HTML": { - "modified": "2020-12-03T08:31:03.862Z", + "Learn_web_development/Core/Styling_basics/Sizing_tasks": { + "modified": "2020-07-16T22:29:34.677Z", + "contributors": ["jpfkd", "sakthivelsekar33", "blueblots", "rachelandrew"] + }, + "Learn_web_development/Core/Styling_basics/Styling_a_bio_page": { + "modified": "2020-11-20T01:07:05.733Z", "contributors": [ + "schalkneethling", + "hakantr", + "salutis", "chrisdavidmills", - "vlnsubmit", - "onurbasturk", - "sideshowbarker", - "animeansiklopedisi", - "CodeDotJS", - "tayyabalishan", - "DevForrestLyu", - "kakwanisiddharth", - "shilili", - "boxa6", - "weisan0616", - "Koavf", - "Beatheat", - "PanayiotisPaschalides", - "JuanRomoDev", - "mjibrower", - "federico71", - "Avinash028", - "Jeffrey_Yang", - "Alihoday", - "hadleyel", - "jk777", - "shashishekhar333", - "LostLucidity" + "rachelandrew" ] }, - "Learn/HTML/Introduction_to_HTML/Advanced_text_formatting": { - "modified": "2020-08-29T01:56:34.668Z", + "Learn_web_development/Core/Styling_basics/Tables": { + "modified": "2020-08-29T06:23:45.928Z", "contributors": [ - "SnakeWhisperer", - "ZO14", - "vodov", - "mrmurtazaabbasi", - "vgiffin", - "avivmu", - "onurbasturk", "chrisdavidmills", - "tayyabalishan", - "choudh70", - "SphinxKnight", - "famees", - "markwood87", - "Yachi_Huang", - "Jesssie", - "imi-tating", - "suterj", + "lisahigh32", + "vgiffin", + "rachelandrew", + "xp44mm", + "nsangwan", + "Hypnosphi", + "RainSlide", + "Kwan", + "BunnyWong", + "juandesouza", "stephaniehobson", - "Nintendao", - "agnelvishal", - "rarevans", - "vkweb", - "wilhelmtell", "flash4syth", - "GowthamPrakaash", - "Wispring", - "CatalinMengheris", - "waldr", - "robinfromsps", - "AmazingJamesLee", - "goto.prototype", - "amins", + "PyroLagus", "richardzacur" ] }, - "Learn/HTML/Introduction_to_HTML/Creating_hyperlinks": { - "modified": "2020-12-02T15:56:05.660Z", - "contributors": [ - "chrisdavidmills", - "asad_mozilla", - "codejayant", - "gdsimoes", - "techdocswriter", - "josh.591536", - "onurbasturk", - "sideshowbarker", - "deepaksenguttuvan", - "santimirandarp", - "choudh70", - "Elched", - "eremis101", - "noorfathima11", - "MNizam0802", - "Jozefi87", - "mfuji09", - "mbuc", - "DrewGeisler", - "stephaniehobson", - "bgrayland", - "Hiroshivam", - "vkweb", - "potmpark", - "scottaohara", - "svmartin", - "rebelstatus", - "NurudeenPopoola", - "richardzacur" - ] + "Learn_web_development/Core/Styling_basics/Tables_tasks": { + "modified": "2020-10-03T15:51:56.524Z", + "contributors": ["JennyDC", "blueblots", "rachelandrew"] }, - "Learn/HTML/Introduction_to_HTML/Debugging_HTML": { - "modified": "2020-08-09T17:31:16.592Z", - "contributors": [ - "anewton", - "avivmu", - "chrisdavidmills", - "tayyabalishan", - "sideshowbarker", - "frezier", - "stephaniehobson", - "stefanocbl", - "johnjago", - "mustak", - "breno785au", - "richardzacur", - "sockofleas" - ] + "Learn_web_development/Core/Styling_basics/Test_your_skills_backgrounds_and_borders": { + "modified": "2020-10-20T11:48:06.920Z", + "contributors": ["chrisdavidmills", "rachelandrew"] }, - "Learn/HTML/Introduction_to_HTML/Document_and_website_structure": { - "modified": "2020-11-03T08:36:09.820Z", + "Learn_web_development/Core/Styling_basics/Values_and_units": { + "modified": "2020-09-27T15:04:48.072Z", "contributors": [ + "grodwizneo", "chrisdavidmills", - "philou", - "onurbasturk", - "arvin_fr", - "jzunigacoayla", - "choudh70", - "tayyabalishan", - "sharma86hub", - "taoranz", - "SphinxKnight", - "famees", - "Jerami76", - "loretta-arineva", - "eremis101", - "bminard", - "c-herrewijn", - "jswisher", - "surigangula", - "ajhsu", - "bripmccann", - "jeremiah-shore", - "stephaniehobson", - "potmpark", - "kevinAlbs", - "kalch", - "geraldchan", - "jk777", - "Jedeu", - "bmwadforth", - "aquaplanet", - "richardzacur", - "sockofleas", - "rmauge" + "theRealJennie", + "jantimon", + "Azzedine2020", + "295805950zhang", + "rachelandrew", + "prog2yannicknet", + "wlnirvana", + "xp44mm", + "cartwr40", + "wipphj", + "zbjornson" ] }, - "Learn/HTML/Introduction_to_HTML/Getting_started": { - "modified": "2020-12-05T12:24:44.561Z", + "Learn_web_development/Core/Styling_basics/Values_tasks": { + "modified": "2020-10-03T15:56:43.195Z", + "contributors": ["JennyDC", "blueblots", "rachelandrew"] + }, + "Learn_web_development/Core/Styling_basics/What_is_CSS": { + "modified": "2020-11-20T01:04:49.095Z", "contributors": [ - "Seeeven7", + "schalkneethling", "chrisdavidmills", - "philou", - "alurodriguez", - "gdsimoes", - "sxnaprkhr", - "ohaver", - "RogueDynamite", - "lucida959595", - "grzim", - "sideshowbarker", - "girlref", - "abbasalamin12", - "tayyabalishan", - "SphinxKnight", - "LittleMissS", - "MrPodu", - "exercism-1", - "tywmick", - "JacobRuigrok", - "thanhvt1984", - "imba-tjd", - "bminard", - "Chomchaum", - "mat-bi", - "madmadi", - "Sunit41557077", - "sdkiko", - "flow2k", - "irenesmith", - "formatkaka", - "bripmccann", - "sasigit7", - "Sheppy", - "Avinash028", - "SelenIT", - "MexieAndCo", - "hamasaki", - "suterj", - "Manisha0605", - "stephaniehobson", - "agnelvishal", - "MiltonAkash", - "KadirTopal", - "ameridan", - "mondaya", - "wilhelmtell", - "hadleyel", - "psylone", - "jorgeclesio", - "abdusalah", - "Bryzzle", - "Cameron-Riecan", - "jswisher", - "KevinDonnelly", - "richardzacur", - "mauney" + "jlbuckner", + "rachelandrew", + "ExE-Boss", + "MyNameIsBond" ] }, - "Learn/HTML/Introduction_to_HTML/HTML_text_fundamentals": { - "modified": "2020-10-29T23:24:18.960Z", + "Learn_web_development/Core/Styling_basics/Writing_Modes_Tasks": { + "modified": "2020-07-16T22:29:33.477Z", + "contributors": ["blueblots", "rachelandrew"] + }, + "Learn_web_development/Core/Text_styling": { + "modified": "2020-07-16T22:25:57.072Z", "contributors": [ - "philou", "chrisdavidmills", - "theRealJennie", - "trebuchet", - "emckean", - "onurbasturk", - "choudh70", - "cadorej", - "WindLo", - "eremis101", - "xubres", - "bminard", - "Chomchaum", - "quixx", - "Manisha0605", - "WikiMarc", - "stephaniehobson", - "cknapp92", - "mientje", - "Wispring", - "sideshowbarker", - "phorgan1", - "abdusalah", - "NurudeenPopoola", - "monooran1", - "PushpitaPikuDey", + "cartwr40", + "mozdevcontrib", + "wilton-cruz", + "pranay2063", + "Didglee", + "richardzacur", "rolfedh" ] }, - "Learn/HTML/Introduction_to_HTML/Marking_up_a_letter": { - "modified": "2020-07-16T22:23:10.729Z", + "Learn_web_development/Core/Text_styling/Fundamentals": { + "modified": "2020-12-01T06:10:24.965Z", "contributors": [ "chrisdavidmills", - "avivmu", - "ohaver", + "salutis", + "choudh70", "tayyabalishan", - "sideshowbarker", - "r_arpeet82", - "fazl", - "soppa91", - "bripmccann", - "jswisher", - "jk777", - "mishkadoma" + "xp44mm", + "pei-han", + "UnorthodoxThing", + "PanayiotisPaschalides", + "koralcem", + "stephaniehobson", + "wilton-cruz", + "Sheppy", + "TimSongCoder", + "qdirks", + "PyroLagus", + "richardzacur", + "plug-n-play" ] }, - "Learn/HTML/Introduction_to_HTML/Structuring_a_page_of_content": { - "modified": "2020-07-16T22:24:17.251Z", + "Learn_web_development/Core/Text_styling/Styling_links": { + "modified": "2020-11-03T06:47:30.595Z", "contributors": [ - "yolo.kimc", + "tremby", + "gerfolder", "chrisdavidmills", + "vgiffin", "tayyabalishan", - "sideshowbarker", - "markwood87", - "jswisher", - "diveshuttam", - "SoftwareRVG", + "hackernewslibrary", + "angel-luis", + "stephaniehobson", + "TimSongCoder", + "multics", + "qdirks", + "dsujeeun", + "waldr", + "PyroLagus", + "mkamalkayani", "richardzacur" ] }, - "Learn/HTML/Introduction_to_HTML/Test_your_skills:_Advanced_HTML_text": { - "modified": "2020-08-29T02:34:36.621Z", - "contributors": ["SnakeWhisperer", "onurbasturk", "chrisdavidmills"] - }, - "Learn/HTML/Introduction_to_HTML/Test_your_skills:_HTML_text_basics": { - "modified": "2020-08-27T05:38:52.761Z", - "contributors": ["SnakeWhisperer", "chrisdavidmills"] - }, - "Learn/HTML/Introduction_to_HTML/Test_your_skills:_Links": { - "modified": "2020-08-28T04:26:18.208Z", - "contributors": ["SnakeWhisperer", "chrisdavidmills", "onurbasturk"] - }, - "Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML": { - "modified": "2020-09-28T22:06:13.983Z", + "Learn_web_development/Core/Text_styling/Styling_lists": { + "modified": "2020-07-16T22:26:10.863Z", "contributors": [ - "boptilop", + "avivmu", + "haond10adp", "chrisdavidmills", - "RogueDynamite", - "zlamma", - "arjenlgill", - "jasonsbarr", - "CrypterSr", - "choudh70", - "SphinxKnight", - "fazl", - "khendrikse", - "Calerid", - "Sheppy", - "peterschussheim", - "jecook", + "massood", + "ntutangyun", + "irenesmith", + "RafeyIqbalRahman", "thenoelman", - "IMLERICH", - "rakeshkatti", - "jeremymouzin", + "juandesouza", + "angel-luis", "stephaniehobson", - "prajwalkk", - "mertdemo", - "NilSocket", - "hadleyel", - "CarlosJose", - "sideshowbarker", - "Wispring", - "aculnaig", - "chibby0ne", - "Roboe", + "pbarun", + "jruota", + "anthonyvallee", "richardzacur" ] }, - "Learn/HTML/Multimedia_and_embedding": { - "modified": "2020-09-06T18:42:31.145Z", + "Learn_web_development/Core/Text_styling/Typesetting_a_homepage": { + "modified": "2020-07-16T22:26:25.604Z", + "contributors": ["chrisdavidmills", "jswisher", "richardzacur"] + }, + "Learn_web_development/Core/Text_styling/Web_fonts": { + "modified": "2020-07-16T22:26:22.058Z", "contributors": [ - "theRealJennie", "chrisdavidmills", - "PatientLearner", + "mostlybytes", "tayyabalishan", "choudh70", - "ezrinjaz", + "kruschk", + "darman12", + "legostud", + "msobanjo", + "edprince", "aboagyed", "oyenirat", - "tamowicz", - "sideshowbarker", - "xiaofei86", - "david_ross", - "Looserof7", - "yarochewsky", + "stephaniehobson", + "JonathanPool", + "mfluehr", + "potmpark", + "qdirks", + "pmontegna", + "PyroLagus", "richardzacur" ] }, - "Learn/HTML/Multimedia_and_embedding/Adding_vector_graphics_to_the_Web": { - "modified": "2020-10-19T00:06:33.919Z", + "Learn_web_development/Core/Version_control": { + "modified": "2020-12-04T13:34:02.479Z", + "contributors": ["Arpitgoyalgg", "chrisdavidmills"] + }, + "Learn_web_development/Extensions/Advanced_JavaScript_objects": { + "modified": "2020-08-18T09:29:11.749Z", "contributors": [ - "gdsimoes", - "ralaplines1988", - "dd-pardal", + "owdown", "chrisdavidmills", - "choudh70", - "tayyabalishan", - "Zectbumo", - "danialtaherifar", - "imba-tjd", - "mfuji09", - "bdeloeste", - "deacon", - "agnelvishal", - "stephaniehobson", - "potmpark", - "richardzacur", - "Andrew_Pfeiffer", - "hbloomer" + "CodeDotJS", + "bripmccann", + "shi_zi_", + "Ch0coL8te", + "omeid", + "torazaburo", + "MashKao", + "fscholz" ] }, - "Learn/HTML/Multimedia_and_embedding/Images_in_HTML": { - "modified": "2020-11-06T07:13:32.741Z", + "Learn_web_development/Extensions/Advanced_JavaScript_objects/Adding_bouncing_balls_features": { + "modified": "2020-10-28T23:14:36.083Z", "contributors": [ + "krankj", "chrisdavidmills", - "philou", - "atd30", - "abbasalamin12", - "RicardsVeveris", - "choudh70", - "LeonFrempong", - "Mahdi_Karimi_Asl", - "sudipbhandari126", - "Sheppy", - "cinephile85", - "eremis101", - "MNizam0802", - "oyenirat", - "adyavanapalli", - "bripmccann", - "sideshowbarker", - "Ajimi", - "stephaniehobson", - "Potch", - "andrealaw", - "tedmetaltns", - "david_ross", - "Looserof7", - "jamalss", - "mishkadoma", "jswisher", - "rishianand", - "richardzacur" + "wwags33", + "rmdobservations", + "edsonmendieta", + "nmve", + "Jeremie", + "fscholz" ] }, - "Learn/HTML/Multimedia_and_embedding/Images_in_HTML/Test_your_skills:_HTML_images": { - "modified": "2020-10-18T19:47:17.929Z", - "contributors": ["gdsimoes", "chrisdavidmills"] - }, - "Learn/HTML/Multimedia_and_embedding/Mozilla_splash_page": { - "modified": "2020-07-16T22:25:05.240Z", + "Learn_web_development/Extensions/Advanced_JavaScript_objects/Object_building_practice": { + "modified": "2020-07-16T22:32:30.497Z", "contributors": [ "chrisdavidmills", - "FoxDie12x", - "MNizam0802", "jswisher", - "goto.prototype", - "richardzacur" + "IamLegendChamp", + "rohitarondekar", + "stephaniehobson", + "qdirks", + "RobWheadon", + "khamer1410", + "edsonmendieta", + "crueschenberg", + "nmve", + "wetlife", + "BaderSur", + "Jeremie", + "fscholz" ] }, - "Learn/HTML/Multimedia_and_embedding/Other_embedding_technologies": { - "modified": "2020-10-19T05:59:20.512Z", + "Learn_web_development/Extensions/Advanced_JavaScript_objects/Object_prototypes": { + "modified": "2020-11-29T09:12:53.165Z", "contributors": [ "chrisdavidmills", - "gdsimoes", - "Sichen-Wang", - "TheMageKing", - "choudh70", - "Elched", - "darby", - "eremis101", - "Wind1808", - "RafeyIqbalRahman", - "Jesssie", - "pradeeprajr93", - "juandesouza", + "loretta-arineva", + "JohnnyMu-Cn", + "krankj", + "jgabrielpro", + "amit.gangaur", + "MrPodu", + "Zearin_Galaurum", + "ckashby", + "Bushwazi", + "ricardoorellana", + "hhimanshu", + "nsangwan", + "moneysharma1010", + "sappusaketh", + "Aerodium", + "collin", + "aniketkudale", + "LuoYun", + "anonyco", + "WeiyiChen", + "Univream", + "JonathanPool", + "COV", + "shateelahmed", + "MoTTs", + "deasydoesit", + "martian2049", + "theomjones", + "linasmnew", + "elWombator", "stephaniehobson", - "NilSocket", - "flash4syth", - "BaderSur", - "richardzacur" + "iAziz786", + "lfzy", + "systematis", + "tcsc", + "giorgiobeggiora", + "zziccardi", + "rht19932", + "crueschenberg", + "sportnak", + "nmve", + "BrunkBeard", + "Jeremie", + "fscholz", + "ZeroUnderscoreOu" ] }, - "Learn/HTML/Multimedia_and_embedding/Responsive_images": { - "modified": "2020-10-19T20:26:21.787Z", - "contributors": [ - "hamishwillee", - "sideshowbarker", - "thjbd", - "chrisdavidmills", - "atd30", - "jpfkd", - "ramiy", - "JonDevOps", - "choudh70", - "tayyabalishan", - "Blacktodreamlight", - "Koavf", - "clairealyssa", - "eremis101", - "MNizam0802", - "oyenirat", - "Flimm", - "thenoelman", - "chelBot", - "dharkness", - "demont93", - "akshat12", - "imi-tating", - "msufa", - "Audaciter", - "stephaniehobson", - "dtrueman", - "goto.prototype", - "richardzacur", - "Sheppy", - "Jeremie", - "hbloomer", - "Andrew_Pfeiffer" - ] - }, - "Learn/HTML/Multimedia_and_embedding/Video_and_audio_content": { - "modified": "2020-11-20T14:06:53.297Z", - "contributors": [ - "philou", - "chrisdavidmills", - "mohammad92asghari", - "pabdani", - "avivmu", - "atd30", - "295805950zhang", - "Sichen-Wang", - "valgrimm", - "choudh70", - "mukhtar-github", - "pzrq", - "LeonFrempong", - "darby", - "kerusasu", - "Sheppy", - "Elched", - "6truvian", - "sideshowbarker", - "thet002", - "eremis101", - "sbkrish", - "christopherwilson1", - "Devendra0110", - "imi-tating", - "stephaniehobson", - "adelyoussif", - "vkweb", - "ferjm", - "fachalo1996", - "jk777", - "jayantsarkar", - "sashaburchuk", - "waldr", - "rishianand", - "goto.prototype", - "richardzacur" - ] - }, - "Learn/HTML/Multimedia_and_embedding/Video_and_audio_content/Test_your_skills:_Multimedia_and_embedding": { - "modified": "2020-11-20T14:20:14.413Z", - "contributors": ["philou", "gdsimoes", "chrisdavidmills"] - }, - "Learn/HTML/Tables": { - "modified": "2020-07-16T22:25:09.229Z", - "contributors": [ - "chrisdavidmills", - "abbasalamin12", - "tayyabalishan", - "MNizam0802", - "sideshowbarker", - "oyenirat", - "goddlts", - "jalbertbowden" - ] - }, - "Learn/HTML/Tables/Advanced": { - "modified": "2020-07-16T22:25:24.257Z", - "contributors": [ - "tayyabalishan", - "chrisdavidmills", - "santiago-rodrig", - "darman12", - "irajsuhail", - "haarabi", - "surigangula", - "stephaniehobson", - "Sheppy", - "ImtiazeA", - "serratusmagnus", - "pranay2063", - "Sebastianz", - "npusr" - ] - }, - "Learn/HTML/Tables/Basics": { - "modified": "2020-07-16T22:25:17.858Z", - "contributors": [ - "avivmu", - "chrisdavidmills", - "radiocane", - "Sichen-Wang", - "choudh70", - "tayyabalishan", - "santiago-rodrig", - "Octopinky", - "ratbeard", - "irenesmith", - "Sheppy", - "nrebhun", - "surigangula", - "stephaniehobson", - "yanlee26", - "qdirks", - "Sebastianz", - "mientje" - ] - }, - "Learn/HTML/Tables/Structuring_planet_data": { - "modified": "2020-07-16T22:25:28.525Z", - "contributors": [ - "chrisdavidmills", - "tayyabalishan", - "jswisher", - "Sebastianz" - ] - }, - "Learn/JavaScript": { - "modified": "2020-11-22T08:19:35.982Z", - "contributors": [ - "mansurdoank0", - "ARYAAB-rgb", - "chrisdavidmills", - "tayyabalishan", - "kruschk", - "frezier", - "Koavf", - "bestinterviewquestion", - "svarlamov", - "SphinxKnight", - "jonasholbech", - "rileym7", - "wbamberg", - "ts9111", - "RayannTedds", - "BrijeshWawdhane", - "TornadoIDS", - "mrmsoares", - "rain1992", - "rmateus", - "OrthoLearner", - "Jeremie", - "Sebastianz", - "bbstudio03", - "atymchuk", - "Andrew_Pfeiffer", - "fscholz" - ] - }, - "Learn/JavaScript/Asynchronous": { - "modified": "2020-07-16T22:33:12.530Z", + "Learn_web_development/Extensions/Advanced_JavaScript_objects/Test_your_skills:_Object-oriented_JavaScript": { + "modified": "2020-08-12T12:48:24.778Z", + "contributors": ["A.Faturechi", "abinashLin", "chrisdavidmills"] + }, + "Learn_web_development/Extensions/Async_JS": { + "modified": "2020-07-16T22:33:12.530Z", "contributors": [ "chrisdavidmills", "wwags33", @@ -9054,7 +8153,7 @@ "AllenChong" ] }, - "Learn/JavaScript/Asynchronous/Introducing": { + "Learn_web_development/Extensions/Async_JS/Introducing": { "modified": "2020-11-05T06:58:50.627Z", "contributors": [ "chrisdavidmills", @@ -9071,7 +8170,7 @@ "Sheppy" ] }, - "Learn/JavaScript/Asynchronous/Promises": { + "Learn_web_development/Extensions/Async_JS/Promises": { "modified": "2020-09-22T14:49:51.114Z", "contributors": [ "jswisher", @@ -9088,229 +8187,7 @@ "Sheppy" ] }, - "Learn/JavaScript/Building_blocks": { - "modified": "2020-07-16T22:31:06.092Z", - "contributors": [ - "chrisdavidmills", - "ckashby", - "Zearin_Galaurum", - "jswisher", - "baustinfry", - "nunarokapp", - "stephaniehobson", - "FishinginaSombrero8", - "ArchieAtOrigins", - "Jeremie", - "SnoopyRules", - "Cameron-Riecan" - ] - }, - "Learn/JavaScript/Building_blocks/Build_your_own_function": { - "modified": "2020-07-16T22:31:28.317Z", - "contributors": [ - "A.Faturechi", - "chrisdavidmills", - "mariusmucenicu", - "docrob0t", - "sambgordon", - "thenoelman", - "wazz", - "kan199041", - "stephaniehobson", - "FishinginaSombrero8", - "cPlayIt", - "nmve", - "rteliczan", - "Jeremie" - ] - }, - "Learn/JavaScript/Building_blocks/Events": { - "modified": "2020-08-19T17:34:16.897Z", - "contributors": [ - "Aaron228", - "owolagbadavid", - "chrisdavidmills", - "ankerok-dingdong", - "muhammadghazali", - "tayyabalishan", - "jswisher", - "VijayKumarKTG", - "FZs", - "imchriskitchens", - "mariusmucenicu", - "4R53N", - "sideshowbarker", - "christopherwilson1", - "bubzy34", - "wobedi", - "anton-mladenov", - "selrond", - "andyprickett", - "stephaniehobson", - "seasmith", - "Saabbir", - "qdirks", - "Arecius", - "Bogdancev", - "kirkins", - "cPlayIt", - "dsujeeun", - "shalvasvanidze", - "nmve", - "Jeremie", - "BaderSur", - "sngv" - ] - }, - "Learn/JavaScript/Building_blocks/Functions": { - "modified": "2020-09-29T10:01:24.142Z", - "contributors": [ - "bhushangoel", - "JohnnyMu-Cn", - "chrisdavidmills", - "ahmaazouzi", - "gerfolder", - "choudh70", - "tayyabalishan", - "cadorej", - "karlhorky", - "loretta-arineva", - "mariusmucenicu", - "riyaz", - "dan-nix", - "MachineShot", - "thenoelman", - "redrambles", - "jruota", - "stephaniehobson", - "FishinginaSombrero8", - "gabiaad", - "Anonymous", - "GKilyar", - "stockcj", - "nmve", - "Jeremie", - "Cameron-Riecan", - "husain100b", - "fscholz" - ] - }, - "Learn/JavaScript/Building_blocks/Image_gallery": { - "modified": "2020-07-31T18:38:47.870Z", - "contributors": [ - "Rafael_Green", - "chrisdavidmills", - "jswisher", - "csarami", - "jxhdev", - "jyjz2008", - "Jeremie" - ] - }, - "Learn/JavaScript/Building_blocks/Looping_code": { - "modified": "2020-09-15T14:47:05.302Z", - "contributors": [ - "theRealJennie", - "SphinxKnight", - "Rafael_Green", - "mrmowji", - "chrisdavidmills", - "The-UCS-Variable", - "sideshowbarker", - "hhimanshu", - "naser-baig", - "tayyabalishan", - "muhammadghazali", - "loretta-arineva", - "mariusmucenicu", - "walonge", - "eremis101", - "keshav1245", - "4EPTAKA", - "Erramyne", - "li3097", - "sumnercommajohn", - "thenoelman", - "csarami", - "SebastianMaciel", - "RundongZou", - "FloraFauna", - "stephaniehobson", - "GowthamPrakaash", - "JackZL", - "BrunkBeard", - "nmve", - "Jeremie", - "BaderSur", - "fscholz" - ] - }, - "Learn/JavaScript/Building_blocks/Return_values": { - "modified": "2020-08-19T08:02:22.451Z", - "contributors": [ - "wlt", - "Rafael_Green", - "chrisdavidmills", - "xuchunyang", - "ppusher", - "feeko", - "abbasalamin12", - "choudh70", - "tayyabalishan", - "muhammadghazali", - "Zearin_Galaurum", - "loretta-arineva", - "anton-mladenov", - "stephaniehobson", - "nmve", - "rteliczan", - "Jeremie", - "fscholz" - ] - }, - "Learn/JavaScript/Building_blocks/Test_your_skills:_Conditionals": { - "modified": "2020-07-16T22:31:45.710Z", - "contributors": ["jpfkd", "jmliu", "chrisdavidmills"] - }, - "Learn/JavaScript/Building_blocks/Test_your_skills:_Events": { - "modified": "2020-07-16T22:31:46.881Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/JavaScript/Building_blocks/Test_your_skills:_Functions": { - "modified": "2020-07-16T22:31:46.557Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/JavaScript/Building_blocks/Test_your_skills:_Loops": { - "modified": "2020-07-16T22:31:46.034Z", - "contributors": ["neuroptera", "chrisdavidmills"] - }, - "Learn/JavaScript/Building_blocks/conditionals": { - "modified": "2020-07-16T22:31:11.893Z", - "contributors": [ - "chrisdavidmills", - "choudh70", - "tayyabalishan", - "jswisher", - "keshav1245", - "RafeyIqbalRahman", - "Czl.Lebleu", - "smccrindle", - "OxyDesign", - "stephaniehobson", - "qdirks", - "drozycki", - "BrunkBeard", - "akshayjumbade", - "nmve", - "Rohit25negi", - "Jeremie", - "Cameron-Riecan", - "husain100b", - "fscholz", - "Sebastianz" - ] - }, - "Learn/JavaScript/Client-side_web_APIs": { + "Learn_web_development/Extensions/Client-side_APIs": { "modified": "2020-07-16T22:32:38.327Z", "contributors": [ "chrisdavidmills", @@ -9323,7 +8200,7 @@ "utkarshbhatt12" ] }, - "Learn/JavaScript/Client-side_web_APIs/Client-side_storage": { + "Learn_web_development/Extensions/Client-side_APIs/Client-side_storage": { "modified": "2020-09-16T10:15:50.995Z", "contributors": [ "chrisdavidmills", @@ -9343,7 +8220,7 @@ "TheHumbleGhost" ] }, - "Learn/JavaScript/Client-side_web_APIs/Drawing_graphics": { + "Learn_web_development/Extensions/Client-side_APIs/Drawing_graphics": { "modified": "2020-09-16T07:38:44.679Z", "contributors": [ "chrisdavidmills", @@ -9360,32 +8237,7 @@ "Sheppy" ] }, - "Learn/JavaScript/Client-side_web_APIs/Fetching_data": { - "modified": "2020-09-12T22:58:21.536Z", - "contributors": [ - "JohnnyMu-Cn", - "wlt", - "timandes", - "chrisdavidmills", - "joanvalis", - "thekosiguy", - "sideshowbarker", - "ezrinjaz", - "aboagyed", - "smoothie1998", - "stepharr", - "JoshApos", - "dlwagner", - "stephaniehobson", - "kriminals", - "SphinxKnight", - "li-shasha", - "fireattack", - "marcusgenrich", - "Sheppy" - ] - }, - "Learn/JavaScript/Client-side_web_APIs/Introduction": { + "Learn_web_development/Extensions/Client-side_APIs/Introduction": { "modified": "2020-07-16T22:32:43.814Z", "contributors": [ "chrisdavidmills", @@ -9414,28 +8266,7 @@ "sngv" ] }, - "Learn/JavaScript/Client-side_web_APIs/Manipulating_documents": { - "modified": "2020-08-23T02:38:31.029Z", - "contributors": [ - "wlt", - "herrieii", - "chrisdavidmills", - "kruschk", - "HARARCA", - "Aternus", - "ajhsu", - "jlafica", - "sourav2706", - "francescm", - "jwq1", - "stephaniehobson", - "Bogdan.G", - "JideLambo", - "lybrendan", - "mientje" - ] - }, - "Learn/JavaScript/Client-side_web_APIs/Third_party_APIs": { + "Learn_web_development/Extensions/Client-side_APIs/Third_party_APIs": { "modified": "2020-07-16T22:32:53.676Z", "contributors": [ "UnorthodoxThing", @@ -9456,7 +8287,7 @@ "stephaniehobson" ] }, - "Learn/JavaScript/Client-side_web_APIs/Video_and_audio_APIs": { + "Learn_web_development/Extensions/Client-side_APIs/Video_and_audio_APIs": { "modified": "2020-09-03T10:37:16.888Z", "contributors": [ "wlt", @@ -9474,538 +8305,564 @@ "BrunkBeard" ] }, - "Learn/JavaScript/First_steps": { - "modified": "2020-07-16T22:29:47.255Z", + "Learn_web_development/Extensions/Client-side_tools": { + "modified": "2020-07-16T22:39:26.098Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Extensions/Client-side_tools/Deployment": { + "modified": "2020-07-16T22:39:30.122Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Extensions/Client-side_tools/Introducing_complete_toolchain": { + "modified": "2020-07-16T22:39:29.585Z", + "contributors": ["nicolasguasca1", "chrisdavidmills", "escattone"] + }, + "Learn_web_development/Extensions/Client-side_tools/Overview": { + "modified": "2020-07-16T22:39:26.907Z", + "contributors": ["chrisdavidmills", "edieblu", "davidshq"] + }, + "Learn_web_development/Extensions/Client-side_tools/Package_management": { + "modified": "2020-08-29T04:11:46.834Z", "contributors": [ + "Rafael_Green", + "drklee3", + "nicolasguasca1", + "mrmowji", "chrisdavidmills", - "kruschk", - "Andriy-K", - "adnankammes", - "SphinxKnight", - "billaparker", - "Elllenn", - "dartvaneri", - "kunleris", - "gotoark", - "Jeremie", - "Sheppy" + "ralaplines1988", + "remy" ] }, - "Learn/JavaScript/First_steps/A_first_splash": { - "modified": "2020-12-05T16:30:27.992Z", + "Learn_web_development/Extensions/Forms": { + "modified": "2020-09-07T06:45:29.152Z", "contributors": [ - "mfuji09", "chrisdavidmills", - "mrmowji", - "blinkous", - "ghaffar_jr.codes", - "hisbvdis", - "Rohitkrops", - "ckashby", - "tayyabalishan", - "Waqas-Ali-Azhar", - "kruschk", - "Sarthak23khatana", - "jswisher", - "loretta-arineva", - "jshado1", - "eremis101", - "Mei-Giyanto22", - "BogdanSorin", - "nahamshabun", - "gusmally", - "RafeyIqbalRahman", - "ehrnd21mdn", - "Polcat000", - "redrambles", - "bripmccann", - "jjen9", - "stephaniehobson", - "SumitKosta", - "yuvarajakm", - "vyaspranjal33", - "chrispincharles", - "Zmk55", - "Kongklakker", - "nmve", - "PawelRokosz", - "Jeremie", - "beardedpayton", - "Sebastianz" + "ShubhamShukla", + "SphinxKnight", + "iwo12", + "wbamberg", + "estelle", + "Jeffrey_Yang", + "wilhelmtell", + "Porkepix", + "ttamminen", + "ajayashuba", + "Bandaged", + "Markus Prokott", + "sjmiles", + "ishita", + "Fredchat", + "sailplaneTW", + "SteveFaulkner", + "kscarfone", + "Sheppy", + "teoli", + "haboqueferus", + "Jeremie" ] }, - "Learn/JavaScript/First_steps/Arrays": { - "modified": "2020-07-16T22:30:52.384Z", + "Learn_web_development/Extensions/Forms/Advanced_form_styling": { + "modified": "2020-12-09T16:39:42.715Z", "contributors": [ "chrisdavidmills", - "choudh70", - "tayyabalishan", - "jswisher", - "denise_", - "Majek", - "keshav1245", - "mfuji09", - "dq82elo", - "TasosPoursaitides", - "johnnyvalles", - "pbbob1", - "bripmccann", + "rpxs", + "edchasw", + "Uemmra3", + "Lisadot", + "A.Faturechi", + "sjud", + "estelle", + "Aubrays", + "Tigt", + "ferrysdayoff", + "missmatsuko", + "soonoo", + "coderjerk", "stephaniehobson", - "AnnaCheba", - "qdirks", - "hadleyel", - "RobWheadon", - "faroukcharkas", - "sushobhana", - "cloverharvest", - "nmve", - "TimHandy", - "PawelRokosz", + "david_ross", + "toraritte", + "samford", "Jeremie", - "BaderSur", - "Sebastianz", - "BenCrab", - "fscholz" + "kscarfone", + "teoli", + "FredB", + "notabene", + "Brettz9", + "Sheppy" ] }, - "Learn/JavaScript/First_steps/Math": { - "modified": "2020-07-16T22:30:23.656Z", + "Learn_web_development/Extensions/Forms/Basic_native_form_controls": { + "modified": "2020-10-25T00:26:19.500Z", "contributors": [ - "mrmowji", - "asavageiv", - "A.Faturechi", + "Harold-Gao", + "amikalperkins", "chrisdavidmills", - "choudh70", + "A.Faturechi", + "estelle", + "sideshowbarker", + "zubaer54", "tayyabalishan", - "kruschk", - "jswisher", - "cinephile85", - "amitch38", - "alepsys", - "vitaliyterziev", - "caraya", - "Uemmra3", - "bripmccann", - "dlwagner", + "choudh70", + "cybmdm", + "amIsmael", + "853419196", + "Sheppy", + "Ko.Kyaw.Zin.Htet", + "Tigt", + "juandesouza", "stephaniehobson", - "Saabbir", - "gabiaad", - "BadTudou", - "hadleyel", - "FIJN", - "hungvt0301", - "vatz88", - "kiley0", - "nmve", - "brendenseidel", + "Jeffrey_Yang", + "toraritte", + "Ajedi32", "Jeremie", - "BaderSur", - "sngv", - "Sheppy", - "Sebastianz" - ] - }, - "Learn/JavaScript/First_steps/Silly_story_generator": { - "modified": "2020-07-16T22:30:59.670Z", - "contributors": [ - "neuroptera", - "chrisdavidmills", - "nsangwan", - "rendner", - "csarami", - "2alin", - "jswisher", - "ctroupin", - "keshavmahajan", - "pranay2063", - "MrMaxMeranda", - "Jeremie" + "aksht", + "kscarfone", + "lemgrb" ] }, - "Learn/JavaScript/First_steps/Strings": { - "modified": "2020-07-16T22:30:38.291Z", + "Learn_web_development/Extensions/Forms/Form_validation": { + "modified": "2020-12-12T20:31:48.908Z", "contributors": [ - "chinmaykunkikar", + "bershanskiy", + "scottBowles", "chrisdavidmills", + "tbolt", + "A.Faturechi", + "Halochkin", + "83C10", + "NikolayPe", + "Brettz9", + "SphinxKnight", + "kyonlee", + "estelle", "tayyabalishan", - "kruschk", + "choudh70", + "perfmattersconf", + "SabineEmden", + "lbraun", + "ychouloute", + "alacritas", + "metamas", + "escattone", + "richajak", + "sidd", + "RachelM", + "jpaugh", + "shilili", + "agrimarcal", + "Sal56", "jswisher", - "alepsys", - "eremis101", - "gerganzh", - "grumBit", + "Marvinside", + "libmw", + "mfuji09", "RafeyIqbalRahman", - "sahilwasan000", - "hello-ajayrawat", - "bripmccann", - "rileym7", + "mnoorenberghe", + "futureworktechno", + "futuretechnologies01", + "sideshowbarker", + "FutureWork08", + "thenoelman", + "csarami", + "mmeinzer", + "tjmcewan", + "chafic", + "zsogolow", + "zorrobei", + "BryanL", + "Sajag", "stephaniehobson", - "hadleyel", - "shoelaces", + "stellartux", + "sparecycles", + "lobsterhands", + "manikos", + "sabrinaluo", + "RobWheadon", + "denilsonsa", + "xmbhasin", + "ggyismjxd", + "wido", + "tkrotoff", + "Chandan-97", + "eanakashima", + "programmer5000", + "itsrahulpandey", + "andreaswachowski", + "enderandpeter", + "jrussia", + "cezaraugusto", + "mmk", + "Sheppy", + "PushpitaPikuDey", + "Tuxosaurus", + "gto1", "Jeremie", - "Sebastianz", - "fscholz" + "dalex", + "kscarfone", + "dbuch", + "jumpnett", + "Havvy" ] }, - "Learn/JavaScript/First_steps/Test_your_skills:_Arrays": { - "modified": "2020-07-16T22:31:05.831Z", - "contributors": ["vgiffin", "chrisdavidmills"] - }, - "Learn/JavaScript/First_steps/Test_your_skills:_Math": { - "modified": "2020-07-31T08:15:10.749Z", - "contributors": ["chrisdavidmills", "AJMcDee"] - }, - "Learn/JavaScript/First_steps/Test_your_skills:_Strings": { - "modified": "2020-07-16T22:31:05.493Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/JavaScript/First_steps/Test_your_skills:_variables": { - "modified": "2020-07-16T22:31:04.800Z", - "contributors": ["neuroptera", "chrisdavidmills"] - }, - "Learn/JavaScript/First_steps/Useful_string_methods": { - "modified": "2020-10-19T12:57:52.630Z", + "Learn_web_development/Extensions/Forms/HTML5_input_types": { + "modified": "2020-10-04T09:16:43.234Z", "contributors": [ + "JennyDC", + "amikalperkins", "chrisdavidmills", - "jpfkd", - "epirnat", + "arjenlgill", + "blueblots", + "panpy-web", "A.Faturechi", - "choudh70", - "tayyabalishan", - "jswisher", - "alepsys", - "Asimov4", - "v8sagar", - "bkucey", - "bripmccann", - "stephaniehobson", - "hadleyel", - "RobWheadon", - "sushobhana", - "nmve", - "brenseid", - "Jeremie", - "BaderSur", - "sngv", - "Sebastianz", - "BenCrab", - "fscholz" + "joyjade", + "estelle", + "kyonlee", + "zubaer54", + "Zearin_Galaurum" ] }, - "Learn/JavaScript/First_steps/Variables": { - "modified": "2020-09-28T12:52:31.401Z", + "Learn_web_development/Extensions/Forms/HTML_forms_in_legacy_browsers": { + "modified": "2020-07-16T22:22:02.938Z", "contributors": [ - "mohammad92asghari", "chrisdavidmills", - "Nachec", - "choudh70", - "tayyabalishan", - "jswisher", - "JawnMarc", - "inikolaesku", - "cinephile85", - "alepsys", - "SphinxKnight", - "blimp", - "msobanjo", - "TasosPoursaitides", - "RafeyIqbalRahman", - "aswaniprakash", - "felipe-lee", - "sxnaprkhr", - "alexandr-osprey", - "Uemmra3", - "martian2049", - "bripmccann", - "jruota", + "estelle", + "ferrysdayoff", + "soonoo", "stephaniehobson", - "rmdobservations", - "shoelaces", - "stockcj", + "nunu10000", "Jeremie", - "razouckt", - "Sebastianz", + "kscarfone", + "teoli", "Sheppy", - "salman-shah" + "jswisher" ] }, - "Learn/JavaScript/First_steps/What_is_JavaScript": { - "modified": "2020-12-05T16:30:59.604Z", + "Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls": { + "modified": "2020-09-17T01:08:40.244Z", "contributors": [ - "mfuji09", - "dcompcoder", - "jpfkd", - "rajatsan", + "ralaplines1988", + "prosciutto1", + "vgiffin", + "JoshApos", "chrisdavidmills", - "ibnlanre", - "ckashby", - "tayyabalishan", - "JawnMarc", - "inikolaesku", - "Sheppy", - "nitramrelpmur", - "eremis101", - "agnelvishal", - "rachelcarmena", - "jk777", - "massood", - "riceh3", - "KirankumarAmbati", - "caraya", - "nceresole", - "MelissaNg", - "kevinlmadison", - "hackernewslibrary", - "MadEmperorYuri", - "Wenfang_Du", - "Anonymous", - "alanfeld", - "championshuttler", - "bripmccann", - "baustinfry", - "sumankisku", - "JonathanBrownCFA", - "1rjun", + "estelle", + "trieudh58", + "lonelywhisper", + "yiosh", "stephaniehobson", - "morfioce", - "whiteheat2019", - "hadleyel", - "SarahSakura1990", - "rmateus", - "nmve", - "OrthoLearner", + "jhggins", + "meshulam", + "Sheppy", "Jeremie", - "ObroAhmed", - "hamishwillee", - "Sebastianz" + "kscarfone", + "notabene", + "BYK" ] }, - "Learn/JavaScript/First_steps/What_went_wrong": { - "modified": "2020-09-04T06:06:17.140Z", + "Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_1": { + "modified": "2020-07-16T22:21:58.881Z", "contributors": [ "chrisdavidmills", - "jswisher", - "manideep39", - "tayyabalishan", - "inikolaesku", - "Alek2077", - "wbreakell", - "redrambles", - "bripmccann", - "MiaD", - "stephaniehobson", - "kewinsousa", - "hadleyel", - "nmaksymchuk", - "Tony-Thomas", - "rsidorov", - "stockcj", - "niklasholm", - "nmve", - "DeboraG", - "BrianCsection", - "Jeremie", - "Sebastianz" + "estelle", + "kscarfone", + "ethertank", + "Sheppy", + "Jeremie" ] }, - "Learn/JavaScript/Howto": { - "modified": "2020-07-16T22:33:08.616Z", - "contributors": [ - "kruschk", - "sywsyw", - "jmstfv", - "stephaniehobson", - "chrisdavidmills", - "Maxim79", - "tedmarynicz", - "adekoyejo" - ] + "Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_2": { + "modified": "2020-07-16T22:21:59.274Z", + "contributors": ["chrisdavidmills", "Sheppy", "Jeremie"] }, - "Learn/JavaScript/Objects": { - "modified": "2020-08-18T09:29:11.749Z", + "Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_3": { + "modified": "2020-07-16T22:21:59.617Z", "contributors": [ - "owdown", "chrisdavidmills", - "CodeDotJS", - "bripmccann", - "shi_zi_", - "Ch0coL8te", - "omeid", - "torazaburo", - "MashKao", - "fscholz" + "estelle", + "Sheppy", + "Jeremie", + "lmorchard" ] }, - "Learn/JavaScript/Objects/Adding_bouncing_balls_features": { - "modified": "2020-10-28T23:14:36.083Z", + "Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_4": { + "modified": "2020-07-16T22:21:59.939Z", "contributors": [ - "krankj", "chrisdavidmills", - "jswisher", - "wwags33", - "rmdobservations", - "edsonmendieta", - "nmve", - "Jeremie", - "fscholz" + "estelle", + "abt8601", + "Sheppy", + "Jeremie" ] }, - "Learn/JavaScript/Objects/Basics": { - "modified": "2020-07-16T22:31:55.445Z", + "Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_5": { + "modified": "2020-07-16T22:22:00.262Z", + "contributors": ["chrisdavidmills", "estelle", "Sheppy", "Jeremie"] + }, + "Learn_web_development/Extensions/Forms/How_to_structure_a_web_form": { + "modified": "2020-07-16T22:21:09.116Z", "contributors": [ "chrisdavidmills", + "A.Faturechi", + "andrewbluepiano", + "estelle", + "perfmattersconf", + "RicardsVeveris", "tayyabalishan", - "jswisher", - "FishinginaSombrero8", - "nhsz", - "gumbol", - "rayrojas", - "bripmccann", - "Battlesquid", - "Abhro", - "FeruzOripov", - "snakecase", - "vcastrejont", - "muhammadghazali", - "MarckK", - "RockyAZ", - "rajasrijanakiraman", + "willi-berger", + "groprog", + "UnorthodoxThing", + "richajak", + "Sal56", + "Devendra0110", + "sideshowbarker", + "Milind-Gawande", + "surigangula", + "Pav_ka", + "sgnl", + "BunnyWong", + "jaredef", + "Tunisiano32", "stephaniehobson", - "JonathanPool", - "systematis", - "dsujeeun", - "nmve", - "BaderSur", + "tyreer", + "tedmetaltns", + "davidalejandro", + "Lehakos", + "brandonrodriguez", + "mientje", + "JonathanLake", + "freekngdom", + "ivaturi", + "rolfedh", + "PushpitaPikuDey", + "marcos-abreu", + "Qombella", + "susanBuck", + "Sheppy", + "rylan", + "andrew-luhring", + "LayZeeDK", + "xfq", "Jeremie", - "fscholz" + "Serenity", + "kscarfone", + "FredB", + "notabene" ] }, - "Learn/JavaScript/Objects/JSON": { - "modified": "2020-10-31T11:57:03.706Z", + "Learn_web_development/Extensions/Forms/How_to_structure_a_web_form/Example": { + "modified": "2020-07-16T22:21:16.974Z", + "contributors": ["chrisdavidmills", "rashmimalpande", "Sheppy", "Jeremie"] + }, + "Learn_web_development/Extensions/Forms/Other_form_controls": { + "modified": "2020-07-16T22:22:07.520Z", "contributors": [ - "randycasburn", "chrisdavidmills", - "jswisher", - "mariusmucenicu", - "thebearingedge", - "bripmccann", - "shilili", - "thekosiguy", - "TasosPoursaitides", - "dvsgnr", - "stephaniehobson", - "torazaburo", - "DipperP", - "qdirks", - "systematis", - "mememachine666", - "nmve", - "Jeremie", - "fscholz" + "riturajshakti", + "A.Faturechi", + "w13rdo", + "estelle" ] }, - "Learn/JavaScript/Objects/Object_building_practice": { - "modified": "2020-07-16T22:32:30.497Z", + "Learn_web_development/Extensions/Forms/Sending_and_retrieving_form_data": { + "modified": "2020-09-13T14:02:27.104Z", "contributors": [ "chrisdavidmills", - "jswisher", - "IamLegendChamp", - "rohitarondekar", - "stephaniehobson", - "qdirks", - "RobWheadon", - "khamer1410", - "edsonmendieta", - "crueschenberg", - "nmve", - "wetlife", - "BaderSur", + "A.Faturechi", + "estelle", + "tayyabalishan", + "choudh70", + "karlhorky", + "sideshowbarker", + "Dzmitry_K", + "vriojtg", + "massood", + "lvzndr", + "gabcs07", + "guacamoli", + "mfuji09", + "surigangula", + "Sheppy", + "juandesouza", + "calrrox", + "stephaniehobson", + "SphinxKnight", + "bartolocarrasco", + "MegaMindAT", + "douglas-j-bothwell", + "Markus Prokott", + "wrannaman", + "etmoore", + "AestheticArson", + "sekularac", + "Lexas", + "iammattmurphy", "Jeremie", - "fscholz" + "kscarfone", + "ben010783", + "ckeschnat", + "gtwhite" ] }, - "Learn/JavaScript/Objects/Object_prototypes": { - "modified": "2020-11-29T09:12:53.165Z", + "Learn_web_development/Extensions/Forms/Sending_forms_through_JavaScript": { + "modified": "2020-07-21T05:40:07.618Z", "contributors": [ "chrisdavidmills", - "loretta-arineva", - "JohnnyMu-Cn", - "krankj", - "jgabrielpro", - "amit.gangaur", - "MrPodu", - "Zearin_Galaurum", - "ckashby", - "Bushwazi", - "ricardoorellana", - "hhimanshu", - "nsangwan", - "moneysharma1010", - "sappusaketh", - "Aerodium", - "collin", - "aniketkudale", - "LuoYun", - "anonyco", - "WeiyiChen", - "Univream", - "JonathanPool", - "COV", - "shateelahmed", - "MoTTs", - "deasydoesit", - "martian2049", - "theomjones", - "linasmnew", - "elWombator", + "aelliott1485", + "estelle", + "tayyabalishan", + "choudh70", + "virtualmix", + "peterschussheim", + "ferrysdayoff", + "l1n", + "Sheppy", "stephaniehobson", - "iAziz786", - "lfzy", - "systematis", - "tcsc", - "giorgiobeggiora", - "zziccardi", - "rht19932", - "crueschenberg", - "sportnak", - "nmve", - "BrunkBeard", + "vSanjo", + "Tigt", + "andreiepure", + "jimmywarting", + "teoli", + "uddin", + "RufusCSharma", + "afzaal_ahmad_zeeshan", + "dhodder", + "DarkNexus", + "kohei.yoshino", "Jeremie", - "fscholz", - "ZeroUnderscoreOu" + "kscarfone" ] }, - "Learn/JavaScript/Objects/Test_your_skills:_JSON": { - "modified": "2020-07-16T22:32:38.003Z", - "contributors": ["chrisdavidmills", "blueblots"] + "Learn_web_development/Extensions/Forms/Styling_web_forms": { + "modified": "2020-07-16T22:21:30.372Z", + "contributors": [ + "chrisdavidmills", + "Lisadot", + "A.Faturechi", + "SKempin", + "Dyomba", + "Arudarin", + "frontendlane", + "Rob_Belics", + "estelle", + "wbamberg", + "ferrysdayoff", + "stephaniehobson", + "clambodile", + "david_ross", + "longdoggo", + "CarissaLynn73", + "l1n", + "stuart", + "Jeremie", + "kscarfone", + "teoli", + "Sheppy", + "notabene" + ] }, - "Learn/JavaScript/Objects/Test_your_skills:_Object-oriented_JavaScript": { - "modified": "2020-08-12T12:48:24.778Z", - "contributors": ["A.Faturechi", "abinashLin", "chrisdavidmills"] + "Learn_web_development/Extensions/Forms/Test_your_skills:_Advanced_styling": { + "modified": "2020-07-16T22:22:12.770Z", + "contributors": ["chrisdavidmills"] }, - "Learn/JavaScript/Objects/Test_your_skills:_Object_basics": { - "modified": "2020-12-11T06:18:00.445Z", - "contributors": ["chrisdavidmills", "iJacKP", "neuroptera"] + "Learn_web_development/Extensions/Forms/Test_your_skills:_Basic_controls": { + "modified": "2020-07-16T22:22:10.786Z", + "contributors": ["chrisdavidmills"] }, - "Learn/Learning_and_getting_help": { - "modified": "2020-10-12T05:38:01.632Z", + "Learn_web_development/Extensions/Forms/Test_your_skills:_Form_structure": { + "modified": "2020-07-16T22:22:10.470Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Extensions/Forms/Test_your_skills:_Form_validation": { + "modified": "2020-07-16T22:22:13.092Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Extensions/Forms/Test_your_skills:_HTML5_controls": { + "modified": "2020-07-16T22:22:11.117Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Extensions/Forms/Test_your_skills:_Other_controls": { + "modified": "2020-07-16T22:22:11.804Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Extensions/Forms/Test_your_skills:_Styling_basics": { + "modified": "2020-07-16T22:22:12.453Z", + "contributors": ["chrisdavidmills"] + }, + "Learn_web_development/Extensions/Forms/UI_pseudo-classes": { + "modified": "2020-07-22T23:59:16.367Z", "contributors": [ + "theBstar", "chrisdavidmills", - "simö", - "theRealJennie", - "srabatin", + "sjud", + "wbamberg", + "estelle" + ] + }, + "Learn_web_development/Extensions/Forms/User_input_methods": { + "modified": "2020-07-22T12:38:46.565Z", + "contributors": [ + "mfuji09", + "ericcastro", + "chrisdavidmills", + "KadirTopal", + "sprodrigues", + "MashKao", + "teoli", + "franciov" + ] + }, + "Learn_web_development/Extensions/Forms/Your_first_form": { + "modified": "2020-11-15T12:17:48.584Z", + "contributors": [ + "keithecza", + "thedavedavies", + "codingcodymiller", + "A.Faturechi", + "chrisdavidmills", + "cybmdm", + "kyonlee", + "estelle", + "AndriiMaliuta", + "perfmattersconf", + "tayyabalishan", + "choudh70", + "Sphish", + "RafeyIqbalRahman", + "agnelvishal", + "pete0phx", + "haarabi", + "dlwagner", + "PedroFischerDeveloper", + "calrrox", "SphinxKnight", - "akhila", - "Nachec", - "mohibk", - "dheerajmalik", - "mAsterEihaB", - "ankit625", - "emckean", - "vishal.jv1511" + "xioebi", + "stephaniehobson", + "prateekvyas1996", + "Endyl", + "Samji", + "jmmarco", + "gene_wood", + "azureowl", + "indiesquidge", + "ish", + "jsx", + "tijani08", + "mbrennan", + "jswisher", + "MediaPub", + "fmdkdd", + "zekaras", + "Jeremie", + "kscarfone", + "cdelahousse", + "forest51690", + "ethertank", + "Sheppy", + "FredB", + "Hucheng", + "icyfenix" ] }, - "Learn/Performance": { + "Learn_web_development/Extensions/Performance": { "modified": "2020-11-10T10:19:10.117Z", "contributors": [ "chrisdavidmills", @@ -10019,11 +8876,11 @@ "malchata" ] }, - "Learn/Performance/CSS": { + "Learn_web_development/Extensions/Performance/CSS": { "modified": "2020-11-11T15:16:18.377Z", "contributors": ["chrisdavidmills", "estelle"] }, - "Learn/Performance/HTML": { + "Learn_web_development/Extensions/Performance/HTML": { "modified": "2020-07-16T22:40:41.921Z", "contributors": [ "mfranzke", @@ -10034,15 +8891,15 @@ "ElliotHawkins" ] }, - "Learn/Performance/JavaScript": { + "Learn_web_development/Extensions/Performance/JavaScript": { "modified": "2020-08-13T09:15:49.386Z", "contributors": ["bsphair", "estelle"] }, - "Learn/Performance/Measuring_performance": { + "Learn_web_development/Extensions/Performance/Measuring_performance": { "modified": "2020-08-09T18:29:59.520Z", "contributors": ["leslitagordita", "blueblots", "estelle"] }, - "Learn/Performance/Multimedia": { + "Learn_web_development/Extensions/Performance/Multimedia": { "modified": "2020-09-28T11:10:56.616Z", "contributors": [ "Software202", @@ -10054,11 +8911,11 @@ "ryantownsend" ] }, - "Learn/Performance/Perceived_performance": { + "Learn_web_development/Extensions/Performance/Perceived_performance": { "modified": "2020-07-16T22:40:43.307Z", "contributors": ["wilsotobianco", "estelle", "mhilko", "ottoetc"] }, - "Learn/Performance/Web_Performance_Basics": { + "Learn_web_development/Extensions/Performance/Web_Performance_Basics": { "modified": "2020-07-16T22:40:42.703Z", "contributors": [ "Sheppy", @@ -10069,7 +8926,7 @@ "santoshjoseph99" ] }, - "Learn/Performance/What_is_web_performance": { + "Learn_web_development/Extensions/Performance/What_is_web_performance": { "modified": "2020-07-16T22:40:40.542Z", "contributors": [ "estelle", @@ -10082,7 +8939,7 @@ "sanunes" ] }, - "Learn/Performance/business_case_for_performance": { + "Learn_web_development/Extensions/Performance/business_case_for_performance": { "modified": "2020-10-31T03:19:13.511Z", "contributors": [ "sourabhramsingh", @@ -10091,15 +8948,15 @@ "anthoniaocc" ] }, - "Learn/Performance/video": { + "Learn_web_development/Extensions/Performance/video": { "modified": "2020-07-16T22:40:45.501Z", "contributors": ["ohaver", "estelle"] }, - "Learn/Performance/why_web_performance": { + "Learn_web_development/Extensions/Performance/why_web_performance": { "modified": "2020-11-10T07:30:44.012Z", "contributors": ["Voulto", "ohaver", "estelle"] }, - "Learn/Server-side": { + "Learn_web_development/Extensions/Server-side": { "modified": "2020-07-16T22:35:54.561Z", "contributors": [ "jswisher", @@ -10112,7 +8969,7 @@ "hamishwillee" ] }, - "Learn/Server-side/Apache_Configuration_htaccess": { + "Learn_web_development/Extensions/Server-side/Apache_Configuration_htaccess": { "modified": "2020-11-17T06:09:09.583Z", "contributors": [ "chrisdavidmills", @@ -10131,7 +8988,7 @@ "Schapel" ] }, - "Learn/Server-side/Configuring_server_MIME_types": { + "Learn_web_development/Extensions/Server-side/Configuring_server_MIME_types": { "modified": "2020-11-21T03:30:10.832Z", "contributors": [ "caraya", @@ -10161,7 +9018,7 @@ "Dria" ] }, - "Learn/Server-side/Django": { + "Learn_web_development/Extensions/Server-side/Django": { "modified": "2020-12-04T14:02:07.117Z", "contributors": [ "Arpitgoyalgg", @@ -10173,7 +9030,7 @@ "theonlyNischal" ] }, - "Learn/Server-side/Django/Admin_site": { + "Learn_web_development/Extensions/Server-side/Django/Admin_site": { "modified": "2020-12-03T19:59:54.292Z", "contributors": [ "hamishwillee", @@ -10199,7 +9056,7 @@ "shakib609" ] }, - "Learn/Server-side/Django/Authentication": { + "Learn_web_development/Extensions/Server-side/Django/Authentication": { "modified": "2020-12-03T20:13:13.675Z", "contributors": [ "hamishwillee", @@ -10237,7 +9094,7 @@ "devosnw" ] }, - "Learn/Server-side/Django/Deployment": { + "Learn_web_development/Extensions/Server-side/Django/Deployment": { "modified": "2020-12-03T20:19:51.934Z", "contributors": [ "hamishwillee", @@ -10260,7 +9117,7 @@ "alanypz" ] }, - "Learn/Server-side/Django/Forms": { + "Learn_web_development/Extensions/Server-side/Django/Forms": { "modified": "2020-12-03T20:17:00.543Z", "contributors": [ "hamishwillee", @@ -10289,7 +9146,7 @@ "sunqingyao" ] }, - "Learn/Server-side/Django/Generic_views": { + "Learn_web_development/Extensions/Server-side/Django/Generic_views": { "modified": "2020-12-03T20:09:35.559Z", "contributors": [ "hamishwillee", @@ -10321,7 +9178,7 @@ "Matt-1-2-3" ] }, - "Learn/Server-side/Django/Home_page": { + "Learn_web_development/Extensions/Server-side/Django/Home_page": { "modified": "2020-12-01T04:25:12.651Z", "contributors": [ "hamishwillee", @@ -10349,7 +9206,7 @@ "BaderSur" ] }, - "Learn/Server-side/Django/Introduction": { + "Learn_web_development/Extensions/Server-side/Django/Introduction": { "modified": "2020-10-26T20:19:15.370Z", "contributors": [ "hamishwillee", @@ -10378,7 +9235,7 @@ "RezaGhanbari" ] }, - "Learn/Server-side/Django/Models": { + "Learn_web_development/Extensions/Server-side/Django/Models": { "modified": "2020-12-03T19:54:59.247Z", "contributors": [ "hamishwillee", @@ -10422,7 +9279,7 @@ "shakib609" ] }, - "Learn/Server-side/Django/Sessions": { + "Learn_web_development/Extensions/Server-side/Django/Sessions": { "modified": "2020-12-03T20:12:07.151Z", "contributors": [ "hamishwillee", @@ -10439,7 +9296,7 @@ "kalch" ] }, - "Learn/Server-side/Django/Testing": { + "Learn_web_development/Extensions/Server-side/Django/Testing": { "modified": "2020-12-03T20:18:46.698Z", "contributors": [ "hamishwillee", @@ -10470,7 +9327,7 @@ "BaderSur" ] }, - "Learn/Server-side/Django/Tutorial_local_library_website": { + "Learn_web_development/Extensions/Server-side/Django/Tutorial_local_library_website": { "modified": "2020-07-16T22:36:48.320Z", "contributors": [ "hamishwillee", @@ -10484,7 +9341,7 @@ "omideus" ] }, - "Learn/Server-side/Django/development_environment": { + "Learn_web_development/Extensions/Server-side/Django/development_environment": { "modified": "2020-11-30T06:16:33.731Z", "contributors": [ "kingzamzon", @@ -10510,7 +9367,7 @@ "ozkanoron" ] }, - "Learn/Server-side/Django/django_assessment_blog": { + "Learn_web_development/Extensions/Server-side/Django/django_assessment_blog": { "modified": "2020-12-03T20:24:56.918Z", "contributors": [ "hamishwillee", @@ -10519,7 +9376,7 @@ "chrisdavidmills" ] }, - "Learn/Server-side/Django/skeleton_website": { + "Learn_web_development/Extensions/Server-side/Django/skeleton_website": { "modified": "2020-12-03T19:52:04.395Z", "contributors": [ "hamishwillee", @@ -10552,7 +9409,7 @@ "kmtu" ] }, - "Learn/Server-side/Django/web_application_security": { + "Learn_web_development/Extensions/Server-side/Django/web_application_security": { "modified": "2020-12-03T20:23:11.807Z", "contributors": [ "hamishwillee", @@ -10561,7 +9418,7 @@ "stephaniehobson" ] }, - "Learn/Server-side/Express_Nodejs": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs": { "modified": "2020-07-16T22:37:50.456Z", "contributors": [ "ckashby", @@ -10578,7 +9435,7 @@ "JonathanPool" ] }, - "Learn/Server-side/Express_Nodejs/Displaying_data": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data": { "modified": "2020-10-15T23:05:20.615Z", "contributors": [ "hamishwillee", @@ -10599,7 +9456,7 @@ "jpv8" ] }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Author_detail_page": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Author_detail_page": { "modified": "2020-07-16T22:38:39.308Z", "contributors": [ "chrisdavidmills", @@ -10609,7 +9466,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Author_list_page": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Author_list_page": { "modified": "2020-10-19T09:11:11.739Z", "contributors": [ "Rafael_Green", @@ -10623,7 +9480,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/Displaying_data/BookInstance_detail_page_and_challenge": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/BookInstance_detail_page_and_challenge": { "modified": "2020-10-21T13:40:49.706Z", "contributors": [ "Rafael_Green", @@ -10634,7 +9491,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/Displaying_data/BookInstance_list_page": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/BookInstance_list_page": { "modified": "2020-10-15T23:35:54.209Z", "contributors": [ "hamishwillee", @@ -10644,7 +9501,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Book_detail_page": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Book_detail_page": { "modified": "2020-10-23T00:48:36.155Z", "contributors": [ "Rafael_Green", @@ -10655,7 +9512,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Book_list_page": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Book_list_page": { "modified": "2020-10-21T13:01:32.442Z", "contributors": [ "aziaziazi", @@ -10666,7 +9523,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Date_formatting_using_moment": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Date_formatting_using_moment": { "modified": "2020-10-15T23:02:33.461Z", "contributors": [ "hamishwillee", @@ -10676,7 +9533,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Genre_detail_page": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Genre_detail_page": { "modified": "2020-10-16T01:09:32.792Z", "contributors": [ "hamishwillee", @@ -10694,7 +9551,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Home_page": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Home_page": { "modified": "2020-10-13T01:37:36.784Z", "contributors": [ "hamishwillee", @@ -10709,7 +9566,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/Displaying_data/LocalLibrary_base_template": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/LocalLibrary_base_template": { "modified": "2020-10-13T01:17:46.044Z", "contributors": [ "hamishwillee", @@ -10718,7 +9575,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/Displaying_data/Template_primer": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Displaying_data/Template_primer": { "modified": "2020-07-16T22:38:34.166Z", "contributors": [ "kruschk", @@ -10729,7 +9586,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/Introduction": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Introduction": { "modified": "2020-11-23T19:32:36.548Z", "contributors": [ "hamishwillee", @@ -10782,7 +9639,7 @@ "soberNod" ] }, - "Learn/Server-side/Express_Nodejs/Tutorial_local_library_website": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/Tutorial_local_library_website": { "modified": "2020-07-16T22:38:14.808Z", "contributors": [ "kruschk", @@ -10793,7 +9650,7 @@ "stephaniehobson" ] }, - "Learn/Server-side/Express_Nodejs/deployment": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/deployment": { "modified": "2020-11-09T19:42:28.397Z", "contributors": [ "hamishwillee", @@ -10816,7 +9673,7 @@ "JonathanPool" ] }, - "Learn/Server-side/Express_Nodejs/development_environment": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/development_environment": { "modified": "2020-10-02T03:54:52.600Z", "contributors": [ "hamishwillee", @@ -10844,7 +9701,7 @@ "JonathanPool" ] }, - "Learn/Server-side/Express_Nodejs/forms": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/forms": { "modified": "2020-11-06T02:29:48.005Z", "contributors": [ "UnorthodoxThing", @@ -10872,7 +9729,7 @@ "ggrumbley" ] }, - "Learn/Server-side/Express_Nodejs/forms/Create_BookInstance_form": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/forms/Create_BookInstance_form": { "modified": "2020-11-01T15:35:41.003Z", "contributors": [ "levijskal00", @@ -10888,7 +9745,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/forms/Create_author_form": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/forms/Create_author_form": { "modified": "2020-10-12T02:11:57.347Z", "contributors": [ "hamishwillee", @@ -10902,7 +9759,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/forms/Create_book_form": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/forms/Create_book_form": { "modified": "2020-11-16T19:04:13.423Z", "contributors": [ "hamishwillee", @@ -10919,7 +9776,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/forms/Create_genre_form": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/forms/Create_genre_form": { "modified": "2020-10-12T02:10:44.522Z", "contributors": [ "hamishwillee", @@ -10937,7 +9794,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/forms/Delete_author_form": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/forms/Delete_author_form": { "modified": "2020-10-12T01:42:50.118Z", "contributors": [ "hamishwillee", @@ -10950,7 +9807,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/forms/Update_Book_form": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/forms/Update_Book_form": { "modified": "2020-10-23T12:13:37.688Z", "contributors": [ "Rafael_Green", @@ -10963,7 +9820,7 @@ "david_ross" ] }, - "Learn/Server-side/Express_Nodejs/mongoose": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/mongoose": { "modified": "2020-11-29T20:31:53.197Z", "contributors": [ "hamishwillee", @@ -11029,7 +9886,7 @@ "david-code" ] }, - "Learn/Server-side/Express_Nodejs/routes": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/routes": { "modified": "2020-10-16T00:19:04.416Z", "contributors": [ "hamishwillee", @@ -11058,556 +9915,1293 @@ "wsvincent" ] }, - "Learn/Server-side/Express_Nodejs/skeleton_website": { - "modified": "2020-10-05T02:08:15.540Z", + "Learn_web_development/Extensions/Server-side/Express_Nodejs/skeleton_website": { + "modified": "2020-10-05T02:08:15.540Z", + "contributors": [ + "hamishwillee", + "AndriiMaliuta", + "kruschk", + "Benneee", + "joqqy", + "CODevOp", + "th7nder", + "carlleeswanson", + "Ollasmyke", + "chrisdavidmills", + "gerganzh", + "jenlouie", + "robertgz", + "smoqadam", + "VoloshchenkoAl", + "kkarimi", + "steveamaza", + "stephaniehobson", + "dhcodes", + "imcodingideas", + "Stunner", + "JonathanPool" + ] + }, + "Learn_web_development/Extensions/Server-side/First_steps": { + "modified": "2020-10-07T11:33:39.639Z", + "contributors": [ + "ohaver", + "chrisdavidmills", + "kjerinic", + "LaloC3", + "jamesdhurd", + "david_ross", + "utkarshbhatt12", + "ggarrickk", + "sjaramillo10", + "hamishwillee" + ] + }, + "Learn_web_development/Extensions/Server-side/First_steps/Client-Server_overview": { + "modified": "2020-07-16T22:36:18.007Z", + "contributors": [ + "SphinxKnight", + "ahlawataman3", + "ckashby", + "yuminatsu", + "jdblischak", + "chrisdavidmills", + "Jagdeep-Singh", + "PointForerunners", + "suterj", + "stephaniehobson", + "buoyantair", + "cortical-iv", + "asynchub", + "WG75", + "0level0", + "thelartman", + "JonathanPool", + "BaderSur", + "kmtu", + "hamishwillee" + ] + }, + "Learn_web_development/Extensions/Server-side/First_steps/Introduction": { + "modified": "2020-11-22T17:43:04.256Z", + "contributors": [ + "Havardox", + "chrisdavidmills", + "kruschk", + "d78mdd", + "jdblischak", + "tic64", + "michaelAdewunmi", + "LinuxLiaison", + "richardl62", + "anshtanwar43", + "shubham822", + "sacredSatan", + "utkarshbhatt12", + "ggarrickk", + "stephaniehobson", + "leluso", + "dagolinuxoid", + "WG75", + "Zeng", + "-aevans1", + "tommorris", + "lalilulelost", + "BaderSur", + "lkeneco", + "balajimysore12", + "hamishwillee" + ] + }, + "Learn_web_development/Extensions/Server-side/First_steps/Web_frameworks": { + "modified": "2020-07-16T22:36:23.155Z", + "contributors": [ + "Software202", + "chrisdavidmills", + "kruschk", + "Peter-Liao-github", + "BananaTheef", + "lopezpdvn", + "fazl", + "th7nder", + "gubjack", + "Yonkai", + "mantaspet", + "SalilKothadia", + "jdblischak", + "maishakins", + "vidhi_", + "stephaniehobson", + "Saurabh_Chhabra", + "deSagaz", + "HugoLiconV", + "0level0", + "kberov", + "thelartman", + "jjhampton", + "kalch", + "Julie1984", + "shakib609", + "hamishwillee" + ] + }, + "Learn_web_development/Extensions/Server-side/First_steps/Website_security": { + "modified": "2020-07-16T22:36:26.667Z", + "contributors": [ + "sideshowbarker", + "vzhikness", + "jdblischak", + "tsvete28", + "chrisdavidmills", + "percy55", + "sagaragarwal94", + "CodeDotJS", + "suterj", + "stephaniehobson", + "tedmarynicz", + "scellef", + "mnrowe", + "thelartman", + "JonathanPool", + "kmtu", + "hamishwillee" + ] + }, + "Learn_web_development/Extensions/Server-side/Node_server_without_framework": { + "modified": "2020-10-02T01:27:11.451Z", + "contributors": [ + "hamishwillee", + "rajatsan", + "sixprime", + "0xnoob", + "padunk", + "chrisdavidmills", + "joelpek", + "QJ.js", + "alexlawrence", + "dangrasso", + "Paul_Yuhnovich", + "david_ross", + "johnjago", + "ugultopu", + "ebcoder", + "mattmilburn", + "sergey-seleznev", + "Coco92", + "image72", + "h_ajsf" + ] + }, + "Learn_web_development/Extensions/Testing": { + "modified": "2020-07-16T22:38:59.026Z", + "contributors": [ + "chrisdavidmills", + "kruschk", + "ShivamGoyal1899", + "wbamberg", + "arai", + "prograamer", + "hadleyel", + "jpetto", + "melaniemkwon" + ] + }, + "Learn_web_development/Extensions/Testing/Automated_testing": { + "modified": "2020-09-24T05:59:58.777Z", + "contributors": [ + "Rafael_Green", + "lancespa", + "chrisdavidmills", + "avocadoras", + "kruschk", + "jochendelabie", + "pulkitsharma07", + "harshitpaul", + "wbamberg", + "ElvisZhu", + "KateSturmey", + "stephaniehobson", + "Memija", + "iigmir", + "SpikePy", + "jpetto", + "billmcgee" + ] + }, + "Learn_web_development/Extensions/Testing/Feature_detection": { + "modified": "2020-07-16T22:39:22.516Z", + "contributors": [ + "ckashby", + "mfuji09", + "chrisdavidmills", + "Igor-Sangin", + "kruschk", + "tkrotoff", + "jcsahnwaldt", + "stephaniehobson", + "EdwardB" + ] + }, + "Learn_web_development/Extensions/Testing/HTML_and_CSS": { + "modified": "2020-07-16T22:39:08.959Z", + "contributors": [ + "chrisdavidmills", + "ckashby", + "kruschk", + "Sheppy", + "rahul73690", + "enejko", + "stephaniehobson", + "EdwardB", + "abenkovskii", + "qdirks" + ] + }, + "Learn_web_development/Extensions/Testing/Introduction": { + "modified": "2020-07-28T13:00:54.765Z", + "contributors": [ + "liviulupei", + "ckashby", + "kruschk", + "joanmdavis", + "daphnemcrossbrowser", + "chrisdavidmills", + "jochendelabie", + "sadhvisingh1", + "joaner", + "Navin77", + "stephaniehobson", + "qdirks", + "Soupedenuit", + "jainarpit", + "RyanWng", + "0000marcell", + "xfq" + ] + }, + "Learn_web_development/Extensions/Testing/Testing_strategies": { + "modified": "2020-09-21T04:00:14.366Z", + "contributors": [ + "Rafael_Green", + "chrisdavidmills", + "liviulupei", + "AndriiMaliuta", + "kruschk", + "agnelvishal", + "jochendelabie", + "harshitpaul", + "Navin77", + "stephaniehobson", + "aarondev8917", + "EdwardB", + "tsotetsi", + "qdirks", + "0000marcell" + ] + }, + "Learn_web_development/Extensions/Testing/Your_own_automation_environment": { + "modified": "2020-12-07T06:18:26.264Z", + "contributors": [ + "BBC-Radiance", + "Rafael_Green", + "UnorthodoxThing", + "chrisdavidmills", + "liviulupei", + "SphinxKnight", + "sjain1992", + "kruschk", + "jochendelabie", + "harshitpaul", + "mburleigh", + "gabolato", + "stephaniehobson", + "martianyi", + "paulinas" + ] + }, + "Learn_web_development/Getting_started/Environment_setup/Command_line": { + "modified": "2020-10-18T22:03:14.400Z", + "contributors": ["ralaplines1988", "Callahad", "chrisdavidmills"] + }, + "Learn_web_development/Getting_started/Environment_setup/Dealing_with_files": { + "modified": "2020-12-04T18:44:16.263Z", + "contributors": [ + "Seeeven7", + "philou", + "xandora", + "adilalsalmi2013", + "irenesmith", + "riceh3", + "msobanjo", + "smoothie1998", + "chrisdavidmills", + "dangvancuong", + "SphinxKnight", + "knows1", + "qadero", + "stephaniehobson", + "agnelvishal", + "afishop", + "hadleyel", + "Goldfish", + "shoelaces", + "Jeremie", + "ifilin", + "Ojas_A", + "Andrew_Pfeiffer", + "yokimbo", + "Sheppy", + "SueSmith" + ] + }, + "Learn_web_development/Getting_started/Environment_setup/Installing_software": { + "modified": "2020-11-19T18:44:49.700Z", + "contributors": [ + "hughcrt", + "darby", + "chrisdavidmills", + "dd-pardal", + "darkwebster", + "rl2999", + "dineshram", + "SphinxKnight", + "PatrickDGarvey", + "Izzaldin", + "flexcapacitor", + "donnal4", + "robmuh", + "juanromoit", + "lol-russo", + "paszesoft", + "wi24rd", + "smoothie1998", + "bittualam.in", + "CSP-CODER", + "stevedav", + "rameezripon", + "CodeDotJS", + "Pichchayut", + "S-Dey", + "stephaniehobson", + "momdo", + "kubosho_", + "hadleyel", + "jk777", + "evaferreira", + "zizau_", + "Sheppy", + "saurabh95", + "KindRacoon", + "ownsourcing", + "alirobe", + "Jeremie", + "antoniogarcia78", + "platy11", + "goto.prototype", + "kgriff24", + "jsx", + "Jackie_Tang", + "Lisa", + "KamranMackey", + "xfq", + "pseudosavant", + "artmees", + "Andrew_Pfeiffer" + ] + }, + "Learn_web_development/Getting_started/Soft_skills/Learning_and_getting_help": { + "modified": "2020-10-12T05:38:01.632Z", + "contributors": [ + "chrisdavidmills", + "simö", + "theRealJennie", + "srabatin", + "SphinxKnight", + "akhila", + "Nachec", + "mohibk", + "dheerajmalik", + "mAsterEihaB", + "ankit625", + "emckean", + "vishal.jv1511" + ] + }, + "Learn_web_development/Getting_started/Web_standards/How_the_web_works": { + "modified": "2020-07-17T10:00:52.022Z", + "contributors": [ + "黄晓生", + "chrisdavidmills", + "SphinxKnight", + "gepanther", + "jamesdhurd", + "ChaltinPagan", + "Ndikubwayo", + "prajwalkk", + "wilhelmtell", + "hadleyel", + "david_ross", + "AlexanderJohn", + "CommonSnowFlake", + "Jeremie", + "corderophilosophy", + "klez", + "marlon7", + "diogeneshamilton", + "xfq", + "Andrew_Pfeiffer" + ] + }, + "Learn_web_development/Getting_started/Web_standards/The_web_standards_model": { + "modified": "2020-10-25T23:30:38.501Z", + "contributors": [ + "philou", + "Nachec", + "chrisdavidmills", + "chaitanya", + "onurbasturk", + "dcompcoder", + "DevForrestLyu" + ] + }, + "Learn_web_development/Getting_started/Your_first_website": { + "modified": "2020-12-07T11:57:48.782Z", + "contributors": [ + "SphinxKnight", + "mr.sithuaung", + "burakizmirli252", + "marismiglans8", + "jessica.kolek", + "chrisdavidmills", + "SinEstres", + "pe.minuta.78", + "iamadityashekhar", + "Javi-21", + "K-D", + "gamma.mahdii", + "maeeel968", + "hakannakliyat", + "kmavrikakis", + "harpaljadon", + "PatrickDGarvey", + "johnsmith1554", + "kakwanisiddharth", + "kenj115188", + "shilili", + "burgess25", + "EvenC", + "mfuji09", + "james-rhodus", + "smoothie1998", + "fox-lucas", + "stevedav", + "SimDrifT", + "CodeDotJS", + "dartvaneri", + "Jenna59", + "Alihoday", + "Sibiraj-S", + "hadleyel", + "wh1msy", + "kaiarifin", + "Zh1hu1", + "Jom97", + "gleidiin", + "aquddos", + "Jeremie", + "jswisher", + "pheakvoin", + "jam1985", + "EnriquePabloBarreraVega", + "BychekRU", + "rpettit686", + "jsx", + "Trontin", + "LeBasti", + "arbatskiy", + "pravinbudharap", + "dileep.ch", + "Sheppy", + "Andrew_Pfeiffer", + "klez" + ] + }, + "Learn_web_development/Getting_started/Your_first_website/Adding_interactivity": { + "modified": "2020-12-13T20:40:46.411Z", + "contributors": [ + "bershanskiy", + "Arpitgoyalgg", + "ekaradag14", + "bytensky", + "SphinxKnight", + "winst", + "chrisdavidmills", + "mrmowji", + "Vjakupi", + "blinkous", + "biglyy", + "ohaver", + "Azzedine2020", + "jewellscott", + "radiocane", + "cogpark", + "BusiPlay", + "albanafmeti", + "InfusOnWoW", + "JonDevOps", + "bukowski73", + "badcat", + "saranshgupta1995", + "snehseel", + "taoranz", + "JawnMarc", + "julianschacher", + "gam271", + "rachelcarmena", + "DhruvDh", + "wrongsyntax", + "zzhhbyt1", + "shilili", + "pcuambe", + "bittualam.in", + "akashchy1705", + "ToshitaSingh", + "mathieucaroff", + "latinatsw28", + "Afzalafu", + "sigoa", + "trannguyenhb", + "Juchuhsu", + "lokesh-krishna", + "fscholz", + "stephaniehobson", + "Pointy", + "saud12", + "scuesta", + "SHUBHAMTRIPATH", + "dipu2013", + "Greedsy", + "Master-Osaro", + "hadleyel", + "ku3nsting", + "frankfang1990", + "prakashkmrchy", + "suriyaa", + "AprilMorone", + "lol-russo", + "mishkadoma", + "Jeremie", + "david_ross", + "dagolinuxoid", + "klez", + "Radi123", + "alexbaumgertner", + "hrishikeshbarman", + "mseyne", + "stuart", + "jswisher", + "javabuddy", + "garrettgrimsley", + "verpixelt", + "xfq", + "Andrew_Pfeiffer", + "netbun", + "pbschmid", + "sunilchahal", + "brnold", + "sethmcknight", + "nahero", + "teoli", + "michaelnetbiz", + "chrisdavidmills-github" + ] + }, + "Learn_web_development/Getting_started/Your_first_website/Creating_the_content": { + "modified": "2020-11-13T05:59:27.045Z", + "contributors": [ + "SphinxKnight", + "mpmadhubhashana8", + "chrisdavidmills", + "advancel", + "sideshowbarker", + "thelovekesh", + "dcompcoder", + "adatapost", + "donnal4", + "shilili", + "P1xt", + "a4anandsingh", + "bminard", + "Chomchaum", + "rachelcarmena", + "dwvisser", + "maria-rubina", + "thekosiguy", + "smoothie1998", + "RafeyIqbalRahman", + "thoughtbyte", + "Sheppy", + "arai", + "DragMeToProgramming", + "moslyke", + "datdathcmutrans", + "suterj", + "rajasrijanakiraman", + "Quantzilla", + "q3229270", + "jswisher", + "explosive1111", + "Maruti-Ram", + "Sharoon_Francis", + "Mastermind9513", + "rishikant-sharma", + "hahaf313", + "jwhitlock", + "hadleyel", + "Tanvir-rahman", + "mishkadoma", + "Jeremie", + "Cameron-Riecan", + "klez", + "tcyyky", + "MightyBranch", + "Carmelina", + "manderton", + "jlin", + "karyse", + "NickPapayiannakis", + "odsantos", + "xfq", + "jsx" + ] + }, + "Learn_web_development/Getting_started/Your_first_website/Publishing_your_website": { + "modified": "2020-10-07T04:02:16.924Z", + "contributors": [ + "Mori", + "ohaver", + "chrisdavidmills", + "Iqbalh11", + "kakwanisiddharth", + "naser-baig", + "Rick-Manarauskis", + "SphinxKnight", + "14122712", + "iamsamwilson", + "Greedsy", + "hadleyel", + "jk777", + "Jeremie", + "klez", + "ifilin", + "xfq", + "samlaf", + "markg", + "Andrew_Pfeiffer", + "manasmahodaya" + ] + }, + "Learn_web_development/Getting_started/Your_first_website/Styling_the_content": { + "modified": "2020-11-20T01:08:35.890Z", + "contributors": [ + "schalkneethling", + "chrisdavidmills", + "thelovekesh", + "winst", + "dcompcoder", + "ohaver", + "ngaydainuocmat304", + "Azzedine2020", + "LordZarano", + "RicardsVeveris", + "naser-baig", + "forrest.lyu.it", + "zzhhbyt1", + "rachelcarmena", + "ezrinjaz", + "edprince", + "bhuvy2", + "smoothie1998", + "oyenirat", + "jdblischak", + "jswisher", + "terevele", + "102", + "lui247", + "IMLERICH", + "ry0id", + "suterj", + "q3229270", + "MohamedSalah1998", + "hadleyel", + "thanhtran92", + "Looserof7", + "Jeremie", + "MightyBranch", + "SphinxKnight", + "jackarmley", + "odsantos", + "Andrew_Pfeiffer", + "xfq" + ] + }, + "Learn_web_development/Getting_started/Your_first_website/What_will_your_website_look_like": { + "modified": "2020-07-16T22:34:13.192Z", "contributors": [ - "hamishwillee", - "AndriiMaliuta", - "kruschk", - "Benneee", - "joqqy", - "CODevOp", - "th7nder", - "carlleeswanson", - "Ollasmyke", "chrisdavidmills", - "gerganzh", - "jenlouie", - "robertgz", - "smoqadam", - "VoloshchenkoAl", - "kkarimi", - "steveamaza", + "NavetsArev", + "mfuji09", + "bduguma", + "ezrinjaz", + "IzaS", + "jbrandes", + "msobanjo", + "aboagyed", + "smoothie1998", + "RafeyIqbalRahman", + "Xyde", "stephaniehobson", - "dhcodes", - "imcodingideas", - "Stunner", - "JonathanPool" + "Lilmisscrafty116", + "RichardsonVJohnson", + "hadleyel", + "Jeremie", + "MashKao", + "klez", + "dvincent", + "ifilin", + "SphinxKnight", + "xfq", + "Andrew_Pfeiffer" ] }, - "Learn/Server-side/First_steps": { - "modified": "2020-10-07T11:33:39.639Z", + "Learn_web_development/Howto/Design_and_accessibility/Common_web_layouts": { + "modified": "2020-07-16T22:35:42.190Z", "contributors": [ - "ohaver", "chrisdavidmills", - "kjerinic", - "LaloC3", - "jamesdhurd", - "david_ross", - "utkarshbhatt12", - "ggarrickk", - "sjaramillo10", - "hamishwillee" - ] - }, - "Learn/Server-side/First_steps/Client-Server_overview": { - "modified": "2020-07-16T22:36:18.007Z", - "contributors": [ "SphinxKnight", - "ahlawataman3", - "ckashby", - "yuminatsu", - "jdblischak", - "chrisdavidmills", - "Jagdeep-Singh", - "PointForerunners", - "suterj", - "stephaniehobson", - "buoyantair", - "cortical-iv", - "asynchub", - "WG75", - "0level0", - "thelartman", - "JonathanPool", - "BaderSur", - "kmtu", - "hamishwillee" + "Jeremie", + "Sheppy", + "Kathrincolyn", + "Andrew_Pfeiffer", + "mehmetaergun", + "anistark", + "rhyne24" ] }, - "Learn/Server-side/First_steps/Introduction": { - "modified": "2020-11-22T17:43:04.256Z", + "Learn_web_development/Howto/Design_and_accessibility/Design_for_all_types_of_users": { + "modified": "2020-07-16T22:35:50.650Z", "contributors": [ - "Havardox", + "MelchiorIm3Tal", "chrisdavidmills", - "kruschk", - "d78mdd", - "jdblischak", - "tic64", - "michaelAdewunmi", - "LinuxLiaison", - "richardl62", - "anshtanwar43", - "shubham822", - "sacredSatan", - "utkarshbhatt12", - "ggarrickk", - "stephaniehobson", - "leluso", - "dagolinuxoid", - "WG75", - "Zeng", - "-aevans1", - "tommorris", - "lalilulelost", - "BaderSur", - "lkeneco", - "balajimysore12", - "hamishwillee" + "SphinxKnight", + "Jeremie", + "Andrew_Pfeiffer", + "notabene" ] }, - "Learn/Server-side/First_steps/Web_frameworks": { - "modified": "2020-07-16T22:36:23.155Z", + "Learn_web_development/Howto/Design_and_accessibility/HTML_features_for_accessibility": { + "modified": "2020-07-16T22:35:51.146Z", + "contributors": ["chrisdavidmills", "Tigt", "kscarfone", "shubhraj"] + }, + "Learn_web_development/Howto/Design_and_accessibility/Thinking_before_coding": { + "modified": "2020-07-16T22:35:33.950Z", "contributors": [ - "Software202", - "chrisdavidmills", - "kruschk", - "Peter-Liao-github", - "BananaTheef", - "lopezpdvn", - "fazl", - "th7nder", - "gubjack", - "Yonkai", - "mantaspet", - "SalilKothadia", - "jdblischak", "maishakins", - "vidhi_", - "stephaniehobson", - "Saurabh_Chhabra", - "deSagaz", - "HugoLiconV", - "0level0", - "kberov", - "thelartman", - "jjhampton", - "kalch", - "Julie1984", - "shakib609", - "hamishwillee" + "jamesdhurd", + "chrisdavidmills", + "surigangula", + "SphinxKnight", + "Jeremie", + "Andrew_Pfeiffer", + "teoli" ] }, - "Learn/Server-side/First_steps/Website_security": { - "modified": "2020-07-16T22:36:26.667Z", + "Learn_web_development/Howto/Design_and_accessibility/What_is_accessibility": { + "modified": "2020-07-16T22:35:46.668Z", "contributors": [ - "sideshowbarker", - "vzhikness", - "jdblischak", - "tsvete28", "chrisdavidmills", - "percy55", - "sagaragarwal94", - "CodeDotJS", - "suterj", - "stephaniehobson", - "tedmarynicz", - "scellef", - "mnrowe", - "thelartman", - "JonathanPool", - "kmtu", - "hamishwillee" + "Jeremie", + "Andrew_Pfeiffer", + "notabene" ] }, - "Learn/Server-side/Node_server_without_framework": { - "modified": "2020-10-02T01:27:11.451Z", + "Learn_web_development/Howto/Solve_CSS_problems": { + "modified": "2020-07-16T22:25:41.103Z", "contributors": [ - "hamishwillee", - "rajatsan", - "sixprime", - "0xnoob", - "padunk", + "Coink", + "SphinxKnight", + "dforceacademy", + "prayagch", "chrisdavidmills", - "joelpek", - "QJ.js", - "alexlawrence", - "dangrasso", - "Paul_Yuhnovich", + "kruschk", "david_ross", - "johnjago", - "ugultopu", - "ebcoder", - "mattmilburn", - "sergey-seleznev", - "Coco92", - "image72", - "h_ajsf" + "Jedipedia", + "yuj25", + "Onkar316", + "adebiyial", + "hbloomer", + "Jeremie" ] }, - "Learn/Tools_and_testing": { - "modified": "2020-07-16T22:38:53.469Z", - "contributors": ["chrisdavidmills", "kruschk", "dylanferguson", "Navin77"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks": { - "modified": "2020-09-25T22:34:22.129Z", - "contributors": ["chrisdavidmills", "CodeDotJS"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_conditional_footer": { - "modified": "2020-09-03T05:31:37.623Z", - "contributors": ["Rafael_Green", "chrisdavidmills"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_getting_started": { - "modified": "2020-08-06T07:27:06.082Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_interactivity_events_state": { - "modified": "2020-08-06T07:26:59.624Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_resources": { - "modified": "2020-08-06T07:26:47.135Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_routing": { - "modified": "2020-08-06T07:26:51.530Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_structure_componentization": { - "modified": "2020-08-06T07:27:03.636Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Introduction": { - "modified": "2020-09-08T07:18:11.161Z", + "Learn_web_development/Howto/Solve_CSS_problems/CSS_FAQ": { + "modified": "2020-07-16T22:25:44.490Z", "contributors": [ + "SphinxKnight", + "sarlington", + "stephaniehobson", + "Sheppy", "chrisdavidmills", - "harryghgim", - "terrymorse", - "valgrimm", - "nicolasguasca1", - "codeability", - "mgechev", - "jchimene" + "leeir", + "creativenitish", + "xfq", + "teoli", + "kscarfone", + "ethertank", + "jswisher", + "tw2113", + "inma_610", + "Jürgen Jeka", + "Mgjbot", + "Ryanerasure", + "DBaron", + "1163832425", + "Ssmedberg", + "Napolj2", + "Ptak82", + "Dria", + "Randywombat", + "Saori", + "Danielwang", + "Nickolay", + "Antonality", + "Chrisblore", + "Stephen1", + "Waldo", + "bradipao" ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Main_features": { - "modified": "2020-09-08T05:53:30.007Z", - "contributors": ["chrisdavidmills", "terrymorse", "luc4leone", "mrmowji"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_accessibility": { - "modified": "2020-08-06T07:27:14.576Z", + "Learn_web_development/Howto/Solve_CSS_problems/Generated_content": { + "modified": "2020-07-16T22:25:46.676Z", "contributors": [ "chrisdavidmills", - "vgiffin", - "ndri", - "xfq", - "doncity-tech" + "clairealyssa", + "wbamberg", + "tirein", + "yancarq", + "mrlagerwey", + "kan199041", + "mfluehr", + "luketeaford", + "floEdelmann", + "jeansouz4", + "veryrandomname", + "Jeremie", + "kscarfone", + "stephen", + "trevorh", + "teoli", + "Sheppy", + "jswisher", + "Mgjbot", + "Leandro Mercês Xavier", + "Verruckt", + "BenoitL", + "Rod Whiteley", + "gandalf", + "Nickolay" ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_components": { - "modified": "2020-08-06T07:27:25.146Z", - "contributors": ["chrisdavidmills", "storytellerrishabh", "codeability"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started": { - "modified": "2020-10-21T06:59:37.317Z", + "Learn_web_development/Howto/Solve_HTML_problems": { + "modified": "2020-07-16T22:22:27.700Z", "contributors": [ "chrisdavidmills", - "ramiZackaryShamir", - "spaceinvadev", + "RafeyIqbalRahman", "mrmowji", - "codeability", - "bias-santa", - "franca" + "ishan123456789", + "Jeremie", + "Andrew_Pfeiffer" ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_interactivity_events_state": { - "modified": "2020-09-01T07:11:30.226Z", + "Learn_web_development/Howto/Solve_HTML_problems/Add_a_hit_map_on_top_of_an_image": { + "modified": "2020-07-16T22:22:42.758Z", + "contributors": ["ezrinjaz", "hbloomer", "Andrew_Pfeiffer"] + }, + "Learn_web_development/Howto/Solve_HTML_problems/Author_fast-loading_HTML_pages": { + "modified": "2020-07-16T22:22:31.788Z", "contributors": [ + "Sheppy", + "estelle", + "sideshowbarker", + "karimos129", + "spencercorwin", + "SphinxKnight", "chrisdavidmills", - "ndri", - "nicolasguasca1", - "mrmowji", - "alperars" + "ziyadElon", + "Harinderpreet", + "stuartharvie", + "RafeyIqbalRahman", + "ishan123456789", + "abt8601", + "xfq", + "andygongea", + "rfc791", + "fscholz", + "Jeremie", + "kscarfone", + "dbs", + "gmerencio", + "gbrown", + "haboqueferus", + "brunoais", + "teoli", + "ethertank", + "tolbon", + "leo89", + "tw2113", + "inma_610", + "xaky", + "Shz", + "JaredWBurt", + "alicethomas222", + "peterson.victor222", + "Mgjbot", + "Carrie zhxj", + "Ptak82", + "Satyr-wayfarer", + "NickolayBot", + "Dria", + "Yworfg", + "cbiesinger", + "Nerf", + "Grauw", + "CitizenK", + "Jens.B" ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_interactivity_filtering_conditional_rendering": { - "modified": "2020-09-28T06:18:04.788Z", + "Learn_web_development/Howto/Solve_HTML_problems/Cheatsheet": { + "modified": "2020-07-16T22:22:43.887Z", "contributors": [ - "chrisdavidmills", - "dl90", - "terrymorse", - "Rafael_Green", - "mrmowji" + "Yel-Martinez-Consultor-Seo", + "sideshowbarker", + "verde79", + "sksankarraj", + "Quantzilla", + "Johanancuriel", + "SethClydesdale", + "arkanciscan", + "khalid32", + "jswisher", + "fachrulrazy", + "Andrew_Pfeiffer", + "SphinxKnight", + "dvincent", + "hbloomer", + "chadsansing", + "Jeremie" ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_resources": { - "modified": "2020-08-06T07:27:08.934Z", - "contributors": ["chrisdavidmills", "mrmowji", "bias-santa", "codeability"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_todo_list_beginning": { - "modified": "2020-09-08T16:44:12.600Z", - "contributors": ["terrymorse", "chrisdavidmills", "codeability"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_Todo_list_beginning": { - "modified": "2020-12-01T21:39:23.352Z", - "contributors": ["seneca", "chrisdavidmills"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_TypeScript": { - "modified": "2020-10-29T07:18:00.018Z", - "contributors": ["haond10adp", "chrisdavidmills"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_components": { - "modified": "2020-10-07T20:21:51.724Z", - "contributors": ["seneca", "Rafael_Green", "chrisdavidmills", "opensas"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_deployment_next": { - "modified": "2020-09-20T04:24:34.950Z", - "contributors": ["Rafael_Green", "chrisdavidmills"] + "Learn_web_development/Howto/Solve_HTML_problems/Define_terms_with_HTML": { + "modified": "2020-07-16T22:22:41.646Z", + "contributors": [ + "AlexK89", + "jnegara", + "Jeremie", + "Andrew_Pfeiffer", + "Sheppy", + "MohammedAdam", + "hbloomer" + ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_getting_started": { - "modified": "2020-09-11T14:25:08.477Z", - "contributors": ["Rafael_Green", "chrisdavidmills", "opensas"] + "Learn_web_development/Howto/Solve_HTML_problems/Use_JavaScript_within_a_webpage": { + "modified": "2020-07-16T22:22:39.990Z", + "contributors": ["RomainLanz", "Jeremie", "Andrew_Pfeiffer"] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_reactivity_lifecycle_accessibility": { - "modified": "2020-10-24T06:16:59.643Z", + "Learn_web_development/Howto/Solve_HTML_problems/Use_data_attributes": { + "modified": "2020-07-16T22:22:34.241Z", "contributors": [ - "haond10adp", - "SphinxKnight", - "Rafael_Green", + "vnctdj", + "LoVo666", + "jmstfv", + "mfuji09", + "kenny-evitt", + "Enrico_Polanski", + "ryanve", + "calebmosher", "chrisdavidmills", - "opensas" + "rnacken", + "Sheppy", + "prusse-martin", + "torazaburo", + "jacksonrayhamilton", + "drj11", + "Manojkr", + "Speich", + "sam_eaton", + "bcruddy", + "teckno101", + "lieuwex", + "robinpokorny", + "rvighne", + "andrew.carpenter", + "Jeremie", + "magnetikonline", + "jswisher", + "kscarfone", + "teoli", + "groovecoder" ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_stores": { - "modified": "2020-12-11T07:44:13.494Z", + "Learn_web_development/Howto/Solve_JavaScript_problems": { + "modified": "2020-07-16T22:33:08.616Z", "contributors": [ - "Mishra-Suraj", - "haond10adp", - "Rafael_Green", - "chrisdavidmills" + "kruschk", + "sywsyw", + "jmstfv", + "stephaniehobson", + "chrisdavidmills", + "Maxim79", + "tedmarynicz", + "adekoyejo" ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_variables_props": { - "modified": "2020-10-20T01:35:26.842Z", - "contributors": ["haond10adp", "Rafael_Green", "chrisdavidmills"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_computed_properties": { - "modified": "2020-09-08T10:27:40.979Z", - "contributors": ["Rafael_Green", "chrisdavidmills", "clintbingo"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_conditional_rendering": { - "modified": "2020-08-06T07:26:12.722Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_first_component": { - "modified": "2020-09-05T08:38:17.788Z", - "contributors": ["Rafael_Green", "chrisdavidmills"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_getting_started": { - "modified": "2020-08-06T07:26:44.679Z", - "contributors": ["chrisdavidmills", "taiwoayanleye"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_methods_events_models": { - "modified": "2020-10-05T06:56:15.162Z", - "contributors": ["JohnnyMu-Cn", "chrisdavidmills"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_refs_focus_management": { - "modified": "2020-08-06T07:26:09.176Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_rendering_lists": { - "modified": "2020-09-15T11:22:44.422Z", - "contributors": ["chrisdavidmills", "technicalflaw"] + "Learn_web_development/Howto/Tools_and_setup/Available_text_editors": { + "modified": "2020-09-11T09:55:13.639Z", + "contributors": [ + "callpri", + "GCCSheep", + "blueblots", + "iigmir", + "rashmimalpande", + "chrisdavidmills", + "funnyChinese", + "SphinxKnight", + "Jeremie", + "Andrew_Pfeiffer", + "fmarier" + ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_resources": { - "modified": "2020-08-06T07:26:03.837Z", - "contributors": ["chrisdavidmills"] + "Learn_web_development/Howto/Tools_and_setup/Checking_that_your_web_site_is_working_properly": { + "modified": "2020-07-16T22:35:49.891Z", + "contributors": [ + "chrisdavidmills", + "Andrew_Pfeiffer", + "Jeremie", + "hbloomer", + "notabene" + ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_styling": { - "modified": "2020-08-06T07:26:25.263Z", - "contributors": ["chrisdavidmills"] + "Learn_web_development/Howto/Tools_and_setup/How_do_you_host_your_website_on_Google_App_Engine": { + "modified": "2020-07-16T22:35:52.276Z", + "contributors": ["Mori", "anton-mladenov", "4a-j"] }, - "Learn/Tools_and_testing/Cross_browser_testing": { - "modified": "2020-07-16T22:38:59.026Z", + "Learn_web_development/Howto/Tools_and_setup/How_much_does_it_cost": { + "modified": "2020-07-16T22:35:45.160Z", "contributors": [ + "A.Faturechi", "chrisdavidmills", - "kruschk", - "ShivamGoyal1899", - "wbamberg", - "arai", - "prograamer", - "hadleyel", - "jpetto", - "melaniemkwon" + "zzhhbyt1", + "jdblischak", + "Gordon-Bleu", + "1pankajmehra1", + "surigangula", + "kamleshrao", + "jswisher", + "david_ross", + "ggarrickk", + "AdityaPareek", + "martinmcbride", + "Jeremie", + "Andrew_Pfeiffer", + "notabene" ] }, - "Learn/Tools_and_testing/Cross_browser_testing/Accessibility": { - "modified": "2020-11-20T02:03:56.749Z", + "Learn_web_development/Howto/Tools_and_setup/Upload_files_to_a_web_server": { + "modified": "2020-10-02T01:23:10.799Z", "contributors": [ "hamishwillee", + "GCCSheep", + "Sturmtiger", + "amitananddotxyz", "chrisdavidmills", - "ckashby", - "kruschk", - "eduDevCF", - "mharty", - "nackman", - "joestrouth1", - "stephaniehobson", - "conradbeach", - "joelcollinsdc", - "granttchart" + "SphinxKnight", + "MandyuTOJ", + "xfq", + "Jett", + "Jeremie", + "Andrew_Pfeiffer", + "notabene", + "RufusCSharma", + "rhyne24" ] }, - "Learn/Tools_and_testing/Cross_browser_testing/Automated_testing": { - "modified": "2020-09-24T05:59:58.777Z", + "Learn_web_development/Howto/Tools_and_setup/Using_GitHub_pages": { + "modified": "2020-07-16T22:35:51.402Z", + "contributors": ["chrisdavidmills", "junBryl", "Mori"] + }, + "Learn_web_development/Howto/Tools_and_setup/What_are_browser_developer_tools": { + "modified": "2020-07-16T22:35:47.122Z", "contributors": [ - "Rafael_Green", - "lancespa", + "avivmu", + "SphinxKnight", + "HappyFeelMore", "chrisdavidmills", - "avocadoras", - "kruschk", - "jochendelabie", - "pulkitsharma07", - "harshitpaul", - "wbamberg", - "ElvisZhu", - "KateSturmey", - "stephaniehobson", - "Memija", - "iigmir", - "SpikePy", - "jpetto", - "billmcgee" + "walkerbrown", + "danpoynor", + "irenesmith", + "vorian", + "ifilin", + "Jeremie", + "Andrew_Pfeiffer", + "chrisdavidmills-github" ] }, - "Learn/Tools_and_testing/Cross_browser_testing/Feature_detection": { - "modified": "2020-07-16T22:39:22.516Z", + "Learn_web_development/Howto/Tools_and_setup/What_software_do_I_need": { + "modified": "2020-11-24T08:00:20.552Z", "contributors": [ - "ckashby", - "mfuji09", + "mmaimma", + "hamishwillee", "chrisdavidmills", - "Igor-Sangin", - "kruschk", - "tkrotoff", - "jcsahnwaldt", - "stephaniehobson", - "EdwardB" + "ikabia078", + "Rafasu", + "ptrpl4", + "himanshuxd", + "riceh3", + "ashwingadhave", + "amitananddotxyz", + "mfuji09", + "maishakins", + "fac42", + "adamjimenez", + "christianbueno1", + "DerAppelt", + "bhanubais", + "MaiDoan", + "SphinxKnight", + "thalapaneni", + "Jeremie", + "Andrew_Pfeiffer", + "kklein" ] }, - "Learn/Tools_and_testing/Cross_browser_testing/HTML_and_CSS": { - "modified": "2020-07-16T22:39:08.959Z", + "Learn_web_development/Howto/Tools_and_setup/set_up_a_local_testing_server": { + "modified": "2020-07-16T22:35:52.628Z", "contributors": [ "chrisdavidmills", + "bhushan_mdn", + "Aviatorpaal", + "yunchispk", "ckashby", - "kruschk", - "Sheppy", - "rahul73690", - "enejko", - "stephaniehobson", - "EdwardB", - "abenkovskii", - "qdirks" + "diegoza", + "rax02", + "mmhyamin", + "pascalchevrel", + "RealTheOne", + "zixuan75", + "suterj", + "jaikathuria", + "jgathogo", + "Mateen" ] }, - "Learn/Tools_and_testing/Cross_browser_testing/Introduction": { - "modified": "2020-07-28T13:00:54.765Z", + "Learn_web_development/Howto/Web_mechanics/How_does_the_Internet_work": { + "modified": "2020-07-16T22:35:35.495Z", "contributors": [ - "liviulupei", - "ckashby", - "kruschk", - "joanmdavis", - "daphnemcrossbrowser", + "MSabry809", "chrisdavidmills", - "jochendelabie", - "sadhvisingh1", - "joaner", - "Navin77", - "stephaniehobson", - "qdirks", - "Soupedenuit", - "jainarpit", - "RyanWng", - "0000marcell", - "xfq" + "codewilling", + "1653099", + "imba-tjd", + "SphinxKnight", + "Tan_", + "kjerinic", + "alattalatta", + "wattydev", + "diogeneshamilton", + "Jeremie", + "Andrew_Pfeiffer", + "kscarfone" ] }, - "Learn/Tools_and_testing/Cross_browser_testing/JavaScript": { - "modified": "2020-11-23T02:24:03.962Z", + "Learn_web_development/Howto/Web_mechanics/What_are_hyperlinks": { + "modified": "2020-07-16T22:35:42.757Z", "contributors": [ - "hamishwillee", + "Patricio_Raschetti", + "maishakins", "chrisdavidmills", - "ckashby", - "kruschk", - "stephaniehobson", - "EdwardB", - "qdirks", - "Juggernaughtt" + "vicvarfon", + "bhanubais", + "hoosteeno", + "samlaf", + "Jeremie", + "jsx", + "ronakkhunt", + "Andrew_Pfeiffer", + "teoli", + "tseamans" ] }, - "Learn/Tools_and_testing/Cross_browser_testing/Testing_strategies": { - "modified": "2020-09-21T04:00:14.366Z", + "Learn_web_development/Howto/Web_mechanics/What_is_a_URL": { + "modified": "2020-07-16T22:35:28.894Z", "contributors": [ - "Rafael_Green", "chrisdavidmills", - "liviulupei", - "AndriiMaliuta", - "kruschk", - "agnelvishal", - "jochendelabie", - "harshitpaul", - "Navin77", - "stephaniehobson", - "aarondev8917", - "EdwardB", - "tsotetsi", - "qdirks", - "0000marcell" + "mfuji09", + "DallasBelt", + "Sheppy", + "tsaddique389", + "AbidRiaz", + "SphinxKnight", + "yzfdjzwl", + "bhanubais", + "Jeremie", + "jsx", + "ronakkhunt", + "Andrew_Pfeiffer", + "amygori", + "teoli" ] }, - "Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment": { - "modified": "2020-12-07T06:18:26.264Z", + "Learn_web_development/Howto/Web_mechanics/What_is_a_domain_name": { + "modified": "2020-12-11T01:30:52.383Z", "contributors": [ - "BBC-Radiance", - "Rafael_Green", - "UnorthodoxThing", + "darby", + "ronal.candia11", + "ezzep66", + "NateEag", "chrisdavidmills", - "liviulupei", + "amitananddotxyz", + "jsx", + "gavenkoa", + "elcamlost", + "davidwhy", "SphinxKnight", - "sjain1992", - "kruschk", - "jochendelabie", - "harshitpaul", - "mburleigh", - "gabolato", - "stephaniehobson", - "martianyi", - "paulinas" + "Jeremie", + "ronakkhunt", + "Andrew_Pfeiffer", + "notabene" ] }, - "Learn/Tools_and_testing/GitHub": { - "modified": "2020-12-04T13:34:02.479Z", - "contributors": ["Arpitgoyalgg", "chrisdavidmills"] - }, - "Learn/Tools_and_testing/Understanding_client-side_tools": { - "modified": "2020-07-16T22:39:26.098Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/Tools_and_testing/Understanding_client-side_tools/Command_line": { - "modified": "2020-10-18T22:03:14.400Z", - "contributors": ["ralaplines1988", "Callahad", "chrisdavidmills"] - }, - "Learn/Tools_and_testing/Understanding_client-side_tools/Deployment": { - "modified": "2020-07-16T22:39:30.122Z", - "contributors": ["chrisdavidmills"] - }, - "Learn/Tools_and_testing/Understanding_client-side_tools/Introducing_complete_toolchain": { - "modified": "2020-07-16T22:39:29.585Z", - "contributors": ["nicolasguasca1", "chrisdavidmills", "escattone"] - }, - "Learn/Tools_and_testing/Understanding_client-side_tools/Overview": { - "modified": "2020-07-16T22:39:26.907Z", - "contributors": ["chrisdavidmills", "edieblu", "davidshq"] - }, - "Learn/Tools_and_testing/Understanding_client-side_tools/Package_management": { - "modified": "2020-08-29T04:11:46.834Z", + "Learn_web_development/Howto/Web_mechanics/What_is_a_web_server": { + "modified": "2020-11-21T18:13:05.008Z", "contributors": [ - "Rafael_Green", - "drklee3", - "nicolasguasca1", - "mrmowji", + "Havardox", + "ohaver", + "hussamkhatib", + "gbui", + "mfuji09", + "fiver22", "chrisdavidmills", - "ralaplines1988", - "remy" + "ashishcodes", + "surigangula", + "xclusivesaurav", + "iigmir", + "ggarrickk", + "StarkBjorn", + "thanhvk", + "hierror", + "Jeremie", + "Andrew_Pfeiffer", + "sboroda", + "klez" ] }, "MDN": { @@ -23290,10 +22884,6 @@ "modified": "2020-10-15T22:15:39.291Z", "contributors": ["sideshowbarker", "mfuji09", "jpmedley"] }, - "Web/API/CSS_Counter_Styles": { - "modified": "2020-10-15T21:49:22.666Z", - "contributors": ["wbamberg", "fscholz", "Sebastianz"] - }, "Web/API/CSS_Font_Loading_API": { "modified": "2020-12-13T22:13:07.232Z", "contributors": [ @@ -37659,16 +37249,6 @@ "chharvey" ] }, - "Web/API/HTMLDetailsElement/toggle_event": { - "modified": "2020-10-15T22:11:35.633Z", - "contributors": [ - "mfuji09", - "wbamberg", - "chrisdavidmills", - "mfluehr", - "Claas" - ] - }, "Web/API/HTMLDialogElement": { "modified": "2020-10-15T21:29:11.074Z", "contributors": [ @@ -37689,6 +37269,18 @@ "dhodder" ] }, + "Web/API/HTMLDialogElement/cancel_event": { + "modified": "2020-10-15T21:43:04.572Z", + "contributors": [ + "mfuji09", + "fscholz", + "mfluehr", + "sideshowbarker", + "fgwang", + "rolfedh", + "cvrebert" + ] + }, "Web/API/HTMLDialogElement/close": { "modified": "2020-10-15T21:52:17.118Z", "contributors": ["fscholz", "chrisdavidmills"] @@ -40223,10 +39815,6 @@ "modified": "2020-10-15T22:17:50.694Z", "contributors": ["neoncitylights", "sideshowbarker", "ExE-Boss"] }, - "Web/API/HTMLMenuItemElement": { - "modified": "2020-10-15T22:17:51.039Z", - "contributors": ["neoncitylights", "ExE-Boss"] - }, "Web/API/HTMLMetaElement": { "modified": "2020-10-15T21:14:34.115Z", "contributors": [ @@ -41797,10 +41385,6 @@ "Enn" ] }, - "Web/API/HTML_Sanitizer_API": { - "modified": "2020-12-13T12:18:13.088Z", - "contributors": ["Rumyra"] - }, "Web/API/HashChangeEvent": { "modified": "2020-10-15T21:29:11.207Z", "contributors": [ @@ -43306,18 +42890,6 @@ "grendel" ] }, - "Web/API/IDBTransaction/ObjectStoreNames": { - "modified": "2020-10-15T21:38:17.526Z", - "contributors": [ - "sideshowbarker", - "fscholz", - "jpmedley", - "teoli", - "inexorabletash", - "rolfedh", - "chrisdavidmills" - ] - }, "Web/API/IDBTransaction/abort": { "modified": "2020-10-15T21:25:22.557Z", "contributors": [ @@ -43409,6 +42981,18 @@ "jwhitlock" ] }, + "Web/API/IDBTransaction/objectStoreNames": { + "modified": "2020-10-15T21:38:17.526Z", + "contributors": [ + "sideshowbarker", + "fscholz", + "jpmedley", + "teoli", + "inexorabletash", + "rolfedh", + "chrisdavidmills" + ] + }, "Web/API/IDBVersionChangeEvent": { "modified": "2020-10-15T21:10:02.067Z", "contributors": [ @@ -48285,36 +47869,6 @@ "BenoitL" ] }, - "Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers": { - "modified": "2019-03-24T00:11:06.750Z", - "contributors": [ - "sundevour", - "chrisdavidmills", - "thgh", - "ObooChin", - "Jeremie", - "groovecoder", - "teoli", - "staktrace", - "ethertank", - "Skierpage", - "sebmozilla", - "Crash", - "tito", - "Brettz9", - "Chris Chittleborough", - "Sheppy", - "Dabear", - "Mgjbot", - "Varmaa", - "Potappo", - "Shamrin", - "Dmose", - "MarkFinkle", - "Mcaruso", - "Callek" - ] - }, "Web/API/Navigator/requestMediaKeySystemAccess": { "modified": "2020-10-15T21:34:19.510Z", "contributors": [ @@ -54212,10 +53766,6 @@ "modified": "2020-10-15T22:17:12.448Z", "contributors": ["Sheppy"] }, - "Web/API/RTCInboundRtpStreamStats/firCount": { - "modified": "2020-10-15T22:17:11.433Z", - "contributors": ["Sheppy"] - }, "Web/API/RTCInboundRtpStreamStats/framesDecoded": { "modified": "2020-10-15T22:17:13.510Z", "contributors": ["Sheppy"] @@ -54240,10 +53790,6 @@ "modified": "2020-10-15T22:17:13.721Z", "contributors": ["Sheppy"] }, - "Web/API/RTCInboundRtpStreamStats/pliCount": { - "modified": "2020-10-15T22:17:12.837Z", - "contributors": ["Sheppy"] - }, "Web/API/RTCInboundRtpStreamStats/qpSum": { "modified": "2020-10-15T22:17:11.627Z", "contributors": ["Sheppy"] @@ -54260,10 +53806,6 @@ "modified": "2020-10-15T22:17:11.541Z", "contributors": ["Sheppy"] }, - "Web/API/RTCInboundRtpStreamStats/trackId": { - "modified": "2020-10-15T22:17:14.607Z", - "contributors": ["Sheppy"] - }, "Web/API/RTCOutboundRtpStreamStats": { "modified": "2020-10-15T22:17:14.806Z", "contributors": ["Sheppy"] @@ -54272,10 +53814,6 @@ "modified": "2020-10-15T22:17:15.805Z", "contributors": ["Sheppy"] }, - "Web/API/RTCOutboundRtpStreamStats/firCount": { - "modified": "2020-10-15T22:17:15.817Z", - "contributors": ["Sheppy"] - }, "Web/API/RTCOutboundRtpStreamStats/framesEncoded": { "modified": "2020-10-15T22:17:15.823Z", "contributors": ["Sheppy"] @@ -54288,10 +53826,6 @@ "modified": "2020-10-15T22:17:15.897Z", "contributors": ["Sheppy"] }, - "Web/API/RTCOutboundRtpStreamStats/pliCount": { - "modified": "2020-10-15T22:17:15.902Z", - "contributors": ["Sheppy"] - }, "Web/API/RTCOutboundRtpStreamStats/qpSum": { "modified": "2020-10-15T22:17:16.058Z", "contributors": ["Sheppy"] @@ -54874,46 +54408,6 @@ "modified": "2020-10-15T22:33:11.726Z", "contributors": ["Sheppy"] }, - "Web/API/RTCRtpStreamStats": { - "modified": "2020-10-15T22:08:41.982Z", - "contributors": ["Sheppy"] - }, - "Web/API/RTCRtpStreamStats/codecId": { - "modified": "2020-10-15T22:08:51.438Z", - "contributors": ["Sheppy"] - }, - "Web/API/RTCRtpStreamStats/firCount": { - "modified": "2020-10-15T22:08:58.560Z", - "contributors": ["sideshowbarker", "Sheppy"] - }, - "Web/API/RTCRtpStreamStats/kind": { - "modified": "2020-10-15T22:08:45.154Z", - "contributors": ["Sheppy"] - }, - "Web/API/RTCRtpStreamStats/nackCount": { - "modified": "2020-10-15T22:08:57.931Z", - "contributors": ["sideshowbarker", "Sheppy"] - }, - "Web/API/RTCRtpStreamStats/pliCount": { - "modified": "2020-10-15T22:08:57.878Z", - "contributors": ["sideshowbarker", "Sheppy"] - }, - "Web/API/RTCRtpStreamStats/qpSum": { - "modified": "2020-10-15T22:09:08.932Z", - "contributors": ["sideshowbarker", "Sheppy"] - }, - "Web/API/RTCRtpStreamStats/ssrc": { - "modified": "2020-10-15T22:08:52.056Z", - "contributors": ["Sheppy"] - }, - "Web/API/RTCRtpStreamStats/trackId": { - "modified": "2020-10-15T22:08:53.310Z", - "contributors": ["Sheppy"] - }, - "Web/API/RTCRtpStreamStats/transportId": { - "modified": "2020-10-15T22:08:53.444Z", - "contributors": ["Sheppy"] - }, "Web/API/RTCRtpTransceiver": { "modified": "2020-10-15T22:01:30.406Z", "contributors": ["Sheppy", "bwc", "fscholz"] @@ -57175,7 +56669,7 @@ "Jeremie" ] }, - "Web/API/SVGRect/The__X__property": { + "Web/API/SVGRect/x": { "modified": "2019-03-23T22:36:30.180Z", "contributors": ["rolfedh", "essymo"] }, @@ -57405,18 +56899,6 @@ "Jeremie" ] }, - "Web/API/Sanitizer": { - "modified": "2020-12-13T12:17:05.573Z", - "contributors": ["Rumyra"] - }, - "Web/API/Sanitizer/Sanitizer": { - "modified": "2020-12-13T12:21:15.482Z", - "contributors": ["Rumyra"] - }, - "Web/API/Sanitizer/sanitize": { - "modified": "2020-12-13T12:25:31.511Z", - "contributors": ["Rumyra"] - }, "Web/API/Screen": { "modified": "2020-10-15T21:29:41.001Z", "contributors": [ @@ -60986,7 +60468,7 @@ "modified": "2020-10-15T22:19:30.879Z", "contributors": ["estelle"] }, - "Web/API/TextTrackList/removeTrack_event": { + "Web/API/TextTrackList/removetrack_event": { "modified": "2020-12-10T09:43:31.584Z", "contributors": ["bershanskiy", "estelle"] }, @@ -62351,7 +61833,7 @@ "modified": "2020-10-15T22:05:43.254Z", "contributors": ["TomasZorvan", "jpmedley"] }, - "Web/API/USBDevice/productID": { + "Web/API/USBDevice/productId": { "modified": "2020-12-10T10:51:11.704Z", "contributors": ["bershanskiy", "jpmedley"] }, @@ -62399,7 +61881,7 @@ "modified": "2020-10-15T22:05:43.953Z", "contributors": ["jpmedley"] }, - "Web/API/USBDevice/vendorID": { + "Web/API/USBDevice/vendorId": { "modified": "2020-12-10T10:52:35.047Z", "contributors": ["bershanskiy", "jpmedley"] }, @@ -65360,6 +64842,17 @@ "rachelnabors" ] }, + "Web/API/Web_Animations_API/Tips": { + "modified": "2020-06-24T00:29:43.861Z", + "contributors": [ + "emilhem", + "chrisdavidmills", + "morenoh149", + "tzthet", + "mfluehr", + "Sheppy" + ] + }, "Web/API/Web_Animations_API/Using_the_Web_Animations_API": { "modified": "2020-11-11T08:34:26.031Z", "contributors": [ @@ -65469,10 +64962,6 @@ "modified": "2020-06-16T14:49:12.422Z", "contributors": ["jmcantrell", "DianeLooney", "Sheppy"] }, - "Web/API/Web_Audio_API/Tools": { - "modified": "2019-03-18T21:37:44.787Z", - "contributors": ["chrisdavidmills", "alien35", "Sheppy"] - }, "Web/API/Web_Audio_API/Using_AudioWorklet": { "modified": "2020-10-11T19:28:05.402Z", "contributors": ["hamishwillee", "tcveatch", "Sheppy"] @@ -66558,6 +66047,63 @@ "McGurk" ] }, + "Web/API/Window/clearInterval": { + "modified": "2020-10-15T21:11:20.211Z", + "contributors": [ + "mileskrell", + "fscholz", + "erikadoyle", + "chrisdavidmills", + "Sheppy", + "cvrebert", + "dyagmin", + "teoli", + "Mats.Palmgren", + "ethertank", + "ziyunfei", + "fusionchess", + "qfel13", + "Nickolay", + "Taken", + "Mgjbot", + "BenoitL", + "Maian", + "JesseW" + ] + }, + "Web/API/Window/clearTimeout": { + "modified": "2020-10-15T21:09:05.105Z", + "contributors": [ + "mfuji09", + "Skimmy", + "fscholz", + "erikadoyle", + "nmve", + "chrisdavidmills", + "DLuPi", + "Sheppy", + "tiffling", + "tvthatsme", + "Qwick", + "githue", + "hweeks", + "teoli", + "AshfaqHossain", + "basemnassar11", + "ethertank", + "fusionchess", + "jyasskin", + "karbassi", + "qfel13", + "kswedberg", + "Mgjbot", + "Nickolay", + "BenoitL", + "Dria", + "Callek", + "JesseW" + ] + }, "Web/API/Window/close": { "modified": "2020-10-15T21:06:33.895Z", "contributors": [ @@ -66658,6 +66204,28 @@ "modified": "2020-10-15T22:16:13.286Z", "contributors": ["mfuji09", "wbamberg"] }, + "Web/API/Window/createImageBitmap": { + "modified": "2020-10-15T21:37:56.407Z", + "contributors": [ + "gmanpersona", + "mfluehr", + "styfle", + "fscholz", + "DomenicDenicola", + "Halfman", + "jaffathecake", + "jpmedley", + "Brettz9", + "MatthiasSaihttam", + "nmve", + "chrisdavidmills", + "yisibl", + "DrRataplan", + "zeird", + "Kaku", + "adria" + ] + }, "Web/API/Window/crossOriginIsolated": { "modified": "2020-10-15T22:25:16.295Z", "contributors": ["ExE-Boss", "chrisdavidmills"] @@ -68262,6 +67830,16 @@ "JesseW" ] }, + "Web/API/Window/queueMicrotask": { + "modified": "2020-10-15T22:21:06.789Z", + "contributors": [ + "Kaiido", + "chrisdavidmills", + "Sheppy", + "zbjornson", + "DomenicDenicola" + ] + }, "Web/API/Window/rejectionhandled_event": { "modified": "2020-10-15T21:44:33.123Z", "contributors": [ @@ -68878,6 +68456,177 @@ "McGurk" ] }, + "Web/API/Window/setInterval": { + "modified": "2020-12-09T23:19:41.310Z", + "contributors": [ + "uzair-ashraf", + "SpartaSixZero", + "albedoa", + "xgqfrms", + "ankit.sangwan1999", + "Soul", + "yuedou", + "mfuji09", + "Sheppy", + "a18wheeler", + "jabcreations", + "severo", + "GusGold", + "fscholz", + "leolavaur", + "livthomas", + "chrisdavidmills", + "Anto_Rich", + "telunc", + "erikadoyle", + "nmve", + "kdex", + "teatimesoft", + "fusionchess", + "mathiasvr", + "mikemsq", + "michals", + "Jorge.villalobos", + "maybe", + "rolfedh", + "bmwolfington", + "dreamweiver", + "Sebastianz", + "dyagmin", + "jeff_mangus", + "teoli", + "kertof", + "DDERRSS", + "jonathansampson", + "iamanupmenon", + "ethertank", + "m_gol", + "dancrumb", + "brunoais", + "BrianDiPalma", + "McGurk", + "wooptoo", + "jjoemb", + "Jesse", + "HarrisonM", + "ehynds", + "Nickolay", + "aeon", + "Ceth", + "1212jtraceur", + "Mgjbot", + "Jabez", + "BenoitL", + "Dria", + "JesseW" + ] + }, + "Web/API/Window/setTimeout": { + "modified": "2020-10-15T21:06:28.845Z", + "contributors": [ + "chrisdavidmills", + "stevejay", + "jesup", + "mfuji09", + "Verdinjoshua26", + "KennethKinLum", + "Loadmaster", + "severo", + "dagolinuxoid", + "Reci-z", + "mfluehr", + "connorshea", + "bno", + "fscholz", + "Jessidhia", + "molsson", + "Axnyff", + "JonathanPool", + "cPlayIt", + "abacabadabacaba", + "erikadoyle", + "pcat", + "isayme", + "lvnam96", + "nmve", + "Phe0nix", + "adria", + "bakotaco", + "Sheppy", + "mikemsq", + "rnewman", + "JanH", + "Robg1", + "andyearnshaw", + "Victor_Homyakov", + "adatapost", + "y2chen", + "benaston", + "Nickolay", + "lostpebble", + "Sebastianz", + "yan", + "ashanbh", + "WebReflection", + "aaronglenn", + "dyagmin", + "teoli", + "kscarfone", + "neaumusic", + "dcporter", + "rsp", + "LoTD", + "Minat", + "Penny", + "jensen", + "morello", + "jscape", + "jonathansampson", + "acornejo", + "lamy", + "iamanupmenon", + "jswisher", + "Zenorbi", + "mattlunn", + "m_gol", + "adriaanlabusc", + "MattBrubeck", + "wlach", + "fusionchess", + "brunoais", + "mattflaschen", + "BrianDiPalma", + "ethertank", + "Tonymec", + "JaredWein", + "Jesse", + "karbassi", + "BYK", + "Pointy", + "timemachine3030", + "qfel13", + "intgr", + "nimbu", + "paul.irish", + "Bzbarsky", + "ezaretskiy", + "Tiller", + "Matej Lednar", + "Ms2ger", + "vor0nwe", + "Wjjohnst", + "Ceth", + "PointedEars", + "RobG", + "Dorward", + "Mgjbot", + "Wing", + "Jabez", + "BenoitL", + "Dria", + "JesseW" + ] + }, "Web/API/Window/showDirectoryPicker": { "modified": "2020-12-12T15:32:04.243Z", "contributors": ["Rumyra"] @@ -68914,29 +68663,6 @@ "modified": "2020-12-12T15:24:20.525Z", "contributors": ["Rumyra"] }, - "Web/API/Window/sidebar": { - "modified": "2020-10-15T21:13:22.168Z", - "contributors": [ - "wbamberg", - "mfuji09", - "chrisdavidmills", - "connorshea", - "IsaacSchemm", - "teoli", - "fscholz", - "iamanupmenon", - "kohei.yoshino", - "Sheppy", - "ethertank", - "Mnyromyr", - "Deltab", - "Mgjbot", - "Jabez", - "Nickolay", - "Dria", - "JesseW" - ] - }, "Web/API/Window/sizeToContent": { "modified": "2020-12-03T06:15:03.807Z", "contributors": [ @@ -69123,23 +68849,6 @@ "louisremi" ] }, - "Web/API/Window/updateCommands": { - "modified": "2020-10-15T21:15:49.672Z", - "contributors": [ - "mfuji09", - "lucian95", - "SphinxKnight", - "forivall", - "fscholz", - "MHasan", - "teoli", - "iamanupmenon", - "utkarsh_shah", - "Sheppy", - "Mgjbot", - "Maian" - ] - }, "Web/API/Window/visualViewport": { "modified": "2020-10-15T21:57:59.692Z", "contributors": ["chrisdavidmills", "connorshea", "jpmedley"] @@ -71022,63 +70731,6 @@ "modified": "2019-03-23T23:49:50.843Z", "contributors": ["SphinxKnight", "teoli", "Mgjbot", "Sebuls", "JdeValk"] }, - "Web/API/clearInterval": { - "modified": "2020-10-15T21:11:20.211Z", - "contributors": [ - "mileskrell", - "fscholz", - "erikadoyle", - "chrisdavidmills", - "Sheppy", - "cvrebert", - "dyagmin", - "teoli", - "Mats.Palmgren", - "ethertank", - "ziyunfei", - "fusionchess", - "qfel13", - "Nickolay", - "Taken", - "Mgjbot", - "BenoitL", - "Maian", - "JesseW" - ] - }, - "Web/API/clearTimeout": { - "modified": "2020-10-15T21:09:05.105Z", - "contributors": [ - "mfuji09", - "Skimmy", - "fscholz", - "erikadoyle", - "nmve", - "chrisdavidmills", - "DLuPi", - "Sheppy", - "tiffling", - "tvthatsme", - "Qwick", - "githue", - "hweeks", - "teoli", - "AshfaqHossain", - "basemnassar11", - "ethertank", - "fusionchess", - "jyasskin", - "karbassi", - "qfel13", - "kswedberg", - "Mgjbot", - "Nickolay", - "BenoitL", - "Dria", - "Callek", - "JesseW" - ] - }, "Web/API/console": { "modified": "2020-10-15T21:05:51.622Z", "contributors": [ @@ -71177,6 +70829,17 @@ "wbamberg" ] }, + "Web/API/console/countReset_static": { + "modified": "2020-10-15T22:07:02.809Z", + "contributors": [ + "alattalatta", + "tbetous", + "anonyco", + "SebinNyshkim", + "irenesmith", + "chrisdavidmills" + ] + }, "Web/API/console/count_static": { "modified": "2020-10-15T21:26:42.386Z", "contributors": [ @@ -71202,17 +70865,6 @@ "wbamberg" ] }, - "Web/API/console/countreset_static": { - "modified": "2020-10-15T22:07:02.809Z", - "contributors": [ - "alattalatta", - "tbetous", - "anonyco", - "SebinNyshkim", - "irenesmith", - "chrisdavidmills" - ] - }, "Web/API/console/debug_static": { "modified": "2020-10-15T22:14:46.390Z", "contributors": ["alattalatta", "Sheppy"] @@ -71285,15 +70937,12 @@ "myakura" ] }, - "Web/API/console/group_static": { - "modified": "2020-10-15T21:02:26.181Z", + "Web/API/console/groupCollapsed_static": { + "modified": "2020-10-15T21:02:41.489Z", "contributors": [ "connorshea", "fscholz", - "Tigt", - "sumnerevans", - "zekrom-vale", - "arronei", + "bkdotcom", "valtlai", "erikadoyle", "Sebastianz", @@ -71302,18 +70951,17 @@ "teoli", "ESWAT", "kscarfone", - "Khodaidad_Basharmand", "Sheppy", "ziyunfei", "myakura" ] }, - "Web/API/console/groupcollapsed_static": { - "modified": "2020-10-15T21:02:41.489Z", + "Web/API/console/groupEnd_static": { + "modified": "2020-10-15T21:05:49.953Z", "contributors": [ "connorshea", "fscholz", - "bkdotcom", + "arronei", "valtlai", "erikadoyle", "Sebastianz", @@ -71322,16 +70970,19 @@ "teoli", "ESWAT", "kscarfone", + "Khodaidad_Basharmand", "Sheppy", - "ziyunfei", "myakura" ] }, - "Web/API/console/groupend_static": { - "modified": "2020-10-15T21:05:49.953Z", + "Web/API/console/group_static": { + "modified": "2020-10-15T21:02:26.181Z", "contributors": [ "connorshea", "fscholz", + "Tigt", + "sumnerevans", + "zekrom-vale", "arronei", "valtlai", "erikadoyle", @@ -71343,6 +70994,7 @@ "kscarfone", "Khodaidad_Basharmand", "Sheppy", + "ziyunfei", "myakura" ] }, @@ -71405,41 +71057,41 @@ "myakura" ] }, - "Web/API/console/profile_static": { - "modified": "2020-10-15T21:37:02.369Z", + "Web/API/console/profileEnd_static": { + "modified": "2020-10-15T21:37:04.872Z", "contributors": [ + "ExE-Boss", + "julienw", "fscholz", - "Jedipedia", + "maybe", "sideshowbarker", "LurN", - "hibiya", + "crazy2be", "arronei", "valtlai", "erikadoyle", "janv8000", "Sebastianz", "chrisdavidmills", - "dongyuwei", "openmando", "wbamberg" ] }, - "Web/API/console/profileend_static": { - "modified": "2020-10-15T21:37:04.872Z", + "Web/API/console/profile_static": { + "modified": "2020-10-15T21:37:02.369Z", "contributors": [ - "ExE-Boss", - "julienw", "fscholz", - "maybe", + "Jedipedia", "sideshowbarker", "LurN", - "crazy2be", + "hibiya", "arronei", "valtlai", "erikadoyle", "janv8000", "Sebastianz", "chrisdavidmills", + "dongyuwei", "openmando", "wbamberg" ] @@ -71461,32 +71113,7 @@ "fitzgen" ] }, - "Web/API/console/time_static": { - "modified": "2020-10-15T21:05:49.142Z", - "contributors": [ - "mfuji09", - "irenesmith", - "connorshea", - "fscholz", - "sideshowbarker", - "LurN", - "arronei", - "valtlai", - "Daniel Hug", - "erikadoyle", - "silverwind", - "Sebastianz", - "chrisdavidmills", - "cvrebert", - "teoli", - "styfle", - "kscarfone", - "Khodaidad_Basharmand", - "Sheppy", - "myakura" - ] - }, - "Web/API/console/timeend_static": { + "Web/API/console/timeEnd_static": { "modified": "2020-10-15T21:05:49.965Z", "contributors": [ "irenesmith", @@ -71511,11 +71138,11 @@ "myakura" ] }, - "Web/API/console/timelog_static": { + "Web/API/console/timeLog_static": { "modified": "2020-10-15T22:07:02.547Z", "contributors": ["plexcom1", "irenesmith", "chrisdavidmills"] }, - "Web/API/console/timestamp_static": { + "Web/API/console/timeStamp_static": { "modified": "2020-10-15T21:37:04.975Z", "contributors": [ "vinyldarkscratch", @@ -71529,6 +71156,31 @@ "wbamberg" ] }, + "Web/API/console/time_static": { + "modified": "2020-10-15T21:05:49.142Z", + "contributors": [ + "mfuji09", + "irenesmith", + "connorshea", + "fscholz", + "sideshowbarker", + "LurN", + "arronei", + "valtlai", + "Daniel Hug", + "erikadoyle", + "silverwind", + "Sebastianz", + "chrisdavidmills", + "cvrebert", + "teoli", + "styfle", + "kscarfone", + "Khodaidad_Basharmand", + "Sheppy", + "myakura" + ] + }, "Web/API/console/trace_static": { "modified": "2020-10-15T21:05:04.282Z", "contributors": [ @@ -71573,209 +71225,6 @@ "myakura" ] }, - "Web/API/createImageBitmap": { - "modified": "2020-10-15T21:37:56.407Z", - "contributors": [ - "gmanpersona", - "mfluehr", - "styfle", - "fscholz", - "DomenicDenicola", - "Halfman", - "jaffathecake", - "jpmedley", - "Brettz9", - "MatthiasSaihttam", - "nmve", - "chrisdavidmills", - "yisibl", - "DrRataplan", - "zeird", - "Kaku", - "adria" - ] - }, - "Web/API/queueMicrotask": { - "modified": "2020-10-15T22:21:06.789Z", - "contributors": [ - "Kaiido", - "chrisdavidmills", - "Sheppy", - "zbjornson", - "DomenicDenicola" - ] - }, - "Web/API/setInterval": { - "modified": "2020-12-09T23:19:41.310Z", - "contributors": [ - "uzair-ashraf", - "SpartaSixZero", - "albedoa", - "xgqfrms", - "ankit.sangwan1999", - "Soul", - "yuedou", - "mfuji09", - "Sheppy", - "a18wheeler", - "jabcreations", - "severo", - "GusGold", - "fscholz", - "leolavaur", - "livthomas", - "chrisdavidmills", - "Anto_Rich", - "telunc", - "erikadoyle", - "nmve", - "kdex", - "teatimesoft", - "fusionchess", - "mathiasvr", - "mikemsq", - "michals", - "Jorge.villalobos", - "maybe", - "rolfedh", - "bmwolfington", - "dreamweiver", - "Sebastianz", - "dyagmin", - "jeff_mangus", - "teoli", - "kertof", - "DDERRSS", - "jonathansampson", - "iamanupmenon", - "ethertank", - "m_gol", - "dancrumb", - "brunoais", - "BrianDiPalma", - "McGurk", - "wooptoo", - "jjoemb", - "Jesse", - "HarrisonM", - "ehynds", - "Nickolay", - "aeon", - "Ceth", - "1212jtraceur", - "Mgjbot", - "Jabez", - "BenoitL", - "Dria", - "JesseW" - ] - }, - "Web/API/setTimeout": { - "modified": "2020-10-15T21:06:28.845Z", - "contributors": [ - "chrisdavidmills", - "stevejay", - "jesup", - "mfuji09", - "Verdinjoshua26", - "KennethKinLum", - "Loadmaster", - "severo", - "dagolinuxoid", - "Reci-z", - "mfluehr", - "connorshea", - "bno", - "fscholz", - "Jessidhia", - "molsson", - "Axnyff", - "JonathanPool", - "cPlayIt", - "abacabadabacaba", - "erikadoyle", - "pcat", - "isayme", - "lvnam96", - "nmve", - "Phe0nix", - "adria", - "bakotaco", - "Sheppy", - "mikemsq", - "rnewman", - "JanH", - "Robg1", - "andyearnshaw", - "Victor_Homyakov", - "adatapost", - "y2chen", - "benaston", - "Nickolay", - "lostpebble", - "Sebastianz", - "yan", - "ashanbh", - "WebReflection", - "aaronglenn", - "dyagmin", - "teoli", - "kscarfone", - "neaumusic", - "dcporter", - "rsp", - "LoTD", - "Minat", - "Penny", - "jensen", - "morello", - "jscape", - "jonathansampson", - "acornejo", - "lamy", - "iamanupmenon", - "jswisher", - "Zenorbi", - "mattlunn", - "m_gol", - "adriaanlabusc", - "MattBrubeck", - "wlach", - "fusionchess", - "brunoais", - "mattflaschen", - "BrianDiPalma", - "ethertank", - "Tonymec", - "JaredWein", - "Jesse", - "karbassi", - "BYK", - "Pointy", - "timemachine3030", - "qfel13", - "intgr", - "nimbu", - "paul.irish", - "Bzbarsky", - "ezaretskiy", - "Tiller", - "Matej Lednar", - "Ms2ger", - "vor0nwe", - "Wjjohnst", - "Ceth", - "PointedEars", - "RobG", - "Dorward", - "Mgjbot", - "Wing", - "Jabez", - "BenoitL", - "Dria", - "JesseW" - ] - }, "Web/Accessibility": { "modified": "2020-11-24T02:54:45.381Z", "contributors": [ @@ -76535,17 +75984,6 @@ "teoli" ] }, - "Web/CSS/CSS_animations/Tips": { - "modified": "2020-06-24T00:29:43.861Z", - "contributors": [ - "emilhem", - "chrisdavidmills", - "morenoh149", - "tzthet", - "mfluehr", - "Sheppy" - ] - }, "Web/CSS/CSS_animations/Using_CSS_animations": { "modified": "2020-12-11T07:06:02.745Z", "contributors": [ @@ -77713,10 +77151,6 @@ "modified": "2020-07-07T17:49:27.435Z", "contributors": ["wbamberg", "evaferreira"] }, - "Web/CSS/CSS_miscellaneous": { - "modified": "2020-07-07T12:23:17.703Z", - "contributors": ["wbamberg", "mfluehr", "Tigt", "teoli"] - }, "Web/CSS/CSS_motion_path": { "modified": "2020-10-15T21:38:36.015Z", "contributors": [ @@ -86894,10 +86328,6 @@ "Heycam" ] }, - "Web/CSS/masonry-auto-flow": { - "modified": "2020-11-12T04:50:46.255Z", - "contributors": ["rachelandrew", "chrisdavidmills"] - }, "Web/CSS/math-style": { "modified": "2020-12-12T22:36:34.292Z", "contributors": ["sideshowbarker", "chrisdavidmills", "rachelandrew"] @@ -90734,7 +90164,7 @@ "teoli" ] }, - "Web/CSS/url": { + "Web/CSS/url_value": { "modified": "2020-12-11T11:18:33.507Z", "contributors": [ "rachelandrew", @@ -95764,28 +95194,6 @@ "Yann Dìnendal" ] }, - "Web/HTML/Element/menuitem": { - "modified": "2020-11-28T12:02:05.463Z", - "contributors": [ - "mfuji09", - "alattalatta", - "sideshowbarker", - "ExE-Boss", - "Rococolate", - "Sheppy", - "jakubfiala", - "teoli", - "whirr.click", - "rudiedirkx", - "Sebastianz", - "slimsag", - "Sheepy", - "dhodder", - "Alhadis", - "kscarfone", - "kohei.yoshino" - ] - }, "Web/HTML/Element/meta": { "modified": "2020-10-15T21:07:10.507Z", "contributors": [ @@ -98410,6 +97818,44 @@ "codemetro" ] }, + "Web/HTML/Responsive_images": { + "modified": "2020-10-19T20:26:21.787Z", + "contributors": [ + "hamishwillee", + "sideshowbarker", + "thjbd", + "chrisdavidmills", + "atd30", + "jpfkd", + "ramiy", + "JonDevOps", + "choudh70", + "tayyabalishan", + "Blacktodreamlight", + "Koavf", + "clairealyssa", + "eremis101", + "MNizam0802", + "oyenirat", + "Flimm", + "thenoelman", + "chelBot", + "dharkness", + "demont93", + "akshat12", + "imi-tating", + "msufa", + "Audaciter", + "stephaniehobson", + "dtrueman", + "goto.prototype", + "richardzacur", + "Sheppy", + "Jeremie", + "hbloomer", + "Andrew_Pfeiffer" + ] + }, "Web/HTML/microformats": { "modified": "2019-10-10T12:40:00.802Z", "contributors": [ @@ -98521,196 +97967,6 @@ "teoli" ] }, - "Web/HTTP/Basics_of_HTTP": { - "modified": "2020-09-30T16:56:11.613Z", - "contributors": [ - "firstnamelastname", - "chrisdavidmills", - "frattinijulien29", - "lbd1607", - "mfuji09", - "ExE-Boss", - "funghorn", - "BunnyWong", - "cissoid", - "teoli", - "fscholz" - ] - }, - "Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs": { - "modified": "2020-02-15T14:08:06.893Z", - "contributors": [ - "francoraphael", - "ExE-Boss", - "Alpha", - "MechaLynx", - "nckx", - "xavdid", - "david_ross", - "fscholz", - "teoli", - "chrisdavidmills", - "ethertank", - "dbruant" - ] - }, - "Web/HTTP/Basics_of_HTTP/Data_URLs": { - "modified": "2020-11-21T14:56:28.316Z", - "contributors": [ - "simon04", - "idleray", - "pygy", - "cvickery", - "hinell", - "mfuji09", - "aetonsi", - "Peppesterest", - "Alpha", - "chrisdavidmills", - "Ethan", - "fscholz", - "DomenicDenicola", - "HTMLValidator", - "teoli", - "Jonathan_Watt", - "oldhill", - "groovecoder", - "ajdavdson1", - "ModMaker", - "jsx", - "Butterfly87", - "Delapouite", - "valentin.gosu", - "Sheppy", - "Emmanuel_Vallois", - "Null", - "jwhittaker", - "kscarfone", - "fusionchess", - "brianblakely", - "ziyunfei", - "Rob W", - "nK0de", - "jreschke", - "boaz", - "toja", - "Sevenspade", - "Sephr", - "Nickolay", - "Np", - "Waldo" - ] - }, - "Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP": { - "modified": "2020-09-25T15:02:32.165Z", - "contributors": [ - "mfuji09", - "darby", - "VitalyKrenel", - "Sgeo", - "ivnl", - "ExE-Boss", - "chrisdavidmills", - "zhaoyingdu", - "maruhgar", - "BunnyWong", - "rileym7", - "stephaniehobson", - "Yonkai", - "xcoderreal", - "fscholz", - "Cameron-Riecan", - "david_ross", - "DarrenLester", - "teoli" - ] - }, - "Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web": { - "modified": "2020-11-16T01:23:20.622Z", - "contributors": [ - "prajaraksh", - "Sheppy", - "evansdianga", - "danielgormly", - "neel-hektor", - "david_ross", - "teoli", - "fscholz" - ] - }, - "Web/HTTP/Basics_of_HTTP/MIME_types": { - "modified": "2019-11-03T12:37:56.527Z", - "contributors": [ - "mfuji09", - "Sheppy", - "Alhadis", - "awwright", - "sideshowbarker", - "ExE-Boss", - "Dzonny", - "Tigt", - "tribak", - "amitgupta15", - "nakkurt", - "MicroJes", - "snuggs", - "d4nyll", - "xgqfrms-GitHub", - "dawsonbotsford", - "g-patel", - "strattadb", - "david_ross", - "DJ-Leith", - "teoli", - "fscholz" - ] - }, - "Web/HTTP/Basics_of_HTTP/MIME_types/Common_types": { - "modified": "2020-05-01T18:32:40.232Z", - "contributors": [ - "broofa", - "sideshowbarker", - "chrisdavidmills", - "charj", - "SphinxKnight", - "mathiasbynens", - "Dorward", - "igorskyflyer", - "rctgamer3", - "mfuji09", - "Coder-Arjun", - "joeyparrish", - "devex23", - "ignaloidas", - "aadityataparia", - "dunglas", - "gabriele.bernuzzi", - "evilpie", - "xiaopanke", - "Loadmaster", - "iamakidilam", - "snuggs", - "Sheppy", - "Thw0rted", - "Krenair", - "Vikaash", - "Naesten", - "dave.shaheen", - "alettieri", - "NaveenDA", - "AbsoluteZERO", - "BrienA", - "kyrylkov", - "choury", - "david_ross", - "fscholz", - "teoli" - ] - }, - "Web/HTTP/Basics_of_HTTP/Resource_URLs": { - "modified": "2019-03-23T22:04:02.489Z", - "contributors": ["ExE-Boss", "gmierz", "David_B", "chrisdavidmills"] - }, "Web/HTTP/Browser_detection_using_the_user_agent": { "modified": "2020-07-11T11:53:53.804Z", "contributors": [ @@ -99090,24 +98346,6 @@ "teoli" ] }, - "Web/HTTP/Configuring_servers_for_Ogg_media": { - "modified": "2019-09-10T19:10:12.290Z", - "contributors": [ - "Sheppy", - "fscholz", - "bholley", - "chrisdavidmills", - "teoli", - "kscarfone", - "Dikrib", - "Sephr", - "BenB", - "cpearce", - "Zcorpan", - "Varmaa", - "sorinelpusti" - ] - }, "Web/HTTP/Connection_management_in_HTTP_1.x": { "modified": "2019-11-27T11:05:48.174Z", "contributors": [ @@ -99233,6 +98471,30 @@ "fscholz" ] }, + "Web/HTTP/Evolution_of_HTTP": { + "modified": "2020-09-25T15:02:32.165Z", + "contributors": [ + "mfuji09", + "darby", + "VitalyKrenel", + "Sgeo", + "ivnl", + "ExE-Boss", + "chrisdavidmills", + "zhaoyingdu", + "maruhgar", + "BunnyWong", + "rileym7", + "stephaniehobson", + "Yonkai", + "xcoderreal", + "fscholz", + "Cameron-Riecan", + "david_ross", + "DarrenLester", + "teoli" + ] + }, "Web/HTTP/Headers": { "modified": "2020-11-16T08:22:37.817Z", "contributors": [ @@ -99288,17 +98550,6 @@ "modified": "2020-10-15T22:23:14.705Z", "contributors": ["j9t", "Malvoz", "bershanskiy"] }, - "Web/HTTP/Headers/Accept-Charset": { - "modified": "2020-10-15T21:48:48.975Z", - "contributors": [ - "mfuji09", - "Tigt", - "fscholz", - "ottaviano", - "Minstel", - "teoli" - ] - }, "Web/HTTP/Headers/Accept-Encoding": { "modified": "2020-12-04T01:30:23.076Z", "contributors": [ @@ -99914,10 +99165,6 @@ "modified": "2020-10-15T22:23:16.957Z", "contributors": ["mfuji09", "darby", "bershanskiy"] }, - "Web/HTTP/Headers/Digest": { - "modified": "2020-10-15T22:21:39.013Z", - "contributors": ["ioggstream", "wbamberg"] - }, "Web/HTTP/Headers/ETag": { "modified": "2020-10-15T21:48:49.703Z", "contributors": [ @@ -100127,10 +99374,6 @@ "modified": "2020-10-15T22:10:28.577Z", "contributors": ["bershanskiy", "Sheppy", "fscholz"] }, - "Web/HTTP/Headers/Permissions-Policy/battery": { - "modified": "2020-10-15T22:24:54.886Z", - "contributors": ["mfuji09", "Malvoz", "bershanskiy"] - }, "Web/HTTP/Headers/Permissions-Policy/camera": { "modified": "2020-10-15T22:10:24.420Z", "contributors": ["bershanskiy", "Sheppy", "fscholz"] @@ -100543,10 +99786,6 @@ "teoli" ] }, - "Web/HTTP/Headers/Want-Digest": { - "modified": "2020-10-15T22:21:41.704Z", - "contributors": ["wbamberg"] - }, "Web/HTTP/Headers/Warning": { "modified": "2020-10-15T21:48:41.051Z", "contributors": ["chrisdavidmills", "janslow", "PotHix", "fscholz"] @@ -100665,6 +99904,75 @@ "fscholz" ] }, + "Web/HTTP/MIME_types": { + "modified": "2019-11-03T12:37:56.527Z", + "contributors": [ + "mfuji09", + "Sheppy", + "Alhadis", + "awwright", + "sideshowbarker", + "ExE-Boss", + "Dzonny", + "Tigt", + "tribak", + "amitgupta15", + "nakkurt", + "MicroJes", + "snuggs", + "d4nyll", + "xgqfrms-GitHub", + "dawsonbotsford", + "g-patel", + "strattadb", + "david_ross", + "DJ-Leith", + "teoli", + "fscholz" + ] + }, + "Web/HTTP/MIME_types/Common_types": { + "modified": "2020-05-01T18:32:40.232Z", + "contributors": [ + "broofa", + "sideshowbarker", + "chrisdavidmills", + "charj", + "SphinxKnight", + "mathiasbynens", + "Dorward", + "igorskyflyer", + "rctgamer3", + "mfuji09", + "Coder-Arjun", + "joeyparrish", + "devex23", + "ignaloidas", + "aadityataparia", + "dunglas", + "gabriele.bernuzzi", + "evilpie", + "xiaopanke", + "Loadmaster", + "iamakidilam", + "snuggs", + "Sheppy", + "Thw0rted", + "Krenair", + "Vikaash", + "Naesten", + "dave.shaheen", + "alettieri", + "NaveenDA", + "AbsoluteZERO", + "BrienA", + "kyrylkov", + "choury", + "david_ross", + "fscholz", + "teoli" + ] + }, "Web/HTTP/Messages": { "modified": "2020-12-03T23:53:07.614Z", "contributors": [ @@ -100968,10 +100276,6 @@ "teoli" ] }, - "Web/HTTP/Resources_and_URIs": { - "modified": "2020-03-26T15:01:51.205Z", - "contributors": ["pettll", "Sheppy", "teoli", "fscholz"] - }, "Web/HTTP/Resources_and_specifications": { "modified": "2019-07-29T05:42:08.432Z", "contributors": [ @@ -122857,6 +122161,24 @@ "modified": "2020-06-01T18:13:20.323Z", "contributors": ["atd30", "Sheppy"] }, + "Web/Media/Formats/Configuring_servers_for_Ogg_media": { + "modified": "2019-09-10T19:10:12.290Z", + "contributors": [ + "Sheppy", + "fscholz", + "bholley", + "chrisdavidmills", + "teoli", + "kscarfone", + "Dikrib", + "Sephr", + "BenB", + "cpearce", + "Zcorpan", + "Varmaa", + "sorinelpusti" + ] + }, "Web/Media/Formats/Containers": { "modified": "2020-04-18T23:02:19.945Z", "contributors": ["sideshowbarker", "FFV47", "Sheppy", "mukhtar-github"] @@ -126082,14 +125404,6 @@ "NickolayBot" ] }, - "Web/SVG/Server-configuration": { - "modified": "2019-01-16T14:51:10.788Z", - "contributors": ["velvel53", "Jeremie", "Jonathan_Watt"] - }, - "Web/SVG/Specification_Deviations": { - "modified": "2019-01-16T15:58:58.296Z", - "contributors": ["Jeremie", "Jonathan_Watt", "Nickolay"] - }, "Web/SVG/Tutorial": { "modified": "2019-03-18T20:53:00.828Z", "contributors": [ @@ -126996,6 +126310,87 @@ "alispivak" ] }, + "Web/URI": { + "modified": "2020-11-16T01:23:20.622Z", + "contributors": [ + "prajaraksh", + "Sheppy", + "evansdianga", + "danielgormly", + "neel-hektor", + "david_ross", + "teoli", + "fscholz" + ] + }, + "Web/URI/Authority/Choosing_between_www_and_non-www_URLs": { + "modified": "2020-02-15T14:08:06.893Z", + "contributors": [ + "francoraphael", + "ExE-Boss", + "Alpha", + "MechaLynx", + "nckx", + "xavdid", + "david_ross", + "fscholz", + "teoli", + "chrisdavidmills", + "ethertank", + "dbruant" + ] + }, + "Web/URI/Schemes/data": { + "modified": "2020-11-21T14:56:28.316Z", + "contributors": [ + "simon04", + "idleray", + "pygy", + "cvickery", + "hinell", + "mfuji09", + "aetonsi", + "Peppesterest", + "Alpha", + "chrisdavidmills", + "Ethan", + "fscholz", + "DomenicDenicola", + "HTMLValidator", + "teoli", + "Jonathan_Watt", + "oldhill", + "groovecoder", + "ajdavdson1", + "ModMaker", + "jsx", + "Butterfly87", + "Delapouite", + "valentin.gosu", + "Sheppy", + "Emmanuel_Vallois", + "Null", + "jwhittaker", + "kscarfone", + "fusionchess", + "brianblakely", + "ziyunfei", + "Rob W", + "nK0de", + "jreschke", + "boaz", + "toja", + "Sevenspade", + "Sephr", + "Nickolay", + "Np", + "Waldo" + ] + }, + "Web/URI/Schemes/resource": { + "modified": "2019-03-23T22:04:02.489Z", + "contributors": ["ExE-Boss", "gmierz", "David_B", "chrisdavidmills"] + }, "Web/WebDriver": { "modified": "2020-10-15T22:03:17.889Z", "contributors": [ @@ -127052,7 +126447,7 @@ "modified": "2020-10-15T22:03:22.611Z", "contributors": ["fscholz", "ato"] }, - "Web/WebDriver/Commands/New_Window": { + "Web/WebDriver/Commands/NewWindow": { "modified": "2020-10-15T22:14:19.358Z", "contributors": ["Whimboo"] }, @@ -128307,72 +127702,6 @@ "CitizenK" ] }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference": { - "modified": "2019-03-23T23:43:14.702Z", - "contributors": [ - "dkocho4", - "SphinxKnight", - "chrisdavidmills", - "Fredchat", - "Mgjbot", - "Ptak82", - "Jonnyq", - "Nickolay", - "CitizenK" - ] - }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor": { - "modified": "2019-01-16T16:26:05.963Z", - "contributors": ["chrisdavidmills", "CitizenK"] - }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/ancestor-or-self": { - "modified": "2019-01-16T16:26:05.411Z", - "contributors": ["chrisdavidmills", "CitizenK"] - }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/attribute": { - "modified": "2019-01-16T16:26:13.305Z", - "contributors": ["chrisdavidmills", "CitizenK"] - }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/child": { - "modified": "2019-01-16T16:26:57.704Z", - "contributors": ["chrisdavidmills", "CitizenK"] - }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant": { - "modified": "2019-01-16T16:26:05.386Z", - "contributors": ["chrisdavidmills", "CitizenK"] - }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/descendant-or-self": { - "modified": "2019-01-16T16:26:09.576Z", - "contributors": ["chrisdavidmills", "CitizenK"] - }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following": { - "modified": "2019-01-16T16:26:07.299Z", - "contributors": ["chrisdavidmills", "CitizenK"] - }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/following-sibling": { - "modified": "2019-01-16T16:26:09.611Z", - "contributors": ["chrisdavidmills", "CitizenK"] - }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/namespace": { - "modified": "2019-01-16T16:26:09.593Z", - "contributors": ["chrisdavidmills", "CitizenK"] - }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/parent": { - "modified": "2019-01-16T16:26:07.282Z", - "contributors": ["chrisdavidmills", "CitizenK"] - }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding": { - "modified": "2019-01-16T16:26:10.264Z", - "contributors": ["chrisdavidmills", "CitizenK"] - }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/preceding-sibling": { - "modified": "2019-01-16T16:26:06.971Z", - "contributors": ["chrisdavidmills", "CitizenK"] - }, - "Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Axes/self": { - "modified": "2019-01-16T16:26:11.469Z", - "contributors": ["chrisdavidmills", "CitizenK"] - }, "WebAssembly": { "modified": "2020-10-15T21:51:43.373Z", "contributors": [ diff --git a/files/en-us/games/anatomy/index.md b/files/en-us/games/anatomy/index.md index 5ef08f33cb6e705..ee5fee68589152d 100644 --- a/files/en-us/games/anatomy/index.md +++ b/files/en-us/games/anatomy/index.md @@ -38,7 +38,8 @@ window.main = () => { main(); // Start the cycle ``` -> **Note:** In each of the `main()` methods discussed here, we schedule a new `requestAnimationFrame` before performing our loop contents. That is not by accident and it is considered best practice. Calling the next `requestAnimationFrame` early ensures the browser receives it on time to plan accordingly even if your current frame misses its VSync window. +> [!NOTE] +> In each of the `main()` methods discussed here, we schedule a new `requestAnimationFrame` before performing our loop contents. That is not by accident and it is considered best practice. Calling the next `requestAnimationFrame` early ensures the browser receives it on time to plan accordingly even if your current frame misses its VSync window. The above chunk of code has two statements. The first statement creates a function as a global variable called `main()`. This function does some work and also tells the browser to call itself next frame with `window.requestAnimationFrame()`. The second statement calls the `main()` function, defined in the first statement. Because `main()` is called once in the second statement and every call of it places itself in the queue of things to do next frame, `main()` is synchronized to your frame rate. @@ -75,7 +76,8 @@ There are two obvious issues with our previous main loop: `main()` pollutes the When the browser comes across this IIFE, it will define your main loop and immediately queue it for the next frame. It will not be attached to any object and `main` (or `main()` for methods) will be a valid unused name in the rest of the application, free to be defined as something else. -> **Note:** In practice, it is more common to prevent the next `requestAnimationFrame()` with an if-statement, rather than calling `cancelAnimationFrame()`. +> [!NOTE] +> In practice, it is more common to prevent the next `requestAnimationFrame()` with an if-statement, rather than calling `cancelAnimationFrame()`. For the second issue, stopping the main loop, you will need to cancel the call to `main()` with {{ domxref("window.cancelAnimationFrame()") }}. You will need to pass `cancelAnimationFrame()` the ID token given by `requestAnimationFrame()` when it was last called. Let us assume that your game's functions and variables are built on a namespace that you called `MyGame`. Expanding our last example, the main loop would now look like: @@ -125,7 +127,8 @@ You can think about developing realtime applications as having a budget of time While we are on the topic of budgeting time, many web browsers have a tool called _High Resolution Time_. The {{jsxref("Date")}} object is no longer the recognized method for timing events because it is very imprecise and can be modified by the system clock. High Resolution Time, on the other hand, counts the number of milliseconds since `navigationStart` (when the previous document is unloaded). This value is returned as a decimal number accurate to a thousandth of a millisecond. It is known as a {{ domxref("DOMHighResTimeStamp") }} but, for all intents and purposes, consider it a floating point number. -> **Note:** Systems (hardware or software) that are not capable of microsecond accuracy are allowed to provide millisecond accuracy as a minimum. They should provide 0.001ms accuracy if they are capable of it, however. +> [!NOTE] +> Systems (hardware or software) that are not capable of microsecond accuracy are allowed to provide millisecond accuracy as a minimum. They should provide 0.001ms accuracy if they are capable of it, however. This value is not too useful alone, since it is relative to a fairly uninteresting event, but it can be subtracted from another timestamp to accurately and precisely determine how much time elapsed between those two points. To acquire one of these timestamps, you can call `window.performance.now()` and store the result as a variable. @@ -165,7 +168,8 @@ Several other optimizations are possible and it really depends on what your game You will need to make hard decisions about your main loop: how to simulate the accurate progress of time. If you demand per-frame control then you will need to determine how frequently your game will update and draw. You might even want update and draw to occur at different rates. You will also need to consider how gracefully your game will fail if the user's system cannot keep up with the workload. Let us start by assuming that you will handle user input and update the game state every time you draw. We will branch out later. -> **Note:** Changing how your main loop deals with time is a debugging nightmare, everywhere. Think about your needs carefully before working on your main loop. +> [!NOTE] +> Changing how your main loop deals with time is a debugging nightmare, everywhere. Think about your needs carefully before working on your main loop. ### What most browser games should look like @@ -210,17 +214,17 @@ Other methods of tackling the problem exist. One common technique is to update the simulation at a constant frequency and then draw as much (or as little) of the actual frames as possible. The update method can continue looping without care about what the user sees. The draw method can view the last update and when it happened. Since draw knows when it represents, and the simulation time for the last update, it can predict a plausible frame to draw for the user. It does not matter whether this is more frequent than the official update loop (or even less frequent). The update method sets checkpoints and, as frequently as the system allows, the render method draws instants of time around them. There are many ways to separate the update method in web standards: -- Draw on `requestAnimationFrame` and update on a {{ domxref("setInterval()") }} or {{ domxref("setTimeout()") }}. +- Draw on `requestAnimationFrame()` and update on a {{domxref("Window.setInterval", "setInterval()")}} or {{domxref("Window.setTimeout", "setTimeout()")}}. - This uses processor time even when unfocused or minimized, hogs the main thread, and is probably an artifact of traditional game loops (but it is simple.) -- Draw on `requestAnimationFrame` and update on a `setInterval` or `setTimeout` in a [Web Worker](/en-US/docs/Web/API/Web_Workers_API/Using_web_workers). +- Draw on `requestAnimationFrame()` and update on a {{domxref("WorkerGlobalScope.setInterval", "setInterval()")}} or {{domxref("WorkerGlobalScope.setTimeout", "setTimeout()")}} in a [Web Worker](/en-US/docs/Web/API/Web_Workers_API/Using_web_workers). - This is the same as above, except update does not hog the main thread (nor does the main thread hog it). This is a more complex solution, and might be too much overhead for simple updates. -- Draw on `requestAnimationFrame` and use it to poke a Web Worker containing the update method with the number of ticks to compute, if any. +- Draw on `requestAnimationFrame()` and use it to poke a Web Worker containing the update method with the number of ticks to compute, if any. - - This sleeps until `requestAnimationFrame` is called and does not pollute the main thread, plus you are not relying on old-fashioned methods. Again, this is a bit more complex than the previous two options, and _starting_ each update will be blocked until the browser decides to fire rAF callbacks. + - This sleeps until `requestAnimationFrame()` is called and does not pollute the main thread, plus you are not relying on old-fashioned methods. Again, this is a bit more complex than the previous two options, and _starting_ each update will be blocked until the browser decides to fire rAF callbacks. Each of these methods have similar tradeoffs: @@ -232,7 +236,8 @@ Each of these methods have similar tradeoffs: A separate update and draw method could look like the following example. For the sake of demonstration, the example is based on the third bullet point, just without using Web Workers for readability (and, let's be honest, writability). -> **Warning:** This example, specifically, is in need of technical review. +> [!WARNING] +> This example, specifically, is in need of technical review. ```js diff --git a/files/en-us/games/index.md b/files/en-us/games/index.md index 0138768f7e1db12..41272c331fe4301 100644 --- a/files/en-us/games/index.md +++ b/files/en-us/games/index.md @@ -14,7 +14,8 @@ Welcome to the MDN game development center! In this area of the site, we provide We've also included a reference section so you can easily find information about all the most common APIs used in game development. -> **Note:** Creating games on the web draws on a number of core web technologies such as HTML, CSS, and JavaScript. The [Learning Area](/en-US/docs/Learn) is a good place to go to get started with the basics. +> [!NOTE] +> Creating games on the web draws on a number of core web technologies such as HTML, CSS, and JavaScript. The [Learn web development](/en-US/docs/Learn_web_development) section is a good place to go to get started with the basics. ## Port native games to the Web diff --git a/files/en-us/games/publishing_games/game_distribution/index.md b/files/en-us/games/publishing_games/game_distribution/index.md index 37eeb04b1308e84..5654bc8ce97455a 100644 --- a/files/en-us/games/publishing_games/game_distribution/index.md +++ b/files/en-us/games/publishing_games/game_distribution/index.md @@ -56,7 +56,7 @@ If you're working on a side project just for fun, then leaving the source open w As the name may suggest, publishers can handle the publishing of your game for you. Whether you should go that way or not depends on what your plan is for having your game distributed: Do you want to send it wherever possible, or do you want to restrict its presence to those who've bought an [exclusive license](/en-US/docs/Games/Publishing_games/Game_monetization)? It's up to you. Consider various options, experiment and conclude. Publishers will be explained in more detail in the [monetization](/en-US/docs/Games/Publishing_games/Game_monetization) article. -There are also independent portals collecting interesting games like [HTML5Games.com](https://html5games.com/), [GameArter.com](https://www.gamearter.com/), [MarketJS.com](https://www.marketjs.com/), [GameFlare](https://distribution.gameflare.com/), [GameDistribution.com](https://gamedistribution.com/), [Poki](https://developers.poki.com/), or [CrazyGames](https://developer.crazygames.com) where you can send your game in and it will get some natural promotion because of the big traffic those sites attract. Some of these take your files and host them on their server, whereas others only link to your website or embed your game on their site. Such exposure may just provide [promotion](/en-US/docs/Games/Publishing_games/Game_promotion) for your game, or if you have adverts shown beside your game (or other money making options) it may also provide monetization. +There are also independent portals collecting interesting games like [HTML5Games.com](https://html5games.com/), [GameArter.com](https://www.gamearter.com/), [MarketJS.com](https://www.marketjs.com/), [GameFlare](https://distribution.gameflare.com/), [GameDistribution.com](https://gamedistribution.com/), [GameSaturn.com](https://gamesaturn.com/), [Playmox.com](https://www.playmox.com/), [Poki](https://developers.poki.com/), or [CrazyGames](https://developer.crazygames.com/) where you can send your game in and it will get some natural promotion because of the big traffic those sites attract. Some of these take your files and host them on their server, whereas others only link to your website or embed your game on their site. Such exposure may just provide [promotion](/en-US/docs/Games/Publishing_games/Game_promotion) for your game, or if you have adverts shown beside your game (or other money making options) it may also provide monetization. ### Web and native stores @@ -66,13 +66,14 @@ You can also upload and publish your game directly to different types of stores, Let's see what the available options are regarding the marketplaces/stores available for different platforms and operating systems. -> **Note:** These are the most popular distribution platforms, but this is not to say these are the only options. Instead of trying to add your game to the thousands of others in the iOS store say, you can also try to find a niche and promote directly to the audience who would be interested in your games. Your creativity is critical here. +> [!NOTE] +> These are the most popular distribution platforms, but this is not to say these are the only options. Instead of trying to add your game to the thousands of others in the iOS store say, you can also try to find a niche and promote directly to the audience who would be interested in your games. Your creativity is critical here. ### Web stores The best platforms for HTML games are Web-based stores. You can prepare games for web stores by adding a manifest file and other data, such as resources, in a zipped package. Not many modifications of the game itself are required. -- [The Chrome Web Store](https://chrome.google.com/webstore/) is also an attractive option — again, having a manifest file ready, zipping your game and filling in the online submission form is about all that's required. +- [The Chrome Web Store](https://chromewebstore.google.com/) is also an attractive option — again, having a manifest file ready, zipping your game and filling in the online submission form is about all that's required. ### Native mobile stores @@ -92,14 +93,14 @@ After you've covered Steam, there's plenty of buzz around initiatives like [Humb ## Packaging games -The web is the first and the best choice for HTML games, but if you want to reach a broader audience and distribute your game in a closed ecosystem, you still can do that by packaging it. The good thing is that you don't need a few separate teams working on the same game for different platforms — you can build it once and use tools like [Phonegap](https://phonegap.com/) or [CocoonIO](http://cocoon.io/) to package the game for native stores. The resulting packages are usually pretty reliable, but you should still test them and be on the lookout for small issues or bugs to fix. +The web is the first and the best choice for HTML games, but if you want to reach a broader audience and distribute your game in a closed ecosystem, you still can do that by packaging it. The good thing is that you don't need a few separate teams working on the same game for different platforms — you can build it once and use tools to package the game for native stores. The resulting packages are usually pretty reliable, but you should still test them and be on the lookout for small issues or bugs to fix. ### Available tools There are various tools to choose from depending on your skills, preferred frameworks or target platforms. It's all about picking the best tool for your particular task. - [Ejecta](https://impactjs.com/ejecta) — a tool specifically for packaging games created with [the ImpactJS](https://impactjs.com/) framework for iOS, built by the ImpactJS author. It provides seamless integration with ImpactJS, but it supports only one framework and app store. -- [NW.js](https://nwjs.io/) — formerly known as Node-Webkit, this is the first choice when it comes to building a desktop game that works on Windows, Mac and Linux. The distributions are packaged with the WebKit engine to provide rendering on any platform. +- [NW.js](https://nwjs.io/) — formerly known as Node-WebKit, this is the first choice when it comes to building a desktop game that works on Windows, Mac and Linux. The distributions are packaged with the WebKit engine to provide rendering on any platform. Other alternative tools are: diff --git a/files/en-us/games/publishing_games/game_promotion/index.md b/files/en-us/games/publishing_games/game_promotion/index.md index 336de1afbca3567..d795f788be4dad3 100644 --- a/files/en-us/games/publishing_games/game_promotion/index.md +++ b/files/en-us/games/publishing_games/game_promotion/index.md @@ -10,7 +10,7 @@ Developing and publishing your game is not enough. You have to let the world kno ## Competitions -Taking part in [competitions](https://www.bestsevenreviews.com/category/online-games/) will not only level up your gamedev skills and let you meet new devs to befriend and learn from — and it will also get you involved in the community. If you make a good game for a competition and win some prizes in the process your game will automatically be promoted by the organizers and other attendees. You'll be rich and famous, or so they say. +Taking part in competitions will not only level up your gamedev skills and let you meet new devs to befriend and learn from — and it will also get you involved in the community. If you make a good game for a competition and win some prizes in the process your game will automatically be promoted by the organizers and other attendees. You'll be rich and famous, or so they say. Many great games get started as a quick, sloppy demo submitted to a competition. If both the idea and the execution are good enough, you will succeed. Plus competitions generally require games to follow a mandatory theme, so you can get creative around a theme if you are stuck for ideas. @@ -20,7 +20,7 @@ You should definitely create your own website containing all the information abo You should also blog about everything related to your gamedev activities. Write about your development process, nasty bugs you encounter, funny stories, lessons learned, and the ups and downs of being a game developer. Continually publishing information about your games will help educate others, increase your reputation in the community, and further improve SEO. A further option is to publish [monthly reports](https://end3r.com/blog/?s=monthly+report) that summarize all your progress — it helps you see what you've accomplished throughout the month and what's still left to do, and it keeps reminding people that your game is coming out soon — building buzz is always good. -While you can create your website from scratch, there are also tools that can help make the process easier. [ManaKeep](https://manakeep.com) is a website builder made for indie game developers and provides a great starting point to create your website. [Presskit()](https://dopresskit.com/) is a press kit builder that helps you create a press page to share with the media. +While you can create your website from scratch, there are also tools that can help make the process easier. [ManaKeep](https://manakeep.com/) is a website builder made for indie game developers and provides a great starting point to create your website. [Presskit()](https://dopresskit.com/) is a press kit builder that helps you create a press page to share with the media. ## Social media diff --git a/files/en-us/games/techniques/2d_collision_detection/index.md b/files/en-us/games/techniques/2d_collision_detection/index.md index e733db70b2d3aa3..a9e53f8130e1474 100644 --- a/files/en-us/games/techniques/2d_collision_detection/index.md +++ b/files/en-us/games/techniques/2d_collision_detection/index.md @@ -137,7 +137,7 @@ Implementing SAT is out of scope for this page so see the recommended tutorials 1. [Separating Axis Theorem (SAT) explanation](https://www.sevenson.com.au/programming/sat/) 2. [Collision detection and response](https://www.metanetsoftware.com/technique/tutorialA.html) -3. [Collision detection Using the Separating Axis Theorem](https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169) +3. [Collision detection Using the Separating Axis Theorem](https://code.tutsplus.com/collision-detection-using-the-separating-axis-theorem--gamedev-169t) 4. [SAT (Separating Axis Theorem)](https://dyn4j.org/2010/01/sat/) 5. [Separating Axis Theorem](https://programmerart.weebly.com/separating-axis-theorem.html) @@ -147,7 +147,7 @@ While some of these algorithms for collision detection are simple enough to calc ### Broad Phase -Broad phase should give you a list of entities that _could_ be colliding. This can be implemented with a spacial data structure that will give you a rough idea of where the entity exists and what exist around it. Some examples of spacial data structures are Quad Trees, R-Trees or a Spacial Hashmap. +Broad phase should give you a list of entities that _could_ be colliding. This can be implemented with a spatial data structure that will give you a rough idea of where the entity exists and what exist around it. Some examples of spatial data structures are Quad Trees, R-Trees or a Spatial Hashmap. ### Narrow Phase diff --git a/files/en-us/games/techniques/3d_collision_detection/bounding_volume_collision_detection_with_three.js/index.md b/files/en-us/games/techniques/3d_collision_detection/bounding_volume_collision_detection_with_three.js/index.md index 57595b6dadf0301..08471c4b905aafb 100644 --- a/files/en-us/games/techniques/3d_collision_detection/bounding_volume_collision_detection_with_three.js/index.md +++ b/files/en-us/games/techniques/3d_collision_detection/bounding_volume_collision_detection_with_three.js/index.md @@ -29,7 +29,8 @@ const knotBBox = new Box3( ); ``` -> **Note:** The `boundingBox` property takes the `Geometry` itself as reference, and not the `Mesh`. So any transformations such as scale, position, etc. applied to the `Mesh` will be ignored while computing the calculating box. +> [!NOTE] +> The `boundingBox` property takes the `Geometry` itself as reference, and not the `Mesh`. So any transformations such as scale, position, etc. applied to the `Mesh` will be ignored while computing the calculating box. A more simple alternative that fixes the previous issue is to set those boundaries later on with `Box3.setFromObject`, which will compute the dimensions taking into account a 3D entity's **transformations _and_ any child meshes** as well. @@ -85,7 +86,8 @@ The **`Box3.intersectsBox`** method is available for performing this test. knotBbox.intersectsBox(otherBox); ``` -> **Note:** This is different from the `Box3.containsBox` method, which checks whether the Box3 _fully_ wraps another one. +> [!NOTE] +> This is different from the `Box3.containsBox` method, which checks whether the Box3 _fully_ wraps another one. #### `Sphere` vs. `Sphere` diff --git a/files/en-us/games/techniques/3d_collision_detection/index.md b/files/en-us/games/techniques/3d_collision_detection/index.md index 8a999c2b6c67f53..868338e34eb135a 100644 --- a/files/en-us/games/techniques/3d_collision_detection/index.md +++ b/files/en-us/games/techniques/3d_collision_detection/index.md @@ -18,7 +18,8 @@ The **axis-aligned constraint** is there because of performance reasons. The ove ![Animated rotating knot showing the virtual rectangular box shrink and grow as the knots rotates within it. The box does not rotate.](rotating_knot.gif) -> **Note:** Check out the [Bounding Volumes with Three.js](/en-US/docs/Games/Techniques/3D_collision_detection/Bounding_volume_collision_detection_with_THREE.js) article to see a practical implementation of this technique. +> [!NOTE] +> Check out the [Bounding Volumes with Three.js](/en-US/docs/Games/Techniques/3D_collision_detection/Bounding_volume_collision_detection_with_THREE.js) article to see a practical implementation of this technique. ### Point vs. AABB @@ -106,7 +107,8 @@ function isPointInsideSphere(point, sphere) { } ``` -> **Note:** The code above features a square root, which can be expensive to calculate. An easy optimization to avoid it consists of comparing the squared distance with the squared radius, so the optimized equation would instead involve `distanceSqr < sphere.radius * sphere.radius`. +> [!NOTE] +> The code above features a square root, which can be expensive to calculate. An easy optimization to avoid it consists of comparing the squared distance with the squared radius, so the optimized equation would instead involve `distanceSqr < sphere.radius * sphere.radius`. ### Sphere vs. sphere @@ -177,5 +179,5 @@ Related articles on MDN: External resources: -- [Simple intersection tests for games](https://www.gamedeveloper.com/disciplines/simple-intersection-tests-for-games) on Game Developer +- [Simple intersection tests for games](https://www.gamedeveloper.com/game-platforms/simple-intersection-tests-for-games) on Game Developer - [Bounding volume](https://en.wikipedia.org/wiki/Bounding_volume) on Wikipedia diff --git a/files/en-us/games/techniques/3d_on_the_web/basic_theory/index.md b/files/en-us/games/techniques/3d_on_the_web/basic_theory/index.md index c528dea5667c8eb..cac1a42ae374f84 100644 --- a/files/en-us/games/techniques/3d_on_the_web/basic_theory/index.md +++ b/files/en-us/games/techniques/3d_on_the_web/basic_theory/index.md @@ -55,7 +55,7 @@ There are four stages to this processing: the first one involves arranging the o ![Camera](mdn-games-3d-camera.png) -**Projection transformation** (also called perspective transformation) then defines the camera settings. It sets up what can be seen by the camera — the configuration includes _field of view_, _aspect ratio_ and optional _near_ and _far planes_. read the [Camera paragraph](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js#camera) in the Three.js article to learn about those. +**Projection transformation** (also called perspective transformation) then defines the camera settings. It sets up what can be seen by the camera — the configuration includes _field of view_, _aspect ratio_ and optional _near_ and _far planes_. Read the [Camera paragraph](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js#camera) in the Three.js article to learn about those. ![Camera settings](mdn-games-3d-camera-settings.png) diff --git a/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_a-frame/index.md b/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_a-frame/index.md index 6770f6610ffc430..ba6478c4296ae6c 100644 --- a/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_a-frame/index.md +++ b/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_a-frame/index.md @@ -6,27 +6,37 @@ page-type: guide {{GamesSidebar}} -The [WebXR](/en-US/docs/Games/Techniques/3D_on_the_web/WebXR) and [WebGL](/en-US/docs/Web/API/WebGL_API) APIs already enable us to start creating virtual reality (VR) and augmented reality (AR) experiences inside web browsers, but the community is still waiting for tools and libraries to appear, to make this easier. Mozilla's [A-Frame](https://aframe.io/) framework provides a markup language allowing us to build 3D VR landscapes using a system familiar to web developers, which follows game development coding principles; this is useful for quickly and successfully building prototypes and demos, without having to write a lot of JavaScript or GLSL. This article explains how to get up and running with A-Frame, and how to use it to build up a simple demo. +The [WebXR](/en-US/docs/Games/Techniques/3D_on_the_web/WebXR) and [WebGL](/en-US/docs/Web/API/WebGL_API) APIs already enable us to start creating virtual reality (VR) and augmented reality (AR) experiences inside web browsers. +To make this easier, Mozilla's [A-Frame](https://aframe.io/) framework provides a markup language that allows web developers to build 3D VR landscapes using a familiar approach, and which follows game development coding principles. +This is useful for quickly and successfully building prototypes and demos, without having to write a lot of JavaScript or GLSL. +This article explains how to get up and running with A-Frame, and how to use it to build up a simple demo. + +> [!NOTE] +> This guide was last updated in November 2024, and is compatible with A-Frame version `1.6.0`. ## High level overview A-Frame runs on most environments, such as desktop, mobile (iOS and Android), and devices such as Oculus Rift, Gear VR and HTC Vive. -A-Frame is built on top of [WebGL](/en-US/docs/Web/API/WebGL_API), and provides pre-built components to use in applications — models, video players, skyboxes, geometries, controls, animations, cursors, etc. It is based on the [entity component system](https://en.wikipedia.org/wiki/Entity_component_system), which is known in the game development world, but it targets web developers with a familiar markup structure, manipulable with JavaScript. The end result is 3D web experiences, which are VR-enabled by default. +A-Frame is built on top of [WebGL](/en-US/docs/Web/API/WebGL_API), and provides pre-built components to use in applications — models, video players, skyboxes, geometries, controls, animations, cursors, etc. It is based on the [entity component system](https://en.wikipedia.org/wiki/Entity_component_system), which is known in the game development world, but it targets web developers with a familiar markup structure that can be manipulated with JavaScript. The end result is 3D web experiences, which are VR-enabled by default. + +## Development setup -## Environment setup +To start developing with A-Frame, you should make sure you are using a modern browser with good [WebGL](/en-US/docs/Web/API/WebGL_API) support. +One option is to set up a VR device such as Oculus Rift or Google Cardboard for the experiments. -Let's start by setting up an environment to create something with A-Frame. We'll then build up a demo and run it. You should start off by: +If you're developing locally in an IDE, make a directory to store your experiments in and save a copy of the [latest A-Frame engine](https://aframe.io/docs/1.6.0/introduction/installation.html) inside that directory. +Alternatively, you can load A-Frame from a CDN: -- Making sure you are using a modern browser with good WebGL support (and WebVR support if you have available VR hardware) such as the latest Firefox or Chrome — download [Firefox Nightly](https://www.mozilla.org/en-US/firefox/channel/desktop/) or Chrome (v54 or higher). -- (Optional) set up a VR device such as Oculus Rift or Google Cardboard. -- Create a new directory to store your project in. -- Save a copy of the latest [A-Frame JavaScript library file](https://github.com/aframevr/aframe/tree/master/dist) inside your directory (check the GitHub repository for latest stable a dev builds). -- Open the [A-Frame documentation](https://aframe.io/docs/) in a separate tab — it is useful to refer to. +```html + +``` -## HTML structure +Whichever way you choose to get started, make sure you have the [A-Frame documentation](https://aframe.io/docs/) open somewhere while you're working for reference. -The first step is to create an HTML document — inside your project directory, create a new `index.html` file, and save the follow HTML inside it: +### HTML starter for A-Frame + +If you're building your project locally in an IDE, here's the HTML structure to get started: ```html @@ -34,7 +44,7 @@ The first step is to create an HTML document — inside your project directory, MDN Games: A-Frame demo - + @@ -44,11 +54,10 @@ The first step is to create an HTML document — inside your project directory, This contains some basic information like the document `charset` and {{htmlelement("title")}}. The {{htmlelement("script")}} element includes the A-Frame framework in the page; we will write our example code inside the {{htmlelement("body")}} element. -### Initializing the scene +### Initializing a scene in A-Frame A scene is the place where everything happens. When creating new objects in the demo, we will be adding them all to the scene to make them visible on the screen. In A-Frame, the scene is represented by a [Scene entity](https://aframe.io/docs/core/scene.html). - -> **Note:** An Entity is any element — it can be an object like a box, cylinder or cone, but it can also be a camera, light or sound source. +An Entity is any element — it can be an object like a box, cylinder or cone, but it can also be a camera, light or sound source. Let's create the scene by adding an `` element inside the `` element: @@ -61,12 +70,11 @@ Let's create the scene by adding an `` element inside the `` elem Adding the cube to the scene is done by adding a simple [``](https://aframe.io/docs/primitives/a-box.html) element inside the `` element. Add it now: ```html - + ``` It contains a few parameters already defined: `color`, `position` and `rotation` — these are fairly obvious, and define the base color of the cube, the position inside the 3D scene, and the rotation of the cube. - -> **Note:** The distance values (e.g. for the cube y position) are unitless, and can basically be anything you deem suitable for your scene — millimeters, meters, feet, or miles — it's up to you. +The distance values (e.g. for the cube y position) are unitless, and can basically be anything you deem suitable for your scene — millimeters, meters, feet, or miles — it's up to you. ### Adding a background: Sky box @@ -76,27 +84,40 @@ A sky box is a background for the 3D world, represented by an [``](https: ``` -At this point, if you save the code and refresh your browser you can already see the cube on the screen with our custom background: +## A-Frame shape example -![A 3D representation's illustration of a blue cube displayed on a lighter grey background.](cube.png) +At this point, if you save the code and refresh your browser you can already see the cube on the screen with our custom background: -Here's the code we have created so far: +```html live-sample___a-frame-intro + + + + + +``` -{{JSFiddleEmbed("https://jsfiddle.net/end3r/m85148b4/","","350")}} +```css hidden live-sample___a-frame-intro +body { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-size: 0; +} +``` -You can also [check it out on GitHub](https://github.com/end3r/MDN-Games-3D/blob/gh-pages/A-Frame/cube.html). +{{embedlivesample("a-frame-intro", "", "400px")}} A-Frame takes care of setting up everything you need: - A default light source and camera are included, so the cube is visible. -- The controls are already working: you can use the mouse for looking around and the keyboard for movement - (try the W, A, S, and D keys). - -- There's even an "Enter VR mode" button in the bottom right corner of the screen, to allow you to shift to full screen, stereoscopic image viewing if you have the necessary VR hardware set up and ready. +- The controls are already working: you can use the mouse for looking around and the keyboard for movement. + Try the W, A, S, and D keys). +- There's an "Enter VR mode" button in the bottom right corner of the screen, to allow you to shift to full screen, stereoscopic image viewing if you have the necessary VR hardware set up and ready. ### Specifying a camera -A camera entity can be created by adding an [``](https://aframe.io/docs/primitives/a-camera.html) element to the scene. We can set the position of the camera explicitly and move it back a little bit from the center of the scene, so we'll be able to see the shapes. Add this just before the closing `` element: +A camera entity can be created by adding an [``](https://aframe.io/docs/primitives/a-camera.html) element to the scene. We can set the position of the camera explicitly and move it back a little bit from the center of the scene, so we'll be able to see the shapes. Add this just before the closing `` tag: ```html + animation="property: scale; to: 1 0.5 1; direction: alternate; dur: 2000; loop: true; easing: linear;"> ``` @@ -240,17 +251,77 @@ render(); We're using the `render()` function to update the cylinder's position on every frame. Try changing the given values on the `y` axis and see how it affects the movement. -## Conclusion +## A-Frame example with animation Everything is rendered properly and animating — congratulations on building your first A-Frame scene! Here's how the final version looks and works: -{{JSFiddleEmbed("https://jsfiddle.net/lowperry/xmo62ku0/5/","","350")}} +```html live-sample___a-frame-animation + + + + + + + + + + + + + + + + + + + +``` + +```css hidden live-sample___a-frame-animation +body { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-size: 0; +} +``` -If you have a VR device available, now is a good time to try out your scene with it too. +{{embedlivesample("a-frame-animation", "", "400px")}} -> **Note:** You can also [check it out on GitHub](https://github.com/end3r/MDN-Games-3D/blob/gh-pages/A-Frame/shapes.html). +## Summary -That was easier than you thought, right? A-Frame targets web developers by offering easy to use web markup and all the advantages that brings, such as JavaScript manipulation. It is easy to start with, but also provides a powerful API for advanced concepts, as well as dealing with cross browser differences and suchlike. The community is growing, just like the number of supported VR devices — it's a great time to start experimenting with such frameworks. +A-Frame targets web developers by offering easy to use web markup and all the advantages that brings, such as JavaScript manipulation. It is easy to start with, but also provides a powerful API for advanced concepts, as well as dealing with cross browser differences. It's a great time to start experimenting with such frameworks. ## See also diff --git a/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_babylon.js/index.md b/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_babylon.js/index.md index 3206d0764e14303..612de14e9c19ad4 100644 --- a/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_babylon.js/index.md +++ b/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_babylon.js/index.md @@ -6,22 +6,32 @@ page-type: guide {{GamesSidebar}} -[Babylon.js](https://www.babylonjs.com/) is one of the most popular 3D game engines used by developers. As with any other 3D library it provides built-in functions to help you implement common 3D functionality more quickly. In this article we'll take you through the real basics of using Babylon.js, including setting up a development environment, structuring the necessary HTML, and writing the JavaScript code. +[Babylon.js](https://www.babylonjs.com/) is one of the most popular 3D game engines used by developers. As with any other 3D library it provides built-in functions to help you implement common 3D functionality more quickly. In this article we'll take you through the basics of using Babylon.js, including setting up a development environment, structuring the necessary HTML, and writing the JavaScript code. -We will try to create a simple demo first — a cube rendered on the screen. If you have already worked through our _Building up a basic demo_ [series](/en-US/docs/Games/Techniques/3D_on_the_web) with [Three.js](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js), [PlayCanvas](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_PlayCanvas) or [A-Frame](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_A-Frame) (or you are familiar with other 3D libraries) you'll notice that Babylon.js works on similar concepts: camera, light and objects. +We will create a basic demo first — a cube rendered on the screen. If you have already worked through our _Building up a basic demo_ [series](/en-US/docs/Games/Techniques/3D_on_the_web) with [Three.js](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js), [PlayCanvas](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_PlayCanvas) or [A-Frame](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_A-Frame) (or you are familiar with other 3D libraries) you'll notice that Babylon.js works using similar concepts: camera, light and objects. -## Environment setup +> [!NOTE] +> This guide was last updated in November 2024, and is compatible with Babylon.js version `7.34.1`. -To start developing with Babylon.js, you don't need much. You should start off by: +## Development setup -- Making sure you are using a modern browser with good [WebGL](/en-US/docs/Web/API/WebGL_API) support, such as the latest Firefox or Chrome. -- Creating a directory to store your experiments in. -- Saving a copy of the [latest Babylon.js engine](https://cdn.babylonjs.com/babylon.js) inside your directory. -- Opening the [Babylon.js documentation](https://doc.babylonjs.com/) in a separate tab — it is useful to refer to. +To start developing with Babylon.js, you don't need much. +Make sure you are using a modern browser with good [WebGL](/en-US/docs/Web/API/WebGL_API) support. +It's useful to keep the [Babylon.js documentation](https://doc.babylonjs.com/) in a separate tab while you're working. -## HTML structure +If you're developing locally in an IDE, make a directory to store your experiments in and save a copy of the [latest Babylon.js engine](https://doc.babylonjs.com/setup/frameworkPackages/frameworkVers/) inside that directory. +Alternatively, you can load Babylon.js from a CDN: -Here's the HTML structure we will use: +```html + +``` + +If you don't want to develop locally, you can use an online editor such as [CodePen](https://codepen.io/), [JSFiddle](https://jsfiddle.net/), or [Glitch](https://glitch.com/). +With these editors, you can add `https://cdn.babylonjs.com/v7.34.1/babylon.js` as a JavaScript source so it's available in your code. + +### HTML starter for Babylon.js + +If you're building your project locally in an IDE, here's the HTML structure to get started: ```html @@ -42,19 +52,24 @@ Here's the HTML structure we will use: + + + + + ``` -It contains some basic information like the document {{htmlelement("title")}}, and some CSS to set the width and height of the {{htmlelement("canvas")}} element (which Babylon.js will use to render the content on) to fill the entire available viewport space. The first {{htmlelement("script")}} element includes the Babylon.js library in the page; we will write our example code in the second one. There is one helper variable already included, which will store a reference to the `` element. +It contains some basic information like the document {{htmlelement("title")}}, and some CSS to set the width and height of the {{htmlelement("canvas")}} element (which Babylon.js will use to render the content on) to fill the entire available viewport space. The first {{htmlelement("script")}} element includes the Babylon.js library in the page; we will write our example code in the second one. There is one variable already included, which will store a reference to the `` element. -Before reading on, copy this code to a new text file and save it in your working directory as `index.html`. +If you're developing in an IDE, copy this code to a new text file and save it in your working directory as `index.html`. ## Initializing the Babylon.js engine @@ -75,7 +90,7 @@ const scene = new BABYLON.Scene(engine); scene.clearColor = new BABYLON.Color3(0.8, 0.8, 0.8); ``` -Thus, the scene is created and the second line sets the background color to light gray. +The scene is created and the second line sets the background color to light gray. ## Creating a rendering loop @@ -102,13 +117,13 @@ const camera = new BABYLON.FreeCamera( ); ``` -There are many [cameras](https://doc.babylonjs.com/divingDeeper/cameras) available in Babylon.js; `FreeCamera` is the most basic and universal one. To initialize it you need to pass it three parameters: any name you want to use for it, the coordinates where you want it to be positioned in the 3D space, and the scene you want to add it to. +There are many [cameras](https://doc.babylonjs.com/features/featuresDeepDive/cameras) available in Babylon.js; `FreeCamera` is the most basic and universal one. To initialize it you need to pass it three parameters: any name you want to use for it, the coordinates where you want it to be positioned in the 3D space, and the scene you want to add it to. -> **Note:** You probably noticed the `BABYLON.Vector3()` method in use here — this defines a 3D position on the scene. Babylon.js is bundled with a complete math library for handling vectors, colors, matrices etc. +You may have noticed the `BABYLON.Vector3()` method in use here — this defines a 3D position on the scene. Babylon.js is bundled with a complete math library for handling vectors, colors, matrices etc. ## Let there be light -There are various [light sources](https://doc.babylonjs.com/divingDeeper/lights/lights_introduction#types-of-lights) available in Babylon.js. The most basic one is the `PointLight`, which works like a flashlight — shining a spotlight in a given direction. Add the following line below your camera definition: +There are various [light sources](https://doc.babylonjs.com/features/featuresDeepDive/lights/lights_introduction#types-of-lights) available in Babylon.js. The most basic one is the `PointLight`, which works like a flashlight — shining a spotlight in a given direction. Add the following line below your camera definition: ```js const light = new BABYLON.PointLight( @@ -122,15 +137,15 @@ The parameters are very similar to the previously defined camera: the name of th ## Geometry -Now the scene is properly rendering we can start adding 3D shapes to it. To speed up development Babylon.js provides a bunch of [predefined primitives](https://doc.babylonjs.com/divingDeeper/mesh/creation/set) that you can use to create shapes instantly in a single line of code. There are cubes, spheres, cylinders and more complicated shapes available. Let's start by defining the geometry for a box shape — add the following new code below your previous additions: +Now the scene is properly rendering we can start adding 3D shapes to it. To speed up development Babylon.js provides a bunch of [predefined primitives](https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set) that you can use to create shapes instantly in a single line of code. There are cubes, spheres, cylinders and more complicated shapes available. Let's start by defining the geometry for a box shape — add the following new code below your previous additions: ```js const box = BABYLON.Mesh.CreateBox("box", 2, scene); ``` -A mesh is a way the engine creates geometric shapes, so material can be easily applied to them later on. In this case we're creating a box using the `Mesh.CreateBox` method with its own name, a size of 2, and a declaration of which scene we want it added to. +A mesh is a way the engine creates geometric shapes, so material (textures) can be easily applied to them later on. In this case we're creating a box using the `Mesh.CreateBox` method with its own name, a size of 2, and a declaration of which scene we want it added to. -> **Note:** The size or position values (e.g. for the box size) are unitless, and can basically be anything you deem suitable for your scene — millimeters, meters, feet, or miles — it's up to you. +The size or position values (e.g., for the box size) are unitless, and can basically be anything you deem suitable for your scene — millimeters, meters, feet, or miles — it's up to you. If you save and refresh now, your object will look like a square, because it's facing the camera. The good thing about objects is that we can move them on the scene however we want, for example rotating and scaling. Let's apply a little rotation to the box, so we can see more than one face — again, add these lines below the previous one: @@ -153,15 +168,61 @@ box.material = boxMaterial; The `StandardMaterial` takes two parameters: a name, and the scene you want to add it to. The second line defines an `emissiveColor` — the one that will be visible for us. We can use the built-in `Color3` function to define it. The third line assigns the newly created material to our box. -Congratulations, you've created your first object in a 3D environment using Babylon.js! It was easier than you thought, right? Here's how it should look: +## Babylon.js shapes example -![Blue Babylon.js 3D box on the gray background.](cube.png) +Congratulations, you've created your first object in a 3D environment using Babylon.js! It was easier than you thought, right? +Here's what we have created so far in a live sample. +You can click "Play" to edit the code in the MDN Playground: -And here's the code we have created so far: +```html hidden live-sample___babylon-js-intro + + +``` -{{JSFiddleEmbed("https://jsfiddle.net/end3r/9zoeo5sy/","","350")}} +```js hidden live-sample___babylon-js-intro +const canvas = document.getElementById("render-canvas"); +const engine = new BABYLON.Engine(canvas); +const scene = new BABYLON.Scene(engine); +scene.clearColor = new BABYLON.Color3(0.8, 0.8, 0.8); -You can also [check it out on GitHub](https://github.com/end3r/MDN-Games-3D/blob/gh-pages/Babylon.js/cube.html). +const camera = new BABYLON.FreeCamera( + "camera", + new BABYLON.Vector3(0, 0, -10), + scene, +); + +const light = new BABYLON.PointLight( + "light", + new BABYLON.Vector3(10, 10, 0), + scene, +); + +const box = BABYLON.Mesh.CreateBox("box", 2, scene); +box.rotation.x = -0.2; +box.rotation.y = -0.4; + +const boxMaterial = new BABYLON.StandardMaterial("material", scene); +boxMaterial.emissiveColor = new BABYLON.Color3(0, 0.58, 0.86); +box.material = boxMaterial; + +const renderLoop = function () { + scene.render(); +}; + +engine.runRenderLoop(renderLoop); +``` + +```css hidden live-sample___babylon-js-intro +canvas { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-size: 0; +} +``` + +{{embedlivesample("babylon-js-intro", "", "400px")}} ## More shapes @@ -195,6 +256,7 @@ Creating a cylinder and its material is done in almost exactly the same way as w const cylinder = BABYLON.Mesh.CreateCylinder("cylinder", 2, 2, 2, 12, 1, scene); cylinder.position.x = 5; cylinder.rotation.x = -0.2; + const cylinderMaterial = new BABYLON.StandardMaterial("material", scene); cylinderMaterial.emissiveColor = new BABYLON.Color3(1, 0.58, 0); cylinder.material = cylinderMaterial; @@ -202,11 +264,7 @@ cylinder.material = cylinderMaterial; The cylinder parameters are: name, height, diameter at the top, diameter at the bottom, tessellation, height subdivisions and the scene to add it to. It is then positioned to the right of the cube, rotated a bit so its 3D shape can be seen, and given a yellow material. -Here's how the scene should look right now: - -![Light gray torus, blue box and yellow cylinder created with Babylon.js on the gray background.](shapes.png) - -This works, but it is a bit boring. In a game something is usually happening — we can see animations and such — so let's try to breathe a little life into those shapes by animating them. +This is good progress, but we can make it more exciting! In a game, something is usually happening — we can see animations and such — so let's try to breathe some life into those shapes by animating them. ## Animation @@ -254,10 +312,80 @@ cylinder.position.y = Math.sin(t * 3); The cylinder will float up and down on the `y` axis thanks to the `Math.sin()` function. -## Conclusion +## Babylon.js example with animation + +Here's the final code with animated shapes. +You can click "Play" to edit the example in the MDN Playground: + +```html hidden live-sample___babylon-js-animation + + +``` + +```js live-sample___babylon-js-animation +const canvas = document.getElementById("render-canvas"); +const engine = new BABYLON.Engine(canvas, true, { + preserveDrawingBuffer: false, + alpha: true, +}); -Here's the final code listing, along with a viewable live example: +const scene = new BABYLON.Scene(engine); +scene.clearColor = new BABYLON.Color3(0.8, 0.8, 0.8); +const camera = new BABYLON.FreeCamera( + "camera", + new BABYLON.Vector3(0, 0, -10), + scene, +); +const light = new BABYLON.PointLight( + "light", + new BABYLON.Vector3(10, 10, 0), + scene, +); + +const box = BABYLON.Mesh.CreateBox("box", 2, scene); +box.rotation.x = -0.2; +box.rotation.y = -0.4; -{{JSFiddleEmbed("https://jsfiddle.net/end3r/8r66fdvp/","","350")}} +const boxMaterial = new BABYLON.StandardMaterial("material", scene); +boxMaterial.emissiveColor = new BABYLON.Color3(0, 0.58, 0.86); +box.material = boxMaterial; + +const torus = BABYLON.Mesh.CreateTorus("torus", 2, 0.5, 15, scene); +torus.position.x = -5; +torus.rotation.x = 1.5; + +const torusMaterial = new BABYLON.StandardMaterial("material", scene); +torusMaterial.emissiveColor = new BABYLON.Color3(0.4, 0.4, 0.4); +torus.material = torusMaterial; + +const cylinder = BABYLON.Mesh.CreateCylinder("cylinder", 2, 2, 2, 12, 1, scene); +cylinder.position.x = 5; +cylinder.rotation.x = -0.2; + +const cylinderMaterial = new BABYLON.StandardMaterial("material", scene); +cylinderMaterial.emissiveColor = new BABYLON.Color3(1, 0.58, 0); +cylinder.material = cylinderMaterial; + +let t = 0; +const renderLoop = function () { + scene.render(); + t -= 0.01; + box.rotation.y = t * 2; + torus.scaling.z = Math.abs(Math.sin(t * 2)) + 0.5; + cylinder.position.y = Math.sin(t * 3); +}; +engine.runRenderLoop(renderLoop); +``` + +```css hidden live-sample___babylon-js-animation +canvas { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-size: 0; + color: rgba(204, 204, 204, 1); +} +``` -You can also [see it on GitHub](https://github.com/end3r/MDN-Games-3D/blob/gh-pages/Babylon.js/shapes.html) and [fork the repository](https://github.com/end3r/MDN-Games-3D/) if you want to play with it yourself locally. Now you know the basics of Babylon.js engine; happy experimentation! +{{embedlivesample("babylon-js-animation", "", "400px")}} diff --git a/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/editor/index.md b/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/editor/index.md index b4a5c8f999b380d..d44ce90accda428 100644 --- a/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/editor/index.md +++ b/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/editor/index.md @@ -4,6 +4,8 @@ slug: Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_PlayCanvas/ed page-type: guide --- +{{GamesSidebar}} + Instead of coding everything from scratch you can also use the online **PlayCanvas editor**. This can be a more pleasant working environment if you are not someone who likes to code. ## Creating an account @@ -56,7 +58,8 @@ Click on your new material in the assets tab and its entity inspector will appea To change its color we'll use the _Diffuse_ option in the entity inspector. Click _Diffuse_, then select the colored box next to the Color label — it will open a {{glossary("color wheel")}}. From here you can click your desired color or enter it in the bottom text field as a hex value. We've chosen a blue color with a hex value of `0095DD` — enter this code in the text field and press return for it to be accepted. -> **Note:** Yes, you read that right — you need to enter the hex value without the hash/pound symbol. +> [!NOTE] +> Yes, you read that right — you need to enter the hex value without the hash/pound symbol. ![PlayCanvas Editor - Diffuse color](playcanvas-editor-diffusecolor.png) @@ -74,7 +77,7 @@ Now click on the play arrow in the top right corner of the scene to launch and r This looks great! Let's add more shapes to the scene to make it look more interesting. -![PlayCanvas Editor - Boxrender](playcanvas-editor-boxrender.png) +![PlayCanvas Editor - Box render](playcanvas-editor-boxrender.png) ## Adding more shapes @@ -94,7 +97,7 @@ Now follow the same steps as we did before when coloring the cube: ![PlayCanvas Editor - Cylinder material](playcanvas-editor-cylindermaterial.png) -Follow the same approach again to add a cone to the scene, giving it a grayish color (we used EAEFF2.) You should now have three shapes on your scene, something like the below screenshot. +Follow the same approach again to add a cone to the scene, giving it a grayish color (we used `#EAEFF2`.) You should now have three shapes on your scene, something like the below screenshot. ![PlayCanvas Editor - Cone](playcanvas-editor-cone.png) diff --git a/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/engine/index.md b/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/engine/index.md index b9470ed12978624..4815cc9ba185561 100644 --- a/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/engine/index.md +++ b/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/engine/index.md @@ -7,25 +7,31 @@ page-type: guide {{GamesSidebar}} Built for modern browsers, **PlayCanvas** is a fully-featured 3D game engine with resource loading, an entity and component system, advanced graphics manipulation, collision and physics engine (built with [ammo.js](https://github.com/kripken/ammo.js/)), audio, and facilities to handle control inputs from various devices (including gamepads). - That's quite an impressive list of features — let's see some in action. -![PlayCanvas engine repository on GitHub.](playcanvas-github.png) +We build a basic demo first — a cube rendered on the screen. If you have already worked through our [Building up a basic demo with Three.js](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js) article (or you are familiar with other 3D libraries) you'll notice that PlayCanvas has similar concepts: camera, light and objects. + +> [!NOTE] +> This guide was last updated in November 2024, and is compatible with PlayCanvas version `2.2.2`. + +## Development setup -We will try putting together a simple demo first — a cube rendered on the screen. If you have already worked through our [Building up a basic demo with Three.js](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js) article (or you are familiar with other 3D libraries) you'll notice that PlayCanvas works on similar concepts: camera, light and objects. +To start developing with PlayCanvas, make sure you are using a modern browser with good [WebGL](/en-US/docs/Web/API/WebGL_API) support. +It's useful to keep the [PlayCanvas documentation](https://developer.playcanvas.com/en/user-manual/) in a separate tab while you're working. -## Environment setup +If you're developing locally in an IDE, make a directory to store your experiments in and save a copy of the [latest PlayCanvas engine](https://code.playcanvas.com/playcanvas-latest.js) inside that directory. +Alternatively, you can load PlayCanvas from a CDN: -To start developing with PlayCanvas, you don't need much. You should start off by: +```html + +``` -- Making sure you are using a modern browser with good [WebGL](/en-US/docs/Web/API/WebGL_API) support, such as the latest Firefox or Chrome. -- Creating a directory to store your experiments in. -- Saving a copy of the [latest PlayCanvas engine](https://code.playcanvas.com/playcanvas-latest.js) inside your directory. -- Opening the [PlayCanvas documentation](https://developer.playcanvas.com/en/user-manual/) in a separate tab — it is useful to refer to. +If you don't want to develop locally, you can use an online editor such as [CodePen](https://codepen.io/), [JSFiddle](https://jsfiddle.net/), or [Glitch](https://glitch.com/). +With these editors, you can add `https://cdn.babylonjs.com/babylon.js` as a JavaScript source so it's available in your code. -## HTML structure +### HTML starter for PlayCanvas -Here's the HTML structure we will use. +If you're building your project locally in an IDE, here's the HTML structure to get started: ```html @@ -34,30 +40,35 @@ Here's the HTML structure we will use. MDN Games: PlayCanvas demo + + + + ``` -It contains some basic information like the document {{htmlelement("title")}}, and some CSS to set the width and height of the {{htmlelement("canvas")}} element that PlayCanvas will use to 100% so that it will fill the entire available viewport space. The first {{htmlelement("script")}} element includes the PlayCanvas library in the page; we will write our example code in the second one. There is one helper variable already included, which will store a reference to the {{htmlelement("canvas")}} element. +It contains information like the document {{htmlelement("title")}}, and some CSS to set the width and height of the {{htmlelement("canvas")}} element (that PlayCanvas will use) to 100%, so that it will fill the entire available viewport space. The first {{htmlelement("script")}} element includes the PlayCanvas library in the page; we will write our example code in the second one. There is one variable already included, which will store a reference to the {{htmlelement("canvas")}} element. -Before reading on, copy this code to a new text file and save it in your working directory as `index.html`. +If you're developing in an IDE, copy this code to a new text file and save it in your working directory as `index.html`. ## PlayCanvas application @@ -79,7 +90,7 @@ app.setCanvasResolution(pc.RESOLUTION_AUTO); ## Camera -Now when the setup code is in place we need to think about implementing the standard scene components: camera, lights and objects. Let's start with the camera — add these lines to your code, below the previous ones. +Now that the setup code is in place, we need to think about implementing the standard scene components: camera, lights and objects. Let's start with the camera — add these lines to your code, below the previous ones. ```js const camera = new pc.Entity(); @@ -92,14 +103,13 @@ camera.setPosition(0, 0, 7); ``` The code above will create a new `Entity`. - -> **Note:** An Entity is any object used in the scene — it can be an object like a box, cylinder or cone, but it can also be a camera, light or sound source. +An Entity is any object used in the scene — it can be an object like a box, cylinder or cone, but it can also be a camera, light or sound source. Then it adds a `camera` component to it with the light gray `clearColor` — the color will be visible as the background. Next, the `camera` object is added to the root of our application and positioned to be 7 units away from the center of the scene on the `z` axis. This allows us to make some space to visualize the objects that we will create later on. -> **Note:** The distance values (e.g. for the camera z position) are unitless, and can basically be anything you deem suitable for your scene — millimeters, meters, feet, or miles — it's up to you. +The distance values (e.g., for the camera z position) are unitless, and can basically be anything you deem suitable for your scene — millimeters, meters, feet, or miles — it's up to you. -Try saving the file and loading it in your browser. You should now see a gray window. Congratulations! +Try saving the file and loading it in your browser. You should now see a gray window. ## Geometry @@ -114,7 +124,8 @@ box.rotate(10, 15, 0); It will create an `Entity` with the `box` model component and add it to the root of the application, our scene. We also rotate the box a bit to show that it's actually a 3D cube and not a square. -The cube is visible, but it is completely. To make it look better we need to shine some light onto it. +The cube is visible, but it is completely dark. +To make it look better we need to shine some light onto it. ## Lights @@ -133,35 +144,87 @@ It will create a light `Entity` component and add it to the scene. We can rotate app.scene.ambientLight = new pc.Color(0.2, 0.2, 0.2); ``` -The code above assign a dark grey ambient light for the whole scene. The box look better now, but it could get some colors to look even better - for that we need to create material for it. +The code above assign a dark grey ambient light for the whole scene. The box looks better now, but it could get some colors to look even better - for that we need to create material for it. ## Material -This example uses an older [material](https://developer.playcanvas.com/user-manual/assets/types/material/) called "Phong Material" (supported as of PlayCanvas Engine v1.65.0). -To use `PhongMaterial`, add the following lines below the previous code: +This example uses a material called [Standard material](https://api.playcanvas.com/classes/Engine.StandardMaterial.html), which is the main, general purpose material that is most often used for rendering. +Add the following lines to your code: ```js -const boxMaterial = new pc.PhongMaterial(); +const boxMaterial = new pc.StandardMaterial(); boxMaterial.diffuse.set(0, 0.58, 0.86); boxMaterial.update(); box.model.model.meshInstances[0].material = boxMaterial; ``` By diffusing the light on the object, we can give it its own color — we'll choose a nice familiar blue. +In PlayCanvas, the color channel values are provided as floats in the range `0-1`, instead of integers of `0-255` as you might be used to using on the Web. + +After the material is created and its color is set, it has to be updated so that our changes are applied. Then all we need to do is set the `box`'s material to the newly created `boxMaterial`. -> **Note:** In PlayCanvas, the color channel values are provided as floats in the range `0-1`, instead of integers of `0-255` as you might be used to using on the Web. +## PlayCanvas shape example -After the material is created and its color is set, it has to be updated so our changes are going to be applied. Then all we need to do is set the `box`'s material to the newly created `boxMaterial`. +If you've followed everything so far without any problems, you've created your first object in a 3D environment using PlayCanvas! It was easier than you thought, right? +Your code should look like the following live sample. +You can click "Play" to view and edit the code in the MDN Playground: -Congratulations, you've created your first object in a 3D environment using PlayCanvas! It was easier than you thought, right? Here's how it should look: +```html hidden live-sample___play-canvas-intro + + +``` -![Blue cube on a gray background rendered with PlayCanvas.](cube-playcanvas.png) +```js hidden live-sample___play-canvas-intro +const canvas = document.getElementById("application-canvas"); -And here's the code we have created so far: +// Start and init Application +const app = new pc.Application(canvas); +app.start(); +app.setCanvasFillMode(pc.FILLMODE_FILL_WINDOW); +app.setCanvasResolution(pc.RESOLUTION_AUTO); -{{JSFiddleEmbed("https://jsfiddle.net/end3r/cqs6pg3x/","","350")}} +// Create camera +const camera = new pc.Entity(); +camera.addComponent("camera", { clearColor: new pc.Color(0.8, 0.8, 0.8) }); +app.root.addChild(camera); +camera.setPosition(0, 0, 7); -You can also [check it out on GitHub](https://github.com/end3r/MDN-Games-3D/blob/gh-pages/PlayCanvas/cube.html). +// Create cube +const box = new pc.Entity(); +box.addComponent("model", { type: "box" }); +app.root.addChild(box); +box.rotate(10, 15, 0); + +// Create light +const light = new pc.Entity(); +light.addComponent("light"); +light.rotate(45, 0, 0); +app.root.addChild(light); +app.scene.ambientLight = new pc.Color(0.2, 0.2, 0.2); + +// Create cube's material +const boxMaterial = new pc.StandardMaterial(); +boxMaterial.diffuse.set(0, 0.58, 0.86); +boxMaterial.update(); +box.model.model.meshInstances[0].material = boxMaterial; + +window.addEventListener("resize", function () { + app.resizeCanvas(canvas.width, canvas.height); +}); +``` + +```css hidden live-sample___play-canvas-intro +body, +canvas { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-size: 0; +} +``` + +{{embedlivesample("play-canvas-intro", "", "400px")}} ## More shapes @@ -187,7 +250,7 @@ cylinder.rotate(15, 0, 0); This looks very similar to the code we used for creating a cube, but instead of the `box` component we are adding a `cylinder`. It is also rotated around the `x` axis to show it's actually a 3D shape. To make the cylinder have a color, let's say yellow, we need to create the material for it, as before. Add the following lines: ```js -const cylinderMaterial = new pc.PhongMaterial(); +const cylinderMaterial = new pc.StandardMaterial(); cylinderMaterial.diffuse.set(1, 0.58, 0); cylinderMaterial.update(); cylinder.model.model.meshInstances[0].material = cylinderMaterial; @@ -203,7 +266,7 @@ cone.addComponent("model", { type: "cone" }); app.root.addChild(cone); cone.translate(2, 0, 0); -const coneMaterial = new pc.PhongMaterial(); +const coneMaterial = new pc.StandardMaterial(); coneMaterial.diffuse.set(0.9, 0.9, 0.9); coneMaterial.update(); cone.model.model.meshInstances[0].material = coneMaterial; @@ -211,11 +274,7 @@ cone.model.model.meshInstances[0].material = coneMaterial; The code above will create a new `cone`, add it to the `app` and move it by 2 units to the right so it's not overlapping the cylinder. Then the material is created, given a gray color, and assigned to the cone `Entity`. -Here's how it should look right now: - -![Shapes: blue cube, yellow cylinder and gray cone on a light gray background rendered with PlayCanvas.](shapes-playcanvas.png) - -This works, but it is a bit boring. In a game something is usually happening — we can see animations and such — so let's try to breathe a little life into those shapes by animating them. +This is good progress, but we can make it more exciting! In a game something is usually happening — we can see animations and such — so let's try to breathe a little life into those shapes by animating them. ## Animation @@ -263,14 +322,99 @@ cone.setPosition(2, Math.sin(timer * 2), 0); This will move the `cone` up and down by applying the `sin` value to the `y` axis on each frame, with a little bit of adjustment to make it look cooler. Try changing the value to see how it affects the animation. -## Conclusion +## PlayCanvas example with animation -Here's the final code listing, along with a viewable live example: +Here's the final code with animated shapes. +You can click "Play" to edit the example in the MDN Playground: -{{JSFiddleEmbed("https://jsfiddle.net/end3r/auvcLoc4/","","350")}} +```html hidden live-sample___play-canvas-animation + + +``` + +```js hidden live-sample___play-canvas-animation +const canvas = document.getElementById("application-canvas"); + +// Start and init Application +const app = new pc.Application(canvas); +app.start(); +app.setCanvasFillMode(pc.FILLMODE_FILL_WINDOW); +app.setCanvasResolution(pc.RESOLUTION_AUTO); + +// Create camera +const camera = new pc.Entity(); +camera.addComponent("camera", { clearColor: new pc.Color(0.8, 0.8, 0.8) }); +app.root.addChild(camera); +camera.setPosition(0, 0, 7); + +// Create cube +const box = new pc.Entity(); +box.addComponent("model", { type: "box" }); +app.root.addChild(box); +box.rotate(10, 15, 0); + +// Create light +const light = new pc.Entity(); +light.addComponent("light"); +light.rotate(45, 0, 0); +app.root.addChild(light); +app.scene.ambientLight = new pc.Color(0.2, 0.2, 0.2); + +// Create cube's material +const boxMaterial = new pc.StandardMaterial(); +boxMaterial.diffuse.set(0, 0.58, 0.86); +boxMaterial.update(); +box.model.model.meshInstances[0].material = boxMaterial; +box.translate(-2, 0, 0); + +// Create cylinder +const cylinder = new pc.Entity(); +cylinder.addComponent("model", { type: "cylinder" }); +app.root.addChild(cylinder); +cylinder.rotate(15, 0, 0); + +// Create cylinder's material +const cylinderMaterial = new pc.StandardMaterial(); +cylinderMaterial.diffuse.set(1, 0.58, 0); +cylinderMaterial.update(); +cylinder.model.model.meshInstances[0].material = cylinderMaterial; + +// Create cone +const cone = new pc.Entity(); +cone.addComponent("model", { type: "cone" }); +app.root.addChild(cone); +cone.translate(2, 0, 0); + +// Create cone's material +const coneMaterial = new pc.StandardMaterial(); +coneMaterial.diffuse.set(0.9, 0.9, 0.9); +coneMaterial.update(); +cone.model.model.meshInstances[0].material = coneMaterial; + +// Animate shapes +let timer = 0; +app.on("update", function (deltaTime) { + timer += deltaTime; + box.rotate(deltaTime * 10, deltaTime * 20, deltaTime * 3); + cylinder.setLocalScale(1, Math.abs(Math.sin(timer)), 1); + cone.setPosition(2, Math.sin(timer * 2), 0); +}); +``` + +```css hidden live-sample___play-canvas-animation +body, +canvas { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-size: 0; +} +``` -You can also [see it on GitHub](https://github.com/end3r/MDN-Games-3D/blob/gh-pages/PlayCanvas/shapes.html) and [fork the repository](https://github.com/end3r/MDN-Games-3D/) if you want to play with it yourself locally. Now you know the basics of PlayCanvas engine; happy experimentation! +{{embedlivesample("play-canvas-animation", "", "400px")}} ## Summary -Now you can continue reading the [PlayCanvas editor](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_PlayCanvas/editor) article, go back to the [Building up a basic demo with PlayCanvas](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_PlayCanvas) page, or go back a level higher to the main [3D Games on the Web](/en-US/docs/Games/Techniques/3D_on_the_web) page. +Now you know the basics of PlayCanvas engine; happy experimentation! +You can continue reading the [PlayCanvas editor](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_PlayCanvas/editor) article, go back to the [Building up a basic demo with PlayCanvas](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_PlayCanvas) page, or go back a level higher to the main [3D Games on the Web](/en-US/docs/Games/Techniques/3D_on_the_web) page. diff --git a/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/index.md b/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/index.md index c3d72a0ec261d58..c1109889768fd25 100644 --- a/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/index.md +++ b/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_playcanvas/index.md @@ -20,7 +20,8 @@ PlayCanvas has a few well-known demos published that showcase its possibilities. ![A list of PlayCanvas demos: Tanx, Swooop, Star Lord, BMW i8.](playcanvas-demos.png) -> **Note:** Check out the list of [featured demos](https://playcanvas.com/explore) to find more examples. +> [!NOTE] +> Check out the list of [featured demos](https://playcanvas.com/explore) to find more examples. ## Engine vs. editor diff --git a/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.md b/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.md index 961c6076497769b..57541c1be4d272a 100644 --- a/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.md +++ b/files/en-us/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.md @@ -6,19 +6,26 @@ page-type: guide {{GamesSidebar}} -A typical 3D scene in a game — even the simplest one — contains standard items like shapes located in a coordinate system, a camera to actually see them, lights and materials to make it look better, animations to make it look alive, etc. **Three.js**, as with any other 3D library, provides built-in helper functions to help you implement common 3D functionality more quickly. In this article we'll take you through the real basics of using Three, including setting up a development environment, structuring the necessary HTML, the fundamental objects of Three, and how to build up a basic demo. +A typical 3D scene in a game — even the simplest one — contains standard items like shapes located in a coordinate system, a camera to view it, lights and materials to make it look better, animations to make it look alive, etc. **Three.js**, as with any other 3D library, provides built-in helper functions to help you implement common 3D functionality more quickly. In this article we'll take you through the real basics of using Three.js, including setting up a development environment, structuring the necessary HTML, the fundamental objects of Three, and how to build up a basic demo. -> **Note:** We chose Three because it is one of the most popular [WebGL](/en-US/docs/Web/API/WebGL_API) libraries, and it is easy to get started with. We are not trying to say it is better than any other WebGL library available, and you should feel free to try another library, such as [CopperLicht](https://www.ambiera.com/copperlicht/index.html) or [PlayCanvas](https://playcanvas.com/). +Three is one of the most popular [WebGL](/en-US/docs/Web/API/WebGL_API) libraries, and it is easy to get started with. +We are not saying it is better than any other WebGL library, and you should feel free to try other libraries. -## Environment setup +> [!NOTE] +> This guide was last updated in November 2024, and is compatible with Three.js version `r79`. -To start developing with Three.js, you should make sure you are using a modern browser with good [WebGL](/en-US/docs/Web/API/WebGL_API) support, such as the latest Firefox or Chrome. +## Development setup -You can download the [latest Three.js library](https://github.com/mrdoob/three.js/archive/master.zip) and copy the minified version of Three.js from the uncompressed archive at `build/three.module.min.js` into your project. -Bear in mind that the archives include source files, which makes the download size approximately 350MB. +To start developing with Three.js, you should make sure you are using a modern browser with good [WebGL](/en-US/docs/Web/API/WebGL_API) support. + +In your code, you can import Three.js [using a CDN or use Node.js](https://threejs.org/docs/#manual/en/introduction/Installation). +If you're including it from a CDN, you can use the following URL in your HTML: + +```html + +``` -Alternatively, you can import Three.js [using a CDN or use Node.js](https://threejs.org/docs/#manual/en/introduction/Installation). -A Node.js setup with Three.js installed as a dependency is convenient if you want to track versions and it can speed up collaboration and deployment: +A Node.js setup with Three.js installed as a dependency is convenient if you want to develop against specific Three.js versions and it can speed up collaboration and deployment: ```bash npm install --save three @@ -26,11 +33,14 @@ npm install --save-dev vite # For development npx vite ``` +Alternatively, you can download the [latest Three.js library](https://github.com/mrdoob/three.js/archive/master.zip) and copy the minified version of Three.js from the uncompressed archive at `build/three.module.min.js` into your project. +Bear in mind that the archives include source files, which makes the download size approximately 350MB. + Whichever way you choose to get started, make sure you have the [Three.js documentation](https://threejs.org/docs/) open somewhere while you're working for reference. -## HTML structure +### HTML starter for Three.js -Here's the HTML structure we will use: +If you're building your project locally in an IDE, here's the HTML structure to get started: ```html @@ -39,18 +49,19 @@ Here's the HTML structure we will use: MDN Games: Three.js demo - + +``` + +```js hidden live-sample___three-js-intro +const WIDTH = window.innerWidth; +const HEIGHT = window.innerHeight; + +const renderer = new THREE.WebGLRenderer({ antialias: true }); +renderer.setSize(WIDTH, HEIGHT); +renderer.setClearColor(0xdddddd, 1); +document.body.appendChild(renderer.domElement); + +const scene = new THREE.Scene(); -![Blue cube on a gray background rendered with Three.js.](cube.png) +const camera = new THREE.PerspectiveCamera(70, WIDTH / HEIGHT); +camera.position.z = 50; +scene.add(camera); + +const boxGeometry = new THREE.BoxGeometry(10, 10, 10); +const basicMaterial = new THREE.MeshBasicMaterial({ color: 0x0095dd }); +const cube = new THREE.Mesh(boxGeometry, basicMaterial); +scene.add(cube); +cube.rotation.set(0.4, 0.2, 0); -And here's the code we have created so far: +function render() { + requestAnimationFrame(render); + renderer.render(scene, camera); +} +render(); +``` -{{JSFiddleEmbed("https://jsfiddle.net/end3r/bwup75fa/","","350")}} +```css hidden live-sample___three-js-intro +body, +canvas { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-size: 0; +} +``` -You can also [check it out on GitHub](https://github.com/end3r/MDN-Games-3D/blob/gh-pages/Three.js/cube.html). +{{embedlivesample("three-js-intro", "", "400px")}} ## More shapes and materials @@ -197,10 +248,12 @@ Now onto more shapes and materials. What might happen when you add a torus, wrap const torusGeometry = new THREE.TorusGeometry(7, 1, 6, 12); const phongMaterial = new THREE.MeshPhongMaterial({ color: 0xff9500 }); const torus = new THREE.Mesh(torusGeometry, phongMaterial); +torus.rotation.set(0.5, 0.5, 0); scene.add(torus); ``` These lines will add a torus geometry; the `TorusGeometry()` method's parameters define, and the parameters are `radius`, `tube diameter`, `radial segment count`, and `tubular segment count`. The Phong material should look more glossy than the box's simple Basic material, though right now our torus will just look black. +Adding a rotation gives the torus an initial depth so it doesn't look flat. We can choose more fun predefined shapes. Let's play some more. Add the following lines, below those defining the torus: @@ -212,7 +265,7 @@ dodecahedron.position.x = 25; scene.add(dodecahedron); ``` -This time, we are creating a dodecahedron, a shape containing twelve flat faces. The parameter, `DodecahedronGeometry(),` defines the size of the object. We're using a Lambert material, similar to Phong, but should be less glossy. Again it's black, for now. We're moving the object to the right, so it's not in the same position as the box, or torus. +This time, we are creating a dodecahedron, a shape containing twelve flat faces. The parameter to `DodecahedronGeometry()` defines the size of the object. We're using a Lambert material, similar to Phong, but should be less glossy. Again it's black, for now. We're moving the object to the right, so it's not in the same position as the box, or torus. As mentioned above, the new objects currently just look black. To have both, the Phong and Lambert materials properly visible, we need to introduce a source of light. @@ -228,13 +281,11 @@ scene.add(light); We define a white point of light, set its position a little away from the center of the scene, so it can light up some parts of the shapes, finally adding it to the scene. Now everything works as it should, all three shapes are visible. You should check the documentation for other types of lights, like Ambient, Directional, Hemisphere, or Spot. Experiment placing them on our scene, to see how they affect it. -![Shapes: blue cube, dark yellow torus and dark gray dodecahedron on a gray background rendered with Three.js.](shapes.png) - -This looks a little boring though. In a game, something is usually happening. We might see animations and such. So let's try breathing a little life into these shapes, by animating them! +This is good progress, but we can make it more exciting! In a game, something is usually happening. We might see animations and such. So let's try breathing a little life into these shapes, by animating them! ## Animation -We already used rotation, to adjust the position of the cube. We can also scale the shapes, or change their positions. To show animation, we need to make changes to these values inside the render loop, so they update on each frame. +We already used rotation to adjust the position of the cube. We can also scale the shapes, or change their positions. To show animation, we need to make changes to these values inside the render loop, so they update on each frame. ### Rotation @@ -248,7 +299,7 @@ This rotates the cube on every frame, by a tiny bit, so the animation looks smoo ### Scaling -We can also scale an object. Applying a constant value, we would make it grow, or shrink just once. Let's make things more interesting. First, we implement a helper variable, called `t,` for counting elapsed time. Add it right before the `render()` function: +We can also scale an object. Applying a constant value, we would make it grow, or shrink just once. Let's make things more interesting. First, we implement a helper variable called `t` for counting elapsed time. Add it right before the `render()` function: ```js let t = 0; @@ -263,24 +314,91 @@ torus.scale.y = Math.abs(Math.sin(t)); We use `Math.sin`, ending up with quite an interesting result. This scales the torus, repeating the process, as `sin` is a periodic function. We're wrapping the scale value in `Math.abs`, to pass the absolute values, greater or equal to 0. As sin is between -1 and 1, negative values might render out torus in unexpected way. In this case it looks black half the time. -Now, onto movement. - ### Moving -Aside from rotation, and scaling, we can additionally move objects around the scene. Add the following, again just below our `requestAnimationFrame()` invocation: +Aside from rotation and scaling, we can additionally move objects around the scene. Add the following, again just below our `requestAnimationFrame()` invocation: ```js dodecahedron.position.y = -7 * Math.sin(t * 2); ``` -This will move the dodecahedron up and down, by applying the `sin()` value to the y-axis on each frame, and a little adjustment to make it look cooler. Try changing these values, to see how it affects the animations. +This will move the dodecahedron up and down by applying the `sin()` value to the y-axis on each frame, and a little adjustment to make it look cooler. Try changing these values, to see how it affects the animations. + +## Three.js example with animation + +Here's the final code with animated shapes. +You can click "Play" to edit the example in the MDN Playground: + +```html hidden live-sample___three-js-animation + +``` + +```js live-sample___three-js-animation +const WIDTH = window.innerWidth; +const HEIGHT = window.innerHeight; + +const renderer = new THREE.WebGLRenderer({ antialias: true }); +renderer.setSize(WIDTH, HEIGHT); +renderer.setClearColor(0xdddddd, 1); +document.body.appendChild(renderer.domElement); + +const scene = new THREE.Scene(); + +const camera = new THREE.PerspectiveCamera(70, WIDTH / HEIGHT, 0.1, 10000); +camera.position.z = 50; +scene.add(camera); + +const boxGeometry = new THREE.BoxGeometry(10, 10, 10); +const basicMaterial = new THREE.MeshBasicMaterial({ color: 0x0095dd }); +const cube = new THREE.Mesh(boxGeometry, basicMaterial); +cube.position.x = -25; +cube.rotation.set(0.4, 0.2, 0); +scene.add(cube); + +const torusGeometry = new THREE.TorusGeometry(7, 1, 16, 32); +const phongMaterial = new THREE.MeshPhongMaterial({ color: 0xff9500 }); +const torus = new THREE.Mesh(torusGeometry, phongMaterial); +torus.rotation.set(0.5, 0.5, 0); +scene.add(torus); + +const strangeGeometry = new THREE.DodecahedronGeometry(7); +const lambertMaterial = new THREE.MeshLambertMaterial({ color: 0xeaeff2 }); +const dodecahedron = new THREE.Mesh(strangeGeometry, lambertMaterial); +dodecahedron.position.x = 25; +scene.add(dodecahedron); + +const light = new THREE.PointLight(0xffffff); +light.position.set(-10, 15, 50); +scene.add(light); -## Conclusion +let t = 0; +function render() { + t += 0.01; + requestAnimationFrame(render); + cube.rotation.y += 0.01; + torus.scale.y = Math.abs(Math.sin(t)); + dodecahedron.position.y = -7 * Math.sin(t * 2); + renderer.render(scene, camera); +} +render(); +``` -Here's the final code: +```css hidden live-sample___three-js-animation +body, +canvas { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-size: 0; +} +``` -{{JSFiddleEmbed("https://jsfiddle.net/rybr720u/","","350")}} +{{embedlivesample("three-js-animation", "", "400px")}} -You can also [see it on GitHub](https://github.com/end3r/MDN-Games-3D/blob/gh-pages/Three.js/shapes.html) and [fork the repository](https://github.com/end3r/MDN-Games-3D/), if you want to play with it locally. Now you understand the basics of Three.js, you can jump back to the parent page, [3D on the Web](/en-US/docs/Games/Techniques/3D_on_the_web). +## Summary -You could also try learning raw WebGL, to gain a better understanding of what's going on underneath. See our [WebGL documentation](/en-US/docs/Web/API/WebGL_API). +Now you know the basics of Three.js; happy experimentation! +You can continue reading the [3D Games on the Web](/en-US/docs/Games/Techniques/3D_on_the_web) documentation if you want to learn more. +You could also try learning WebGL, to gain a better understanding of what's going on underneath. +See our [WebGL documentation](/en-US/docs/Web/API/WebGL_API) for more information. diff --git a/files/en-us/games/techniques/3d_on_the_web/glsl_shaders/index.md b/files/en-us/games/techniques/3d_on_the_web/glsl_shaders/index.md index 771bf40eef3998b..d99bbe3c545d205 100644 --- a/files/en-us/games/techniques/3d_on_the_web/glsl_shaders/index.md +++ b/files/en-us/games/techniques/3d_on_the_web/glsl_shaders/index.md @@ -32,7 +32,8 @@ The calculations result in a variable containing the information about the RGBA Let's build a simple demo to explain those shaders in action. Be sure to read [Three.js tutorial](/en-US/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js) first to grasp the concept of the scene, its objects, and materials. -> **Note:** Remember that you don't have to use Three.js or any other library to write your shaders — pure [WebGL](/en-US/docs/Web/API/WebGL_API) (Web Graphics Library) is more than enough. We've used Three.js here to make the background code a lot simpler and clearer to understand, so you can just focus on the shader code. Three.js and other 3D libraries abstract a lot of things for you — if you wanted to create such an example in raw WebGL, you'd have to write a lot of extra code to actually make it work. +> [!NOTE] +> Remember that you don't have to use Three.js or any other library to write your shaders — pure [WebGL](/en-US/docs/Web/API/WebGL_API) (Web Graphics Library) is more than enough. We've used Three.js here to make the background code a lot simpler and clearer to understand, so you can just focus on the shader code. Three.js and other 3D libraries abstract a lot of things for you — if you wanted to create such an example in raw WebGL, you'd have to write a lot of extra code to actually make it work. ### Environment setup @@ -101,7 +102,8 @@ void main() { The resulting `gl_Position` is calculated by multiplying the model-view and the projection matrices by each vector to get the final vertex position, in each case. -> **Note:** You can learn more about _model_, _view_, and _projection transformations_ from the [vertex processing paragraph](/en-US/docs/Games/Techniques/3D_on_the_web/Basic_theory#vertex_processing), and you can also check out the links at the end of this article to learn more about it. +> [!NOTE] +> You can learn more about _model_, _view_, and _projection transformations_ from the [vertex processing paragraph](/en-US/docs/Games/Techniques/3D_on_the_web/Basic_theory#vertex_processing), and you can also check out the links at the end of this article to learn more about it. Both `projectionMatrix` and `modelViewMatrix` are provided by Three.js and the vector is passed with the new 3D position, which results in the original cube moving 10 units along the `x` axis and 5 units along the `z` axis, translated via a shader. We can ignore the fourth parameter and leave it with the default `1.0` value; this is used to manipulate the clipping of the vertex position in the 3D space, but we don't need in our case. diff --git a/files/en-us/games/techniques/3d_on_the_web/index.md b/files/en-us/games/techniques/3d_on_the_web/index.md index 7b5c26aac080207..d38488ae2f450ca 100644 --- a/files/en-us/games/techniques/3d_on_the_web/index.md +++ b/files/en-us/games/techniques/3d_on_the_web/index.md @@ -43,7 +43,7 @@ There's also the [Building up a basic demo with A-Frame](/en-US/docs/Games/Techn Coding raw WebGL is fairly complex, but you'll want to get to grips with it in the long run, as your projects get more advanced (see our [WebGL documentation](/en-US/docs/Web/API/WebGL_API) to get started.) For real-world projects you'll probably also make use of a framework to speed up development and help you manage the project you're working on. Using a framework for 3D games also helps optimize the performance as a lot is taken care of by the tools you use, so you can focus on building the game itself. -The most popular JavaScript 3D library is [Three.js](https://threejs.org/), a multipurpose tool that makes common 3D techniques simpler to implement. There are other popular game development libraries and frameworks worth checking too; [A-Frame](https://aframe.io), [PlayCanvas](https://playcanvas.com/) and [Babylon.js](https://www.babylonjs.com/) are among the most recognizable ones with rich documentation, online editors and active communities. +The most popular JavaScript 3D library is [Three.js](https://threejs.org/), a multipurpose tool that makes common 3D techniques simpler to implement. There are other popular game development libraries and frameworks worth checking too; [A-Frame](https://aframe.io/), [PlayCanvas](https://playcanvas.com/) and [Babylon.js](https://www.babylonjs.com/) are among the most recognizable ones with rich documentation, online editors and active communities. ### Building up a basic demo with A-Frame @@ -63,7 +63,7 @@ Three.js, like any other library, gives you a huge advantage: instead of writing ### Other tools -Both [Unity](https://unity.com/) and [Unreal](https://www.unrealengine.com/) can export your game to [WebGL](/en-US/docs/Web/API/WebGL_API) with [asm.js](/en-US/docs/Games/Tools/asm.js), so you're free to use their tools and techniques to build games that will be exported to the web. +Both [Unity](https://unity.com/) and [Unreal](https://www.unrealengine.com/en-US) can export your game to [WebGL](/en-US/docs/Web/API/WebGL_API) with [asm.js](/en-US/docs/Games/Tools/asm.js), so you're free to use their tools and techniques to build games that will be exported to the web. ![Illustration of three 3D geometry shapes: a grey torus, a blue cube, and a yellow cylinder.](shapes.png) diff --git a/files/en-us/games/techniques/3d_on_the_web/webxr/index.md b/files/en-us/games/techniques/3d_on_the_web/webxr/index.md index 0090cbc5b64d6c0..faad651185c7077 100644 --- a/files/en-us/games/techniques/3d_on_the_web/webxr/index.md +++ b/files/en-us/games/techniques/3d_on_the_web/webxr/index.md @@ -8,7 +8,8 @@ page-type: guide The concepts of virtual reality (VR) and augmented reality (AR) aren't new, but the technology is more accessible than ever. We can also use a JavaScript API to make use of it in web applications. This article introduces WebXR from the perspective of its use in games. -> **Note:** You may see references to the non-standard WebVR API. WebVR was never ratified as a standard, was implemented and enabled by default in very few browsers, and supported only a few devices. The **WebVR** API is replaced by the [**WebXR** Device API](/en-US/docs/Web/API/WebXR_Device_API). +> [!NOTE] +> You may see references to the non-standard WebVR API. WebVR was never ratified as a standard, was implemented and enabled by default in very few browsers, and supported only a few devices. The **WebVR** API is replaced by the [**WebXR** Device API](/en-US/docs/Web/API/WebXR_Device_API). ## VR devices diff --git a/files/en-us/games/techniques/async_scripts/index.md b/files/en-us/games/techniques/async_scripts/index.md index 878158e97444d15..df6346cf8a2ea41 100644 --- a/files/en-us/games/techniques/async_scripts/index.md +++ b/files/en-us/games/techniques/async_scripts/index.md @@ -28,7 +28,7 @@ document.body.appendChild(script); ## When is async not async? -Two common situations in which a script is \*not\* async (as [defined by the HTML spec](https://html.spec.whatwg.org/multipage/scripting.html)) are: +Two common situations in which a script is _not_ async (as [defined by the HTML spec](https://html.spec.whatwg.org/multipage/scripting.html)) are: ```html -``` - -This code does the following: - -- On [window load event](/en-US/docs/Web/API/Window/load_event) it initializes `TabsManual` [class](/en-US/docs/Learn/JavaScript/Objects/Classes_in_JavaScript) for all the `tablist` elements. -- When a `TabsManual` object is created, in the constructor all the tab and panel references are collected in `tabs` and `tabpanels` variables, so we can easily do things to them later on. -- The constructor also registers [`click`](/en-US/docs/Web/API/Element/click_event) and [`keydown`](/en-US/docs/Web/API/Element/keydown_event) event handlers on all the tabs. The event handlers include logic about what should happen when a tab is selected using a click or keypress. -- In the `setSelectedTab(currentTab)` function, the following occurs: - - - A `for` loop is used to cycle through all the tabs and deselect them by setting `aria-selected` property to `false` and by setting `is-hidden` class on corresponding panels. - - On the selected tab (`currentTab`) the `aria-selected` is set to `true` and `is-hidden` class is removed from the corresponding panel. - -- The code also has logic to support keyboard navigation using `Left arrow`, `Right arrow`, `Home`, and `End` keys. - -## A fixed position tabbed info-box - -In our second example, we will take our first example — our info-box — and add it into the context of a full web page. But not only that — we'll give it a fixed position so that it stays in the same position in the browser window. When the main content scrolls, the info-box will stay in the same position on the screen. Our finished example will look like this: - -![Info-box is a container with 3 tabs with the first tab selected and only the contents of the first tab are displayed. It is given a fixed position. The info-box is positioned at the top left corner of the window with a width of 452 pixels. A container of fake content occupies the rest right half of the window; the fake content container is taller than the window and is scrollable. When the page is scrolled, the right-hand side container moves while the info-box stays fixed in the same position on the screen. ](fixed-info-box.png) - -> **Note:** You can see the finished example running live at [fixed-info-box.html](https://mdn.github.io/learning-area/css/css-layout/practical-positioning-examples/fixed-info-box.html) ([source code](https://github.com/mdn/learning-area/blob/main/css/css-layout/practical-positioning-examples/fixed-info-box.html)). Check it out to get an idea of what you will be building in this section of the article. - -As a starting point, you can use your completed example from the first section of the article, or make a local copy of [info-box.html](https://github.com/mdn/learning-area/blob/main/css/css-layout/practical-positioning-examples/info-box.html) from our GitHub repo. - -### HTML additions - -First of all, we need some additional HTML to represent the webpage's main content. Add the following {{htmlelement("section")}} just below your opening {{htmlelement("body")}} tag, just before the existing section: - -```html -
-

Fake content

-

- This is fake content. Your main web page contents would probably go here. -

-

- This is fake content. Your main web page contents would probably go here. -

-

- This is fake content. Your main web page contents would probably go here. -

-

- This is fake content. Your main web page contents would probably go here. -

-

- This is fake content. Your main web page contents would probably go here. -

-

- This is fake content. Your main web page contents would probably go here. -

-

- This is fake content. Your main web page contents would probably go here. -

-

- This is fake content. Your main web page contents would probably go here. -

-
-``` - -> **Note:** You can feel free to change the fake content for some real content if you like. - -### Changes to the existing CSS - -Next we need to make some small changes to the existing CSS, to get the info-box placed and positioned. Change your `.info-box` rule to get rid of `margin: 0 auto;` (we no longer want the info-box centered), add {{cssxref("position")}}`: fixed;`, and stick it to the {{cssxref("top")}} of the browser viewport. - -It should now look like this: - -```css -.info-box { - width: 452px; - height: 400px; - margin: 0 auto; - position: fixed; - top: 0; -} -``` - -### Styling the main content - -The only thing left for this example is to provide the main content with some styling. Add the following rule underneath the rest of your CSS: - -```css -.fake-content { - background-color: #a60000; - color: white; - padding: 10px; - height: 2000px; - margin-left: 470px; -} - -.fake-content p { - margin-bottom: 200px; -} -``` - -To start with, we give the content the same {{cssxref("background-color")}}, {{cssxref("color")}}, and {{cssxref("padding")}} as the info-box panels. We then give it a large {{cssxref("margin-left")}} to move it over to the right, making space for the info-box to sit in, so it is not overlapping anything else. - -This marks the end of the second example; we hope you'll find the third just as interesting. - -## A sliding hidden panel - -The final example we'll present here is a panel that slides on and off the screen at the press of an icon — as mentioned earlier, this is popular for situations like mobile layouts, where the available screen space is small, so you don't want to use up most of it by showing a menu or info panel instead of the useful content. - -Our finished example will look like this: - -![A blank screen on the left 60% of the screen with a 40% width panel displaying information on the right. A 'question mark' icon is in the top-right corner. The panel slides on and off the screen at the press of this 'question mark' icon.](hidden-sliding-panel.png) - -> **Note:** You can see the finished example running live at [hidden-info-panel.html](https://mdn.github.io/learning-area/css/css-layout/practical-positioning-examples/hidden-info-panel.html) ([source code](https://github.com/mdn/learning-area/blob/main/css/css-layout/practical-positioning-examples/hidden-info-panel.html)). Check it out to get an idea of what you will be building in this section of the article. - -As a starting point, make a local copy of [hidden-info-panel-start.html](https://github.com/mdn/learning-area/blob/main/css/css-layout/practical-positioning-examples/hidden-info-panel-start.html) from our GitHub repo. This doesn't follow on from the previous example, so a fresh start file is required. Let's have a look at the HTML in the file: - -```html-nolint - - - -``` - -To start with here we've got a {{htmlelement("button")}} element with a special question mark character as the button text. The button will be pressed to show/hide the [`aside`](/en-US/docs/Web/HTML/Element/aside) info panel. In the below sections we'll explain how this all works. - -### Styling the button - -First let's deal with the button — add the following CSS in between your {{htmlelement("style")}} tags: - -```css -#menu-button { - position: absolute; - top: 0.5rem; - right: 0.5rem; - z-index: 1; - - font-size: 3rem; - cursor: pointer; - border: none; - background-color: transparent; -} -``` - -The first rule styles the ` - - -``` - -```html hidden -
-

Using <input>

-

- - - -

-

Using <button>

-

- - - -

-
-``` - -```css hidden -button, -input { - display: none; -} -.buttondemo button, -.buttondemo input { - all: revert; -} -``` - -{{ EmbedLiveSample('Actual_buttons', '500', '250') }} - -> **Note:** The `image` input type also renders as a button. We'll cover that later too. - -> **Note:** You can find the examples from this section on GitHub as [button-examples.html](https://github.com/mdn/learning-area/blob/main/html/forms/native-form-widgets/button-examples.html) ([see it live also](https://mdn.github.io/learning-area/html/forms/native-form-widgets/button-examples.html)). - -Below you can find examples of each button `` type, along with the equivalent ` - - -``` - -### reset - -```html - - - -``` - -### anonymous - -```html - - - -``` - -Buttons always behave the same whether you use a {{HTMLElement("button")}} element or an {{HTMLElement("input")}} element. As you can see from the examples, however, {{HTMLElement("button")}} elements let you use HTML in their content, which is inserted between the opening and closing ` - -``` - -```css -input:invalid { - border: 2px dashed red; -} - -input:valid { - border: 2px solid black; -} -``` - -{{EmbedLiveSample("Simple_start_file", "100%", 80)}} - -To begin, make a copy of `fruit-start.html` in a new directory on your hard drive. - -### The required attribute - -The simplest HTML validation feature is the [`required`](/en-US/docs/Web/HTML/Attributes/required) attribute. -To make an input mandatory, add this attribute to the element. -When this attribute is set, the element matches the {{cssxref(':required')}} UI pseudo-class and the form won't submit, displaying an error message on submission when the input is empty. -While empty, the input will also be considered invalid, matching the {{cssxref(':invalid')}} UI pseudo-class. - -Add a `required` attribute to your input, as shown below. - -```html -
- - - -
-``` - -Note the CSS that is included in the example file: - -```css -input:invalid { - border: 2px dashed red; -} - -input:invalid:required { - background-image: linear-gradient(to right, pink, lightgreen); -} - -input:valid { - border: 2px solid black; -} -``` - -This CSS causes the input to have a red dashed border when it is invalid and a more subtle solid black border when valid. -We also added a background gradient when the input is required _and_ invalid. Try out the new behavior in the example below: - -{{EmbedLiveSample("The_required_attribute", "100%", 80)}} - -> **Note:** You can find this example live on GitHub as [fruit-validation.html](https://mdn.github.io/learning-area/html/forms/form-validation/fruit-required.html). See also the [source code](https://github.com/mdn/learning-area/blob/main/html/forms/form-validation/fruit-required.html). - -Try submitting the form without a value. -Note how the invalid input gets focus, a default error message ("Please fill out this field") appears, and the form is prevented from being sent. - -The presence of the `required` attribute on any element that supports this attribute means the element matches the {{cssxref(':required')}} pseudo-class whether it has a value or not. If the {{HTMLElement("input")}} has no value, the `input` will match the {{cssxref(':invalid')}} pseudo-class. - -> **Note:** For good user experience, indicate to the user when form fields are required. -> It isn't only good user experience, it is required by WCAG [accessibility](/en-US/docs/Learn/Accessibility) guidelines. -> Also, only require users to input data you actually need: For example, why do you really need to know someone's gender or title? - -### Validating against a regular expression - -Another useful validation feature is the [`pattern`](/en-US/docs/Web/HTML/Attributes/pattern) attribute, which expects a [Regular Expression](/en-US/docs/Web/JavaScript/Guide/Regular_expressions) as its value. -A regular expression (regexp) is a pattern that can be used to match character combinations in text strings, so regexps are ideal for form validation and serve a variety of other uses in JavaScript. - -Regexps are quite complex, and we don't intend to teach you them exhaustively in this article. -Below are some examples to give you a basic idea of how they work. - -- `a` — Matches one character that is `a` (not `b`, not `aa`, and so on). -- `abc` — Matches `a`, followed by `b`, followed by `c`. -- `ab?c` — Matches `a`, optionally followed by a single `b`, followed by `c`. (`ac` or `abc`) -- `ab*c` — Matches `a`, optionally followed by any number of `b`s, followed by `c`. (`ac`, `abc`, `abbbbbc`, and so on). -- `a|b` — Matches one character that is `a` or `b`. -- `abc|xyz` — Matches exactly `abc` or exactly `xyz` (but not `abcxyz` or `a` or `y`, and so on). - -There are many more possibilities that we don't cover here. -For a complete list and many examples, consult our [Regular expression](/en-US/docs/Web/JavaScript/Guide/Regular_expressions) documentation. - -Let's implement an example. -Update your HTML to add a [`pattern`](/en-US/docs/Web/HTML/Attributes/pattern) attribute like this: - -```html -
- - - -
-``` - -```css hidden -input:invalid { - border: 2px dashed red; -} - -input:valid { - border: 2px solid black; -} -``` - -This gives us the following update — try it out: - -{{EmbedLiveSample("Validating_against_a_regular_expression", "100%", 80)}} - -> **Note:** You can find this example live on GitHub as [fruit-pattern.html](https://mdn.github.io/learning-area/html/forms/form-validation/fruit-pattern.html) (see also the [source code](https://github.com/mdn/learning-area/blob/main/html/forms/form-validation/fruit-pattern.html).) - -In this example, the {{HTMLElement("input")}} element accepts one of four possible values: the strings "banana", "Banana", "cherry", or "Cherry". Regular expressions are case-sensitive, but we've made it support capitalized as well as lower-case versions using an extra "Aa" pattern nested inside square brackets. - -At this point, try changing the value inside the [`pattern`](/en-US/docs/Web/HTML/Attributes/pattern) attribute to equal some of the examples you saw earlier, and look at how that affects the values you can enter to make the input value valid. -Try writing some of your own, and see how it goes. -Make them fruit-related where possible so that your examples make sense! - -If a non-empty value of the {{HTMLElement("input")}} doesn't match the regular expression's pattern, the `input` will match the {{cssxref(':invalid')}} pseudo-class. - -> **Note:** Some {{HTMLElement("input")}} element types don't need a [`pattern`](/en-US/docs/Web/HTML/Attributes/pattern) attribute to be validated against a regular expression. Specifying the `email` type, for example, validates the inputs value against a well-formed email address pattern or a pattern matching a comma-separated list of email addresses if it has the [`multiple`](/en-US/docs/Web/HTML/Attributes/multiple) attribute. - -> **Note:** The {{HTMLElement("textarea")}} element doesn't support the [`pattern`](/en-US/docs/Web/HTML/Attributes/pattern) attribute. - -### Constraining the length of your entries - -You can constrain the character length of all text fields created by {{HTMLElement("input")}} or {{HTMLElement("textarea")}} by using the [`minlength`](/en-US/docs/Web/HTML/Attributes/minlength) and [`maxlength`](/en-US/docs/Web/HTML/Attributes/maxlength) attributes. -A field is invalid if it has a value and that value has fewer characters than the [`minlength`](/en-US/docs/Web/HTML/Attributes/minlength) value or more than the [`maxlength`](/en-US/docs/Web/HTML/Attributes/maxlength) value. - -Browsers often don't let the user type a longer value than expected into text fields. A better user experience than just using `maxlength` is to also provide character count feedback in an accessible manner and let them edit their content down to size. -An example of this is the character limit when posting on social media. JavaScript, including [solutions using `maxlength`](https://github.com/mimo84/bootstrap-maxlength), can be used to provide this. - -> **Note:** Length constraints are never reported if the value is set programmatically. They are only reported for user-provided input. - -### Constraining the values of your entries - -For number fields (i.e. [``](/en-US/docs/Web/HTML/Element/input/number)), the [`min`](/en-US/docs/Web/HTML/Attributes/min) and [`max`](/en-US/docs/Web/HTML/Attributes/max) attributes can be used to provide a range of valid values. -If the field contains a value outside this range, it will be invalid. - -Let's look at another example. -Create a new copy of the [fruit-start.html](https://github.com/mdn/learning-area/blob/main/html/forms/form-validation/fruit-start.html) file. - -Now delete the contents of the `` element, and replace it with the following: - -```html -
-
- - -
-
- - -
-
- -
-
-``` - -- Here you'll see that we've given the `text` field a `minlength` and `maxlength` of six, which is the same length as banana and cherry. -- We've also given the `number` field a `min` of one and a `max` of ten. - Entered numbers outside this range will show as invalid; users won't be able to use the increment/decrement arrows to move the value outside of this range. - If the user manually enters a number outside of this range, the data is invalid. - The number is not required, so removing the value will still result in a valid value. - -```css hidden -input:invalid { - border: 2px dashed red; -} - -input:valid { - border: 2px solid black; -} - -div { - margin-bottom: 10px; -} -``` - -Here is the example running live: - -{{EmbedLiveSample("Constraining_the_values_of_your_entries", "100%", 100)}} - -> **Note:** You can find this example live on GitHub as [fruit-length.html](https://mdn.github.io/learning-area/html/forms/form-validation/fruit-length.html). See also the [source code](https://github.com/mdn/learning-area/blob/main/html/forms/form-validation/fruit-length.html). - -> **Note:** `` (and other types, such as `range` and `date`) can also take a [`step`](/en-US/docs/Web/HTML/Attributes/step) attribute, which specifies what increment the value will go up or down by when the input controls are used (such as the up and down number buttons). -> In the above example we've not included a `step` attribute, so the value defaults to `1`. This means that floats, like 3.2, will also show as invalid. - -### Full example - -Here is a full example to show usage of HTML's built-in validation features. -First, some HTML: - -```html -
-
- - Do you have a driver's license?* - - - - -
-

- - - -

-

- - - - - - - - - - -

-

- - -

-

- - -

-

- -

-
-``` - -And now some CSS to style the HTML: - -```css -form { - font: 1em sans-serif; - max-width: 320px; -} - -p > label { - display: block; -} - -input[type="text"], -input[type="email"], -input[type="number"], -textarea, -fieldset { - width: 100%; - border: 1px solid #333; - box-sizing: border-box; -} - -input:invalid { - box-shadow: 0 0 5px 1px red; -} - -input:focus:invalid { - box-shadow: none; -} -``` - -This renders as follows: - -{{EmbedLiveSample("Full_example", "100%", 420)}} - -See [Validation-related attributes](/en-US/docs/Web/HTML/Constraint_validation#validation-related_attributes) for a complete list of attributes that can be used to constrain input values and the input types that support them. - -> **Note:** You can find this example live on GitHub as [full-example.html](https://mdn.github.io/learning-area/html/forms/form-validation/full-example.html) (see also the [source code](https://github.com/mdn/learning-area/blob/main/html/forms/form-validation/full-example.html).) - -## Validating forms using JavaScript - -You must use JavaScript if you want to take control over the look and feel of native error messages. -In this section we will look at the different ways to do this. - -### The Constraint Validation API - -The Constraint Validation API consists of a set of methods and properties available on the following form element DOM interfaces: - -- [`HTMLButtonElement`](/en-US/docs/Web/API/HTMLButtonElement) (represents a [` - - -``` - -Add the above code into the body of your HTML. - -### Organizing your assets - -This is where the fun begins! Before we start coding, we need three additional assets: - -1. [The postcard background](background.jpg) — download this image and save it in the same directory as your working HTML file. -2. A typewriter font: [The "Mom's Typewriter" font from dafont.com](https://www.dafont.com/moms-typewriter.font?back=theme) — download the TTF file into the same directory as above. -3. A hand-drawn font: [The "Journal" font from dafont.com](https://www.dafont.com/journal.font) — download the TTF file into the same directory as above. - -Your fonts need some more processing before you start: - -1. Go to the fontsquirrel.com [Webfont Generator](https://www.fontsquirrel.com/tools/webfont-generator). -2. Using the form, upload both your font files and generate a webfont kit. Download the kit to your computer. -3. Unzip the provided zip file. -4. Inside the unzipped contents you will find some font files (at the time of writing, two `.woff` files and two `.woff2` files; they might vary in the future.) Copy these files into a directory called fonts, in the same directory as before. We are using two different files for each font to maximize browser compatibility; see our [Web fonts](/en-US/docs/Learn/CSS/Styling_text/Web_fonts) article for a lot more information. - -### The CSS - -Now we can dig into the CSS for the example. Add all the code blocks shown below inside the {{htmlelement("style")}} element, one after another. - -#### Overall layout - -First, we prepare by defining our {{cssxref("@font-face")}} rules, and all the basic styles set on the {{HTMLElement("body")}} and {{HTMLElement("form")}} elements. If the fontsquirrel output was different from what we described above, you can find the correct `@font-face` blocks inside your downloaded webfont kit, in the `stylesheet.css` file (you'll need to replace the below `@font-face` blocks with them, and update the paths to the font files): - -```css -@font-face { - font-family: "handwriting"; - src: - url("fonts/journal-webfont.woff2") format("woff2"), - url("fonts/journal-webfont.woff") format("woff"); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: "typewriter"; - src: - url("fonts/momot___-webfont.woff2") format("woff2"), - url("fonts/momot___-webfont.woff") format("woff"); - font-weight: normal; - font-style: normal; -} - -body { - font: 1.3rem sans-serif; - padding: 0.5em; - margin: 0; - background: #222; -} - -form { - position: relative; - width: 740px; - height: 498px; - margin: 0 auto; - padding: 1em; - box-sizing: border-box; - background: #fff url(background.jpg); - - /* we create our grid */ - display: grid; - grid-gap: 20px; - grid-template-columns: repeat(2, 1fr); - grid-template-rows: 10em 1em 1em 1em; -} -``` - -Notice that we've used some [CSS grid](/en-US/docs/Web/CSS/CSS_grid_layout) and [Flexbox](/en-US/docs/Web/CSS/CSS_flexible_box_layout) to lay out the form. Using this we can easily position our elements, including the title and all the form elements: - -```css -h1 { - font: - 1em "typewriter", - monospace; - align-self: end; -} - -#message { - grid-row: 1 / 5; -} - -#from, -#reply { - display: flex; -} -``` - -#### Labels and controls - -Now we can start working on the form elements themselves. First, let's ensure that the {{HTMLElement("label")}}s are given the right font: - -```css -label { - font: - 0.8em "typewriter", - sans-serif; -} -``` - -The text fields require some common rules. In other words, we remove their {{cssxref("border","borders")}} and {{cssxref("background","backgrounds")}}, and redefine their {{cssxref("padding")}} and {{cssxref("margin")}}: - -```css -input, -textarea { - font: - 1.4em/1.5em "handwriting", - cursive, - sans-serif; - border: none; - padding: 0 10px; - margin: 0; - width: 80%; - background: none; -} -``` - -When one of these fields gains focus, we highlight them with a light grey, transparent, background (it is always important to have focus style, for usability and keyboard accessibility): - -```css -input:focus, -textarea:focus { - background: rgb(0 0 0 / 10%); - border-radius: 5px; -} -``` - -Now that our text fields are complete, we need to adjust the display of the single and multiple-line text fields to match, since they won't typically look the same using the defaults. - -#### Tweaking the textareas - -{{HTMLElement("textarea")}} elements default to being rendered as an inline-block element. The two important things here are the {{cssxref("resize")}} and {{cssxref("overflow")}} properties. While our design is a fixed-size design, and we could use the `resize` property to prevent users from resizing our multi-line text field, it is best to not prevent users from resizing a textarea if they so choose. The {{cssxref("overflow")}} property is used to make the field render more consistently across browsers. Some browsers default to the value `auto`, while some default to the value `scroll`. In our case, it's better to be sure everyone will use `auto`: - -```css -textarea { - display: block; - - padding: 10px; - margin: 10px 0 0 -10px; - width: 100%; - height: 90%; - - border-right: 1px solid; - - /* resize : none; */ - overflow: auto; -} -``` - -#### Styling the submit button - -The {{HTMLElement("button")}} element is really convenient to style with CSS; you can do whatever you want, even using [pseudo-elements](/en-US/docs/Web/CSS/Pseudo-elements): - -```css -button { - padding: 5px; - font: bold 0.6em sans-serif; - border: 2px solid #333; - border-radius: 5px; - background: none; - cursor: pointer; - transform: rotate(-1.5deg); -} - -button:after { - content: " >>>"; -} - -button:hover, -button:focus { - background: #000; - color: #fff; -} -``` - -### The final result - -And voilà! Your form should now look like this: - -![The final look and layout of the form after applying all styling and tweaking to it as described above](updated-form-screenshot.jpg) - -> **Note:** If your example does not work quite as you expected and you want to check it against our version, you can find it on GitHub — see it [running live](https://mdn.github.io/learning-area/html/forms/postcard-example/) (also see [the source code](https://github.com/mdn/learning-area/tree/main/html/forms/postcard-example)). - -## Test your skills - -You've reached the end of this article, but can you remember the most important information? You can find some further tests to verify that you've retained this information before you move on — see [Test your skills: Styling basics](/en-US/docs/Learn/Forms/Test_your_skills:_Styling_basics). - -## Summary - -As you can see, as long as we want to build forms with just text fields and buttons, it's easy to style them using CSS. [In the next article](/en-US/docs/Learn/Forms/Advanced_form_styling), we will see how to handle form widgets which fall into the "bad" and "ugly" categories. - -{{PreviousMenuNext("Learn/Forms/Other_form_controls","Learn/Forms/Advanced_form_styling","Learn/Forms")}} - -### Advanced Topics - -- [How to build custom form controls](/en-US/docs/Learn/Forms/How_to_build_custom_form_controls) -- [Sending forms through JavaScript](/en-US/docs/Learn/Forms/Sending_forms_through_JavaScript) -- [Property compatibility table for form widgets](/en-US/docs/Learn/Forms/Property_compatibility_table_for_form_controls) diff --git a/files/en-us/learn/forms/test_your_skills_colon__advanced_styling/index.md b/files/en-us/learn/forms/test_your_skills_colon__advanced_styling/index.md deleted file mode 100644 index 4502ced8e1357b0..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__advanced_styling/index.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Test your skills: Advanced styling" -slug: Learn/Forms/Test_your_skills:_Advanced_styling -page-type: learn-module-assessment ---- - -{{learnsidebar}} - -The aim of this skill test is to assess whether you've understood our [Advanced form styling](/en-US/docs/Learn/Forms/Advanced_form_styling) and [UI pseudo-classes](/en-US/docs/Learn/Forms/UI_pseudo-classes) articles. - -> **Note:** You can try solutions in the interactive editors on this page or in an online editor such as [CodePen](https://codepen.io/), [JSFiddle](https://jsfiddle.net/), or [Glitch](https://glitch.com/). -> -> If you get stuck, you can reach out to us in one of our [communication channels](/en-US/docs/MDN/Community/Communication_channels). - -## Advanced form styling 1 - -In our first advanced styling tasks, we want you to handle making a search input as consistent as possible across browsers — a trickier task than with standard text inputs, even on modern browsers. - -We've already provided you with a basic reset to build upon. - -1. First of all, try giving the search box a consistent width, height, padding, and border color across browsers. -2. You'll find that some browsers will not behave in terms of the form element's height. This is due to native OS styling being used in some cases. How can you remove this native styling? -3. Once you've removed the native styling, you'll need to add back one of the features it was providing, to keep the same look and feel we originally had. How do you do this? -4. One thing that is inconsistent across browsers (particularly looking at Safari here) is the position of the standard blue focus outline. How can you remove this? -5. There is a major problem with just getting rid of the blue focus outline. What is it? Can you add some kind of styling back in so that users can tell when the search box is being hovered or focused? -6. Another thing that commonly denotes a search box is a magnifying glass icon. We've made one available in the same directory as our HTML files — see [search-24px.png](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/advanced-styling/search-24px.png) — plus a `
` element after the search input to help you attach it, should you need it. Can you figure out a sensible way to attach it, and can you use some CSS to get it to sit to the right of the search box, and be lined up vertically as well? - -Try updating the live code below to recreate the finished example: - -{{EmbedGHLiveSample("learning-area/html/forms/tasks/advanced-styling/advanced-styling1.html", '100%', 700)}} - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/advanced-styling/advanced-styling1-download.html) to work in your own editor or in an online editor. - -## Advanced form styling 2 - -In our next task we provide you with a set of three radio buttons. We want you to give them custom styling. - -We've already provided you with a basic reset to build upon. - -1. First of all, get rid of their default styling. -2. Next, give the radio buttons a reasonable base style — the style they have when the page first loads. This can be anything you like, but you probably want to set a width and height (of somewhere between about 18 and 24 pixels), and a subtle border and/or background color. -3. Now give the radio buttons a different style for when they are selected. -4. Align the radio buttons nicely with the labels. - -Try updating the live code below to recreate the finished example: - -{{EmbedGHLiveSample("learning-area/html/forms/tasks/advanced-styling/advanced-styling2.html", '100%', 700)}} - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/advanced-styling/advanced-styling2-download.html) to work in your own editor or in an online editor. - -## Advanced form styling 3 - -In our final task for this assessment series, we provide you with a feedback form that is already nicely-styled — you've already seen something similar if you've worked through our [UI pseudo-classes](/en-US/docs/Learn/Forms/UI_pseudo-classes) article, and now we want you to come up with your own solution. - -What we'd like you to do is make use of some advanced pseudo-classes to provide some useful indicators of validity. - -1. First of all, we want you to provide some specific styling to visually indicate which inputs have to be filled in — they cannot be left empty. -2. Second, we want you to provide a useful visual indicator of whether the data entered inside each input is valid or not. - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/advanced-styling/advanced-styling3-download.html) to work in your own editor or in an online editor. diff --git a/files/en-us/learn/forms/test_your_skills_colon__basic_controls/index.md b/files/en-us/learn/forms/test_your_skills_colon__basic_controls/index.md deleted file mode 100644 index 5d997d9d6b7936b..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__basic_controls/index.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Test your skills: Basic controls" -slug: Learn/Forms/Test_your_skills:_Basic_controls -page-type: learn-module-assessment ---- - -{{learnsidebar}} - -The aim of this skill test is to assess whether you've understood our [Basic native form controls](/en-US/docs/Learn/Forms/Basic_native_form_controls) article. - -> **Note:** You can try solutions in the interactive editors on this page or in an online editor such as [CodePen](https://codepen.io/), [JSFiddle](https://jsfiddle.net/), or [Glitch](https://glitch.com/). -> -> If you get stuck, you can reach out to us in one of our [communication channels](/en-US/docs/MDN/Community/Communication_channels). - -## Basic controls 1 - -This task starts you off nice and gently by asking you to create two `` elements, for a user's ID and password, along with a submit button. - -1. Create appropriate inputs for user ID and password. -2. You should also associate them with their text labels semantically. -3. Create a submit button inside the remaining list item, with button text of "Log in". - -Try updating the live code below to recreate the finished example: - -{{EmbedGHLiveSample("learning-area/html/forms/tasks/basic-controls/basic-controls1.html", '100%', 700)}} - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/basic-controls/basic-controls1-download.html) to work in your own editor or in an online editor. - -## Basic controls 2 - -The next task requires you to create working sets of checkboxes and radio buttons, from the provided text labels. - -1. Turn the first `
`'s contents into a set of radio buttons — you should only be able to select one pony character at once. -2. Make it so that the first radio button is selected upon page load. -3. Turn the second `
`'s content into a set of checkboxes. -4. Add a couple more hotdog choices of your own. - -Try updating the live code below to recreate the finished example: - -{{EmbedGHLiveSample("learning-area/html/forms/tasks/basic-controls/basic-controls2.html", '100%', 700)}} - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/basic-controls/basic-controls2-download.html) to work in your own editor or in an online editor. - -## Basic controls 3 - -The final task in this set requires you to create a file picker. - -1. Create a basic file picker. -2. Allow the user to pick multiple files at once. -3. Allow the file picker to accept JPG and PNG images only. - -Try updating the live code below to recreate the finished example: - -{{EmbedGHLiveSample("learning-area/html/forms/tasks/basic-controls/basic-controls3.html", '100%', 700)}} - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/basic-controls/basic-controls3-download.html) to work in your own editor or in an online editor. diff --git a/files/en-us/learn/forms/test_your_skills_colon__form_structure/index.md b/files/en-us/learn/forms/test_your_skills_colon__form_structure/index.md deleted file mode 100644 index 2d9df5078c5aa1a..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__form_structure/index.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Test your skills: Form structure" -slug: Learn/Forms/Test_your_skills:_Form_structure -page-type: learn-module-assessment ---- - -{{learnsidebar}} - -The aim of this skill test is to assess whether you've understood our [How to structure a web form](/en-US/docs/Learn/Forms/How_to_structure_a_web_form) article. - -> **Note:** You can try solutions in the interactive editors on this page or in an online editor such as [CodePen](https://codepen.io/), [JSFiddle](https://jsfiddle.net/), or [Glitch](https://glitch.com/). -> -> If you get stuck, you can reach out to us in one of our [communication channels](/en-US/docs/MDN/Community/Communication_channels). - -## Form structure 1 - -In this task we want you to structure the provided form features: - -1. Separate out the first two and second two form fields into two distinct containers, each with a descriptive legend (use "Personal details" for the first two, and "Comment information" for the second two). -2. Mark up each text label with an appropriate element so that it is semantically associated with its respective form field. -3. Add a suitable set of structural elements around the label/field pairs to separate them out. - -{{EmbedGHLiveSample("learning-area/html/forms/tasks/form-structure/form-structure1.html", '100%', 700)}} - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/form-structure/form-structure1-download.html) to work in your own editor or in an online editor. diff --git a/files/en-us/learn/forms/test_your_skills_colon__form_validation/index.md b/files/en-us/learn/forms/test_your_skills_colon__form_validation/index.md deleted file mode 100644 index 64caf2a714364d7..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__form_validation/index.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Test your skills: Form validation" -slug: Learn/Forms/Test_your_skills:_Form_validation -page-type: learn-module-assessment ---- - -{{learnsidebar}} - -The aim of this skill test is to assess whether you've understood our [Client-side form validation](/en-US/docs/Learn/Forms/Form_validation) article. - -> **Note:** You can try solutions in the interactive editors on this page or in an online editor such as [CodePen](https://codepen.io/), [JSFiddle](https://jsfiddle.net/), or [Glitch](https://glitch.com/). -> -> If you get stuck, you can reach out to us in one of our [communication channels](/en-US/docs/MDN/Community/Communication_channels). - -## Form validation 1 - -In this task, we are providing you with a simple support query form, and we want you to add some validation features to it: - -1. Make all of the input fields mandatory to complete before the form can be submitted. -2. Change the type of the "Email address" and "Phone number" fields to make the browser apply some more specific validation suitable for the data being asked for. -3. Give the "User name" field a required length of between 5 and 20 characters, the "Phone number" field a maximum length of 15 characters, and the "Comment" field a maximum length of 200 characters. - -Try submitting your form — it should refuse to submit until the above constraints are followed, and give suitable error messages. To help, you might want to consider adding some simple CSS to show when a form field is valid or invalid. - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/form-validation/form-validation1-download.html) to work in your own editor or in an online editor. - -## Form validation 2 - -Now we want you to take the same form you saw in the previous task (use your previous answer if you want to), and add some more specific pattern validation to the first three fields using regular expressions. - -1. All of the user names in our application consist of a single letter, followed by a dot, followed by three or more letters or numbers. All letters should be lowercase. -2. All of the email addresses for our users consist of one or more letters (lower or upper case) or numbers, followed by "@bigcorp.eu". -3. Remove the length validation from the phone number field if it is present, and set it so that it accepts 10 digits — either 10 digits in a row, or a pattern of three digits, three digits, then four digits, separated by either spaces, dashes, or dots. - -> **Note:** Regular expressions are really challenging if you are new to them, but don't despair — have a go and see where you get to; there is no shame in asking for some help. You can find everything you need to answer these questions at our [regular expression reference](/en-US/docs/Web/JavaScript/Guide/Regular_expressions), and by searching on [Stack Overflow](https://stackoverflow.com/). - -Again, to help you might want to consider adding some simple CSS to show when a form field is valid or invalid. - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/form-validation/form-validation2-download.html) to work in your own editor or in an online editor. - -## Form validation 3 - -In our final task for this set, we are providing you with a similar example to what you saw in the accompanying article — a simple email address entry input. We would like you to use the constraint validation API, plus some form validation attributes, to program some custom error messages. - -1. Make the input mandatory to fill in, and give it a minimum length of 10 characters. -2. Add an event listener that checks whether the inputted value is an email address, and whether it is long enough. If it doesn't look like an email address or is too short, provide the user with appropriate custom error messages. - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/form-validation/form-validation3-download.html) to work in your own editor or in an online editor. diff --git a/files/en-us/learn/forms/test_your_skills_colon__html5_controls/index.md b/files/en-us/learn/forms/test_your_skills_colon__html5_controls/index.md deleted file mode 100644 index 6f824a84732a229..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__html5_controls/index.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Test your skills: HTML5 controls" -slug: Learn/Forms/Test_your_skills:_HTML5_controls -page-type: learn-module-assessment ---- - -{{learnsidebar}} - -The aim of this skill test is to assess whether you've understood our [The HTML5 input types](/en-US/docs/Learn/Forms/HTML5_input_types) article. - -> **Note:** You can try solutions in the interactive editors on this page or in an online editor such as [CodePen](https://codepen.io/), [JSFiddle](https://jsfiddle.net/), or [Glitch](https://glitch.com/). -> -> If you get stuck, you can reach out to us in one of our [communication channels](/en-US/docs/MDN/Community/Communication_channels). - -## HTML controls 1 - -First, let's explore some input types. Create appropriate inputs for a user to update their details for: - -1. Email -2. Website -3. Phone number -4. Favorite color - -Try updating the live code below to recreate the finished example: - -{{EmbedGHLiveSample("learning-area/html/forms/tasks/html5-controls/html5-controls1.html", '100%', 700)}} - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/html5-controls/html5-controls1-download.html) to work in your own editor or in an online editor. - -## HTML controls 2 - -Next, we want you to implement a slider control to allow the user to choose a maximum number of people to invite to their party. - -1. Implement a basic slider control to go along with the provided label. -2. Give it a minimum value of 1, maximum value of 30, initial value of 10 and element `id` of `max-invite`. -3. Create a corresponding output element to put the current value of the slider into. Give it a class of `invite-output`, and semantically associate it with the input. If you do this correctly, the JavaScript included on the page will automatically update the output value when the slider is moved. - -Try updating the live code below to recreate the finished example: - -{{EmbedGHLiveSample("learning-area/html/forms/tasks/html5-controls/html5-controls2.html", '100%', 700)}} - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/html5-controls/html5-controls2-download.html) to work in your own editor or in an online editor. diff --git a/files/en-us/learn/forms/test_your_skills_colon__other_controls/index.md b/files/en-us/learn/forms/test_your_skills_colon__other_controls/index.md deleted file mode 100644 index f7d611d4eae233d..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__other_controls/index.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: "Test your skills: Other controls" -slug: Learn/Forms/Test_your_skills:_Other_controls -page-type: learn-module-assessment ---- - -{{learnsidebar}} - -The aim of this skill test is to assess whether you've understood our [Other form controls](/en-US/docs/Learn/Forms/Other_form_controls) article. - -> **Note:** You can try solutions in the interactive editors on this page or in an online editor such as [CodePen](https://codepen.io/), [JSFiddle](https://jsfiddle.net/), or [Glitch](https://glitch.com/). -> -> If you get stuck, you can reach out to us in one of our [communication channels](/en-US/docs/MDN/Community/Communication_channels). - -## Other controls 1 - -In our first "other controls" assessment, we'll get you to create a multi-line text input. - -1. Create a basic multi-line text input. -2. Associate it semantically with the provided "Comment" label. -3. Give the input 35 columns, and 10 rows of space in which to add comments. -4. Give the comments a maximum length of 100 characters. - -To create the input, update the HTML code in the editor below: - -{{EmbedGHLiveSample("learning-area/html/forms/tasks/other-controls/other-controls1.html", '100%', 500)}} - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/other-controls/other-controls1-download.html) to work in your own editor or in an online editor. - -## Other controls 2 - -Now it's time to have a go at implementing a drop-down select menu, to allow a user to pick their favorite food from the choices provided. - -1. Create your basic select box structure. -2. Associate it semantically with the provided "food" label. -3. Inside the list, split the choices up into 2 subgroups — "mains" and "snacks". - -To create the menu, update the HTML code in the editor below: - -{{EmbedGHLiveSample("learning-area/html/forms/tasks/other-controls/other-controls2.html", '100%', 500)}} - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/other-controls/other-controls2-download.html) to work in your own editor or in an online editor. - -## Other controls 3 - -In our final task of this set, we start with much the same list of food choices. However, this time we want to do things differently: - -1. Create a basic text input that is semantically associated with the provided label. -2. Put the food choices into a list that can be associated with a form input. -3. Associate the list with your text input, so that when you type characters, any of the list options that match the character sequence are given in a dropdown list as autocomplete suggestions. - -To create the input, update the HTML code in the editor below: - -{{EmbedGHLiveSample("learning-area/html/forms/tasks/other-controls/other-controls3.html", '100%', 500)}} - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/other-controls/other-controls3-download.html) to work in your own editor or in an online editor. diff --git a/files/en-us/learn/forms/test_your_skills_colon__styling_basics/index.md b/files/en-us/learn/forms/test_your_skills_colon__styling_basics/index.md deleted file mode 100644 index 9c1ddd3604e6980..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__styling_basics/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Test your skills: Styling basics" -slug: Learn/Forms/Test_your_skills:_Styling_basics -page-type: learn-module-assessment ---- - -{{learnsidebar}} - -The aim of this skill test is to assess whether you've understood our [Styling web forms](/en-US/docs/Learn/Forms/Styling_web_forms) article. - -> **Note:** You can try solutions in the interactive editors on this page or in an online editor such as [CodePen](https://codepen.io/), [JSFiddle](https://jsfiddle.net/), or [Glitch](https://glitch.com/). -> -> If you get stuck, you can reach out to us in one of our [communication channels](/en-US/docs/MDN/Community/Communication_channels). - -## Styling basics 1 - -Our basic form styling assessment is fairly free-form, and you have a lot of flexibility over what you end up doing here. But your CSS should aim to fulfill the following requirements: - -1. Add some kind of lightweight "reset" to make fonts, padding, margin, and sizing more consistent to begin with. -2. On top of that, add in some nice, consistent styling for the inputs and button. -3. Use some kind of layout technique to make the inputs and labels line up neatly. - -> **Callout:** -> -> [Download the starting point for this task](https://github.com/mdn/learning-area/blob/main/html/forms/tasks/styling-basics/styling-basics1-download.html) to work in your own editor or in an online editor. diff --git a/files/en-us/learn/forms/ui_pseudo-classes/index.md b/files/en-us/learn/forms/ui_pseudo-classes/index.md deleted file mode 100644 index f0873237bf2e529..000000000000000 --- a/files/en-us/learn/forms/ui_pseudo-classes/index.md +++ /dev/null @@ -1,628 +0,0 @@ ---- -title: UI pseudo-classes -slug: Learn/Forms/UI_pseudo-classes -page-type: learn-module-chapter ---- - -{{LearnSidebar}}{{PreviousMenuNext("Learn/Forms/Advanced_form_styling", "Learn/Forms/Form_validation", "Learn/Forms")}} - -In the previous articles, we covered the styling of various form controls in a general manner. This included some usage of pseudo-classes, for example, using `:checked` to target a checkbox only when it is selected. In this article, we explore the different UI pseudo-classes available for styling forms in different states. - - - - - - - - - - - - -
Prerequisites: - A basic understanding of - HTML and - CSS, including general - knowledge of - pseudo-classes and pseudo-elements. -
Objective: - To understand what parts of forms are hard to style, and why; to learn - what can be done to customize them. -
- -## What pseudo-classes do we have available? - -The original pseudo-classes (from [CSS 2.1](https://www.w3.org/TR/CSS21/selector.html#dynamic-pseudo-classes)) that are relevant to forms are: - -- {{cssxref(":hover")}}: Selects an element only when it is being hovered over by a mouse pointer. -- {{cssxref(":focus")}}: Selects an element only when it is focused (i.e. by being tabbed to via the keyboard). -- {{cssxref(":active")}}: selects an element only when it is being activated (i.e. while it is being clicked on, or when the - - Return - - / - - Enter - - key is being pressed down in the case of a keyboard activation). - -These basic pseudo-classes should be familiar to you now. [CSS selectors](/en-US/docs/Web/CSS/CSS_selectors) provide several other pseudo-classes related to HTML forms. These provide several useful targeting conditions that you can take advantage of. We'll discuss these in more detail in the sections below, but briefly, the main ones we'll be looking at are: - -- {{cssxref(':required')}} and {{cssxref(':optional')}}: Target elements that can be required (e.g. elements that support the [`required`](/en-US/docs/Web/HTML/Attributes/required) HTML attribute)), based on whether they are required or optional. -- {{cssxref(":valid")}} and {{cssxref(":invalid")}}, and {{cssxref(":in-range")}} and {{cssxref(":out-of-range")}}: Target form controls that are valid/invalid according to form validation constraints set on them, or in-range/out-of-range. -- {{cssxref(":enabled")}} and {{cssxref(":disabled")}}, and {{cssxref(":read-only")}} and {{cssxref(":read-write")}}: Target elements that can be disabled (e.g. elements that support the [`disabled`](/en-US/docs/Web/HTML/Attributes/disabled) HTML attribute), based on whether they are currently enabled or disabled, and read-write or read-only form controls (e.g. elements with the [`readonly`](/en-US/docs/Web/HTML/Attributes/readonly) HTML attribute set). -- {{cssxref(":checked")}}, {{cssxref(":indeterminate")}}, and {{cssxref(":default")}}: Respectively target checkboxes and radio buttons that are checked, in an indeterminate state (neither checked or not checked), and the default selected option when the page loads (e.g. an [``](/en-US/docs/Web/HTML/Element/input/checkbox) with the [`checked`](/en-US/docs/Web/HTML/Element/input#checked) attribute set, or an [`