diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f9a1414e8aed51f..431d60ec7df6c98 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -8,37 +8,36 @@ # Default content owners /files/en-us/ @mdn/yari-content-mdn +# MDN Firefox release notes +/files/en-us/mozilla/ @mdn/core-yari-content + +# Mozilla Add-ons +/files/en-us/mozilla/add-ons/ @mdn/yari-content-mozilla-add-ons + # Accessibility /files/en-us/web/accessibility/ @mdn/yari-content-accessibility -/files/en-us/learn/accessibility/ @mdn/yari-content-accessibility + +# Web API +/files/en-us/web/api/ @mdn/yari-content-web-api # CSS /files/en-us/web/css/ @mdn/yari-content-css -/files/en-us/learn/css/ @mdn/yari-content-css # HTML /files/en-us/web/html/ @mdn/yari-content-html -/files/en-us/learn/html/ @mdn/yari-content-html - -# JavaScript -/files/en-us/web/javascript/ @mdn/yari-content-javascript -/files/en-us/learn/javascript/ @mdn/yari-content-javascript # HTTP /files/en-us/web/http/ @mdn/yari-content-http -/files/en-us/learn/server-side/ @mdn/yari-content-http - -# Web API -/files/en-us/web/api/ @mdn/yari-content-web-api -# Mozilla Add-ons -/files/en-us/mozilla/add-ons/ @mdn/yari-content-mozilla-add-ons +# JavaScript +/files/en-us/web/javascript/ @mdn/yari-content-javascript # MathML /files/en-us/web/mathml/ @mdn/content-mathml -# MDN Firefox Release Notes -/files/en-us/mozilla/firefox @mdn/core-yari-content +# Templates and sidebars (rari) +/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 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/issue-regex-labeler.yml b/.github/issue-regex-labeler.yml index 35d31ebd9ac8088..36e75d768899d27 100644 --- a/.github/issue-regex-labeler.yml +++ b/.github/issue-regex-labeler.yml @@ -19,27 +19,29 @@ Content:HTTP: Content:JS: - '\/docs\/Web\/JavaScript' Content:Learn: - - '\/docs\/Learn\/(Common|Front|Getting|Learning|Performance)' -Content:Learn:Accessibility: - - '\/docs\/Learn\/Accessibility' -Content:Learn:Client-side: - - '\/docs\/Learn\/Tools_and_testing\/(Client-side|Understanding_client-side)' -Content:Learn:Cross-Browser-Testing: - - '\/docs\/Learn\/Tools_and_testing\/Cross_browser_testing' -Content:Learn:CSS: - - '\/docs\/Learn\/CSS' -Content:Learn:Django: - - '\/docs\/Learn\/Server-side\/Django' -Content:Learn:Express: - - '\/docs\/Learn\/Server-side\/Express_Nodejs' -Content:Learn:Forms: - - '\/docs\/Learn\/Forms' -Content:Learn:GitHub: - - '\/docs\/Learn\/Tools_and_testing\/GitHub' -Content:Learn:HTML: - - '\/docs\/Learn\/HTML' -Content:Learn:JavaScript: - - '\/docs\/Learn\/JavaScript' + - '\/docs\/Learn_web_development\/' +# Mapping for old directories, see https://github.com/mdn/content/pull/36967 +# +# Content:Learn:Accessibility: +# - '\/docs\/Learn\/Accessibility' +# Content:Learn:Client-side: +# - '\/docs\/Learn\/Tools_and_testing\/(Client-side|Understanding_client-side)' +# Content:Learn:Cross-Browser-Testing: +# - '\/docs\/Learn\/Tools_and_testing\/Cross_browser_testing' +# Content:Learn:CSS: +# - '\/docs\/Learn\/CSS' +# Content:Learn:Django: +# - '\/docs\/Learn\/Server-side\/Django' +# Content:Learn:Express: +# - '\/docs\/Learn\/Server-side\/Express_Nodejs' +# Content:Learn:Forms: +# - '\/docs\/Learn\/Forms' +# Content:Learn:GitHub: +# - '\/docs\/Learn\/Tools_and_testing\/GitHub' +# Content:Learn:HTML: +# - '\/docs\/Learn\/HTML' +# Content:Learn:JavaScript: +# - '\/docs\/Learn\/JavaScript' Content:Manifest: - '\/docs\/Web\/Manifest' Content:MathML: diff --git a/.github/labeler.yml b/.github/labeler.yml index 87dfcef8f6e546e..c0359b97d8dc085 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -57,62 +57,53 @@ Content:JS: Content:Learn: - changed-files: - all-globs-to-any-file: - - files/en-us/learn/** - - "!files/en-us/learn/accessibility/**" - - "!files/en-us/learn/tools_and_testing/client-side_javascript_frameworks/**" - - "!files/en-us/learn/tools_and_testing/understanding_client-side_tools/**" - - "!files/en-us/learn/tools_and_testing/cross_browser_testing/**" - - "!files/en-us/learn/css/**" - - "!files/en-us/learn/server-side/django/**" - - "!files/en-us/learn/server-side/express_nodejs/**" - - "!files/en-us/learn/forms/**" - - "!files/en-us/learn/tools_and_testing/github/**" - - "!files/en-us/learn/html/**" - - "!files/en-us/learn/javascript/**" + - files/en-us/learn_web_development/** - changed-files: - any-glob-to-any-file: - files/en-us/web/tutorials/** -Content:Learn:Accessibility: - - changed-files: - - any-glob-to-any-file: - - files/en-us/learn/accessibility/** -Content:Learn:Client-side: - - changed-files: - - any-glob-to-any-file: - - files/en-us/learn/tools_and_testing/client-side_javascript_frameworks/** - - files/en-us/learn/tools_and_testing/understanding_client-side_tools/** -Content:Learn:Cross-Browser-Testing: - - changed-files: - - any-glob-to-any-file: - - files/en-us/learn/tools_and_testing/cross_browser_testing/** -Content:Learn:CSS: - - changed-files: - - any-glob-to-any-file: - - files/en-us/learn/css/** -Content:Learn:Django: - - changed-files: - - any-glob-to-any-file: - - files/en-us/learn/server-side/django/** -Content:Learn:Express: - - changed-files: - - any-glob-to-any-file: - - files/en-us/learn/server-side/express_nodejs/** -Content:Learn:Forms: - - changed-files: - - any-glob-to-any-file: - - files/en-us/learn/forms/** -Content:Learn:GitHub: - - changed-files: - - any-glob-to-any-file: - - files/en-us/learn/tools_and_testing/github/** -Content:Learn:HTML: - - changed-files: - - any-glob-to-any-file: - - files/en-us/learn/html/** -Content:Learn:JavaScript: - - changed-files: - - any-glob-to-any-file: - - files/en-us/learn/javascript/** +# Mapping for old directories, see https://github.com/mdn/content/pull/36967 +# +# Content:Learn:Accessibility: +# - changed-files: +# - any-glob-to-any-file: +# - files/en-us/learn/accessibility/** +# Content:Learn:Client-side: +# - changed-files: +# - any-glob-to-any-file: +# - files/en-us/learn/tools_and_testing/client-side_javascript_frameworks/** +# - files/en-us/learn/tools_and_testing/understanding_client-side_tools/** +# Content:Learn:Cross-Browser-Testing: +# - changed-files: +# - any-glob-to-any-file: +# - files/en-us/learn/tools_and_testing/cross_browser_testing/** +# Content:Learn:CSS: +# - changed-files: +# - any-glob-to-any-file: +# - files/en-us/learn/css/** +# Content:Learn:Django: +# - changed-files: +# - any-glob-to-any-file: +# - files/en-us/learn/server-side/django/** +# Content:Learn:Express: +# - changed-files: +# - any-glob-to-any-file: +# - files/en-us/learn/server-side/express_nodejs/** +# Content:Learn:Forms: +# - changed-files: +# - any-glob-to-any-file: +# - files/en-us/learn/forms/** +# Content:Learn:GitHub: +# - changed-files: +# - any-glob-to-any-file: +# - files/en-us/learn/tools_and_testing/github/** +# Content:Learn:HTML: +# - changed-files: +# - any-glob-to-any-file: +# - files/en-us/learn/html/** +# Content:Learn:JavaScript: +# - changed-files: +# - any-glob-to-any-file: +# - files/en-us/learn/javascript/** Content:Manifest: - changed-files: - any-glob-to-any-file: @@ -170,7 +161,6 @@ Content:Other: - changed-files: - any-glob-to-any-file: - files/en-us/related/** - - files/en-us/web/demos/** - files/en-us/web/exslt/** - files/en-us/web/opensearch/** - files/en-us/web/privacy/** diff --git a/.github/workflows/auto-cleanup-bot.yml b/.github/workflows/auto-cleanup-bot.yml index 485f6b7a7207600..c3e23c58576680b 100644 --- a/.github/workflows/auto-cleanup-bot.yml +++ b/.github/workflows/auto-cleanup-bot.yml @@ -31,6 +31,7 @@ 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() diff --git a/.github/workflows/pr-check-lint_content.yml b/.github/workflows/pr-check-lint_content.yml index 6ba2a4950251e8d..12a3a039a97efdd 100644 --- a/.github/workflows/pr-check-lint_content.yml +++ b/.github/workflows/pr-check-lint_content.yml @@ -32,21 +32,21 @@ 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) echo "DIFF_DOCUMENTS=${DIFF_DOCUMENTS}" >> $GITHUB_ENV - name: Checkout HEAD - if: ${{ env.DIFF_DOCUMENTS }} + if: env.DIFF_DOCUMENTS uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} path: pr_head - name: Get changed content from HEAD - if: ${{ env.DIFF_DOCUMENTS }} + if: env.DIFF_DOCUMENTS run: | git config --global user.email "108879845+mdn-bot@users.noreply.github.com" git config --global user.name "mdn-bot" @@ -62,21 +62,21 @@ jobs: git commit -m "Code from PR head" - name: Setup Node.js environment - if: ${{ env.DIFF_DOCUMENTS }} + if: env.DIFF_DOCUMENTS uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: yarn - name: Install all yarn packages - if: ${{ env.DIFF_DOCUMENTS }} + if: env.DIFF_DOCUMENTS run: yarn --frozen-lockfile env: # https://github.com/microsoft/vscode-ripgrep#github-api-limit-note GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Lint and format markdown files - if: ${{ env.DIFF_DOCUMENTS }} + if: env.DIFF_DOCUMENTS run: | # Generate random delimiter # https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings @@ -84,6 +84,14 @@ jobs: files_to_lint="$DIFF_DOCUMENTS" + echo "crlf line ending check" + CRLF_FAILED=true + CRLF_LOG=$(git ls-files --eol ${files_to_lint} | grep -E 'w/(mixed|crlf)') || CRLF_FAILED=false + echo "CRLF_LOG<<${EOF}" >> $GITHUB_ENV + echo "${CRLF_LOG}" >> $GITHUB_ENV + echo "${EOF}" >> $GITHUB_ENV + echo "CRLF_FAILED=${CRLF_FAILED}" >> $GITHUB_ENV + echo "Running markdownlint --fix" MD_LINT_FAILED=false MD_LINT_LOG=$(yarn markdownlint-cli2 --fix ${files_to_lint} 2>&1) || MD_LINT_FAILED=true @@ -101,6 +109,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 @@ -108,8 +122,10 @@ jobs: fi # info for troubleshooting + echo CRLF_FAILED=${CRLF_FAILED} echo MD_LINT_FAILED=${MD_LINT_FAILED} echo FM_LINT_FAILED=${FM_LINT_FAILED} + echo PRETTIER_FAILED=${PRETTIER_FAILED} git diff - name: Setup reviewdog @@ -147,11 +163,40 @@ 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.CRLF_FAILED == 'true' || env.MD_LINT_FAILED == 'true' || env.FM_LINT_FAILED == 'true' + env: + CRLF_FAILED: ${{ env.CRLF_FAILED }} + MD_LINT_FAILED: ${{ env.MD_LINT_FAILED }} + FM_LINT_FAILED: ${{ env.FM_LINT_FAILED }} + PRETTIER_FAILED: ${{ env.PRETTIER_FAILED }} + CRLF_LOG: ${{ env.CRLF_LOG }} + 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 "${MD_LINT_LOG}" - echo -e "\nLogs from front-matter linter:" - echo "${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 [[ ${CRLF_FAILED} == 'true' ]]; then + echo -e "\n\n🪵 In the following files make sure all the lines end with only Line Feed (LF) character and not with Carriage Return Line Feed (CRLF) characters:" + echo "${CRLF_LOG}" + echo "For more information refer https://gist.github.com/LunarLambda/3df0840b336a5e314e4ffdac03cbf619 ." + echo "You may use https://app.execeratics.com/LFandCRLFonline/?l=en online tool to convert line endings from CRLF to LF." + fi + + 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-check_redirects.yml b/.github/workflows/pr-check_redirects.yml index a2dd6e9c46ac8cc..249647923a93c4a 100644 --- a/.github/workflows/pr-check_redirects.yml +++ b/.github/workflows/pr-check_redirects.yml @@ -40,4 +40,4 @@ jobs: - name: Check redirects file(s) if: steps.filter.outputs.required_files == 'true' - run: yarn content validate-redirects en-us --strict + run: yarn content validate-redirects en-US diff --git a/.github/workflows/pr-check_scripts.yml b/.github/workflows/pr-check_scripts.yml index c583952b2caa38c..a5b55c8d6f8d8b2 100644 --- a/.github/workflows/pr-check_scripts.yml +++ b/.github/workflows/pr-check_scripts.yml @@ -111,6 +111,10 @@ jobs: - run: yarn content --help + - run: yarn content fix-redirects en-US + + - run: yarn content validate-redirects en-US + build: runs-on: ubuntu-latest diff --git a/.github/workflows/pr-review-companion.yml b/.github/workflows/pr-review-companion.yml index ac3ea325f57e526..13b3122ee88106d 100644 --- a/.github/workflows/pr-review-companion.yml +++ b/.github/workflows/pr-review-companion.yml @@ -7,14 +7,14 @@ name: PR review companion on: workflow_run: - workflows: ["PR Test"] + workflows: ["PR Test", "PR Test Legacy"] types: - completed jobs: review: runs-on: ubuntu-latest - if: ${{ github.event.workflow_run.conclusion == 'success' }} + if: github.event.workflow_run.conclusion == 'success' steps: - name: "Download artifact" uses: actions/download-artifact@v4 @@ -26,18 +26,18 @@ jobs: run-id: ${{ github.event.workflow_run.id }} - name: Check for artifacts - if: ${{ hashFiles('build/') != '' }} + if: hashFiles('build/') != '' run: | echo "HAS_ARTIFACT=true" >> "$GITHUB_ENV" - uses: actions/checkout@v4 - if: ${{ env.HAS_ARTIFACT }} + if: env.HAS_ARTIFACT with: repository: mdn/yari path: yari - name: Install Python - if: ${{ env.HAS_ARTIFACT }} + if: env.HAS_ARTIFACT id: setup-python uses: actions/setup-python@v5 with: @@ -45,7 +45,7 @@ jobs: # See https://www.peterbe.com/plog/install-python-poetry-github-actions-faster - name: Load cached ~/.local - if: ${{ env.HAS_ARTIFACT }} + if: env.HAS_ARTIFACT uses: actions/cache@v4 with: path: ~/.local @@ -54,14 +54,14 @@ jobs: key: dotlocal-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-0 - name: Install Python poetry - if: ${{ env.HAS_ARTIFACT }} + if: env.HAS_ARTIFACT uses: snok/install-poetry@v1.4 with: virtualenvs-create: true virtualenvs-in-project: true - name: Load cached venv - if: ${{ env.HAS_ARTIFACT }} + if: env.HAS_ARTIFACT id: cached-poetry-dependencies uses: actions/cache@v4 with: @@ -71,19 +71,19 @@ jobs: key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}-${{ steps.setup-python.outputs.python-version }}-0 - name: Install poetry dependencies - if: ${{ env.HAS_ARTIFACT && steps.cached-poetry-dependencies.outputs.cache-hit != 'true' }} + if: env.HAS_ARTIFACT && steps.cached-poetry-dependencies.outputs.cache-hit != 'true' run: | cd yari/deployer poetry install --no-interaction --no-root - name: Install Deployer - if: ${{ env.HAS_ARTIFACT }} + if: env.HAS_ARTIFACT run: | cd yari/deployer poetry install --no-interaction - name: Deploy and analyze built content - if: ${{ env.HAS_ARTIFACT }} + if: env.HAS_ARTIFACT env: BUILD_OUT_ROOT: ${{ github.workspace }}/build diff --git a/.github/workflows/pr-test-legacy.yml b/.github/workflows/pr-test-legacy.yml new file mode 100644 index 000000000000000..e390e19231b95bc --- /dev/null +++ b/.github/workflows/pr-test-legacy.yml @@ -0,0 +1,134 @@ +# This file tests more or less everything related to a pull request. All +# in one big job. At the end, if all the testing passes, it proceeds +# to upload all the files that were built to our Dev environment. +# This way, if the tests passed, you'll be able to review the built +# pages on a public URL. + +name: PR Test Legacy + +on: + pull_request: + branches: + - main + +jobs: + tests: + if: github.repository == 'mdn/content' + runs-on: ubuntu-latest + # Set the permissions to `read-all`, preventing the workflow from + # any accidental write access to the repository. + permissions: read-all + env: + BASE_SHA: ${{ github.event.pull_request.base.sha }} + HEAD_SHA: ${{ github.event.pull_request.head.sha }} + # This is the directory where the built files will be placed. + # It's also hardcoded in the `yarn build` command in package.json. + # If you change it here, you must also make the same change in + # package.json. + BUILD_OUT_ROOT: build + + steps: + - uses: actions/checkout@v4 + + - name: Get changed files + 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/${BASE_SHA}...${HEAD_SHA} \ + --jq '.files | .[] | select(.status|IN("added", "modified", "renamed", "copied", "changed")) | .filename') + + # filter out files that are not markdown files + GIT_DIFF_CONTENT=$(echo "${DIFF_DOCUMENTS}" | egrep -i "^files/.*\.(md)$" | xargs) + echo "GIT_DIFF_CONTENT=${GIT_DIFF_CONTENT}" >> $GITHUB_ENV + + # filter out files that are not attachments + GIT_DIFF_FILES=$(echo "${DIFF_DOCUMENTS}" | egrep -i "^files/.*\.(png|jpeg|jpg|gif|svg|webp)$" | xargs) + echo "GIT_DIFF_FILES=${GIT_DIFF_FILES}" >> $GITHUB_ENV + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup Node.js environment + if: env.GIT_DIFF_CONTENT || env.GIT_DIFF_FILES + uses: actions/setup-node@v4 + with: + node-version-file: ".nvmrc" + cache: yarn + + - name: Install all yarn packages + if: env.GIT_DIFF_CONTENT || env.GIT_DIFF_FILES + run: yarn --frozen-lockfile + env: + # https://github.com/microsoft/vscode-ripgrep#github-api-limit-note + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Build changed content + id: build-content + if: env.GIT_DIFF_CONTENT + env: + CONTENT_ROOT: ${{ github.workspace }}/files + + # This is so that if there's a single 'unsafe_html' flaw, it + # completely fails the build. + # But all other flaws should be 'warn', so that we can include + # information about the flaws when we analyze the built PR. + BUILD_FLAW_LEVELS: "unsafe_html: error, *:warn" + + # Because we build these pages in a way that you get a toolbar, + # so the flaws can be displayed, but we don't want any of the + # other toolbar features like "Fix fixable flaws" or "Quick-edit" + # we set this to disable that stuff. + REACT_APP_CRUD_MODE_READONLY: true + + BUILD_LIVE_SAMPLES_BASE_URL: https://live.mdnyalp.dev + BUILD_LEGACY_LIVE_SAMPLES_BASE_URL: https://live-samples.mdn.allizom.net + + # In these builds, we never care for or need the ability to sign in. + # This environment variable will disable that functionality entirely. + REACT_APP_DISABLE_AUTH: true + + # TODO: This should be implicit when `CI=true` + BUILD_NO_PROGRESSBAR: true + + # Playground + REACT_APP_PLAYGROUND_BASE_HOST: mdnyalp.dev + + run: | + # The reason this script isn't in `package.json` is because + # 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 $GIT_DIFF_CONTENT + + echo "Disk usage size of the build" + du -sh $BUILD_OUT_ROOT + + # Save the PR number into the build + 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/${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/ $BUILD_OUT_ROOT + # Show the final disk usage size of the build. + du -sh $BUILD_OUT_ROOT + + - uses: actions/upload-artifact@v4 + if: env.GIT_DIFF_CONTENT + with: + name: build + path: ${{ env.BUILD_OUT_ROOT }} + + - name: Check changed files + if: env.GIT_DIFF_FILES + run: | + echo $GIT_DIFF_FILES + + export CONTENT_ROOT=$(pwd)/files + yarn filecheck $GIT_DIFF_FILES diff --git a/.github/workflows/pr-test.yml b/.github/workflows/pr-test.yml index 51a23553a9cafb2..b6b679099dff360 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 @@ -48,14 +48,14 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Setup Node.js environment - if: ${{ env.GIT_DIFF_CONTENT }} || ${{ env.GIT_DIFF_FILES }} + if: env.GIT_DIFF_CONTENT || env.GIT_DIFF_FILES uses: actions/setup-node@v4 with: node-version-file: ".nvmrc" cache: yarn - name: Install all yarn packages - if: ${{ env.GIT_DIFF_CONTENT }} || ${{ env.GIT_DIFF_FILES }} + if: env.GIT_DIFF_CONTENT || env.GIT_DIFF_FILES run: yarn --frozen-lockfile env: # https://github.com/microsoft/vscode-ripgrep#github-api-limit-note @@ -63,7 +63,7 @@ jobs: - name: Build changed content id: build-content - if: ${{ env.GIT_DIFF_CONTENT }} + if: env.GIT_DIFF_CONTENT env: CONTENT_ROOT: ${{ github.workspace }}/files @@ -92,43 +92,49 @@ jobs: # Playground REACT_APP_PLAYGROUND_BASE_HOST: mdnyalp.dev + # rari + LIVE_SAMPLES_BASE_URL: https://live.mdnyalp.dev + INTERACTIVE_EXAMPLES_BASE_URL: https://interactive-examples.mdn.allizom.net + run: | # The reason this script isn't in `package.json` is because # 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 }} + ARGS=$(echo $GIT_DIFF_CONTENT | sed -E -e "s#(^| )files#\1-f $PWD/files#g") + yarn rari build --no-basic --json-issues --data-issues $ARGS + yarn yari-render-html 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 }} + 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 }} + if: env.GIT_DIFF_CONTENT with: name: build path: ${{ env.BUILD_OUT_ROOT }} - name: Check changed files - if: ${{ env.GIT_DIFF_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 index 9c1fd7b8fe64ff8..6869ba085cfeee5 100644 --- a/.github/workflows/spelling-check-bot.yml +++ b/.github/workflows/spelling-check-bot.yml @@ -9,6 +9,8 @@ jobs: sync: if: github.repository == 'mdn/content' runs-on: ubuntu-latest + permissions: + issues: write steps: - uses: actions/checkout@v4 @@ -21,28 +23,32 @@ jobs: - name: Run scripts run: | - npm install echo Running spelling check... output=$(npx cspell --no-progress --gitignore --config .vscode/cspell.json "**/*.md" || exit 0) - echo "$output" - echo "OUTPUT<> $GITHUB_ENV - echo "$output" >> $GITHUB_ENV - echo "EOF" >> $GITHUB_ENV - - - name: Create an issue + 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 != '' - uses: dacbd/create-issue-action@main - with: - token: ${{ secrets.GITHUB_TOKEN }} - title: Weekly spelling check - body: | + 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] - > To exclude words from the spellchecker, you can add valid words (web technology terms or abbreviations) to the [terms-abbreviations.txt](https://github.com/mdn/content/blob/main/.vscode/terms-abbreviations.txt) dictionary for IDE autocompletion. To ignore strings that are not words (`AABBCC` in code, for instance), you can add them to [ignore-list.txt](https://github.com/mdn/content/blob/main/.vscode/ignore-list.txt). - env: - OUTPUT: ${{ env.OUTPUT }} + > 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..ad18175879ccc0f 100644 --- a/.lintstagedrc.js +++ b/.lintstagedrc.js @@ -1,7 +1,7 @@ export default { "files/en-us/_redirects.txt": (filenames) => [ `yarn content fix-redirects en-US`, - `yarn content validate-redirects en-us --strict`, + `yarn content validate-redirects en-US`, ], "!*.md": (filenames) => [ `prettier --ignore-unknown --write ${filenames.join(" ")}`, @@ -17,4 +17,8 @@ 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(" ")}`, + ], + "files/sidebars/*.yaml": (filenames) => [`yarn content fmt-sidebars`], }; 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 6d39a7623bd6a12..16154a9e2b0f183 100644 --- a/.vscode/cspell.json +++ b/.vscode/cspell.json @@ -6,6 +6,10 @@ "useGitignore": true, "dictionaries": [ "terms-abbreviations", + "cultural-words", + "proper-names", + "non-english", + "code-entities", "ignore-list", "bash", "css", @@ -32,16 +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*\\)", - "\\*\\*\\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=\"(?:[^\\\"]+|\\.)*\"", @@ -50,30 +69,81 @@ "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 442caff7fe71d48..571a6092341d4bf 100644 --- a/files/en-us/_redirects.txt +++ b/files/en-us/_redirects.txt @@ -1,20 +1,18 @@ # DO NOT EDIT THIS FILE MANUALLY. -# Use the CLI instead: -# -# yarn content add-redirect +# Use the CLI instead. # # FROM-URL TO-URL /en-US/docs/-moz-locale-dir(ltr) /en-US/docs/Web/CSS/:-moz-locale-dir_ltr /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 +133,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 +163,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 +171,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 +184,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 +473,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 +486,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/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 /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/Learn_web_development/Core/Challenges +/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 @@ -701,8 +692,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 @@ -733,7 +722,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 @@ -844,7 +832,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 @@ -951,21 +939,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 @@ -1085,7 +1073,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 @@ -1117,10 +1105,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_XSLT_Errors /en-US/docs/Web/XSLT/Common_errors +/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/Guides/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 @@ -1213,7 +1201,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 @@ -1981,7 +1969,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 @@ -2082,8 +2070,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 @@ -2229,8 +2217,8 @@ /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/external /en-US/docs/DOM/window.sizeToContent /en-US/docs/Web/API/Window/sizeToContent @@ -2240,7 +2228,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 @@ -2463,7 +2451,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 @@ -2542,8 +2530,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 @@ -2651,8 +2639,8 @@ /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/external /en-US/docs/DOM:window.sizeToContent /en-US/docs/Web/API/Window/sizeToContent @@ -2662,7 +2650,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 @@ -2688,7 +2676,7 @@ /en-US/docs/Detecting_device_orientation /en-US/docs/Web/API/Device_orientation_events/Detecting_device_orientation /en-US/docs/Determining_the_dimensions_of_elements /en-US/docs/Web/API/CSS_Object_Model/Determining_the_dimensions_of_elements /en-US/docs/DeviceAcceleration /en-US/docs/Web/API/DeviceMotionEventAcceleration -/en-US/docs/Devmo:How_to_Help /en-US/docs/MDN/Community/Contributing/Getting_started +/en-US/docs/Devmo:How_to_Help /en-US/docs/MDN/Community/Getting_started /en-US/docs/Distribution_options https://extensionworkshop.com/documentation/publish/signing-and-distribution-overview/ /en-US/docs/Distribution_options/Add-ons_for_desktop_apps https://extensionworkshop.com/documentation/publish/distribute-for-desktop-apps/ /en-US/docs/Distribution_options/Add-ons_in_the_enterprise https://extensionworkshop.com/documentation/enterprise/ @@ -3253,8 +3241,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 @@ -3370,8 +3358,8 @@ /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/external /en-US/docs/Document_Object_Model_(DOM)/window.sizeToContent /en-US/docs/Web/API/Window/sizeToContent @@ -3379,7 +3367,7 @@ /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 @@ -3480,7 +3468,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 @@ -3555,7 +3543,7 @@ /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 +/en-US/docs/Getting_started_on_MDN /en-US/docs/MDN/Community/Getting_started /en-US/docs/Glossary/404 /en-US/docs/Web/HTTP/Status/404 /en-US/docs/Glossary/502 /en-US/docs/Web/HTTP/Status/502 /en-US/docs/Glossary/AOM /en-US/docs/Glossary/Accessibility_tree @@ -3567,9 +3555,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 @@ -3605,6 +3595,7 @@ /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 @@ -3630,7 +3621,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 @@ -3863,30 +3854,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 @@ -3901,18 +3892,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 @@ -3962,7 +3953,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 @@ -3970,9 +3961,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_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 @@ -3992,15 +3983,15 @@ /en-US/docs/How_to_Turn_Off_Form_Autocompletion /en-US/docs/Web/Security/Practical_implementation_guides/Turning_off_form_autocompletion /en-US/docs/How_to_check_the_security_state_of_an_XMLHTTPRequest_over_SSL /en-US/docs/Web/API/XMLHttpRequest /en-US/docs/How_to_create_a_DOM_tree /en-US/docs/Web/API/Document_Object_Model/Using_the_Document_Object_Model -/en-US/docs/How_to_start_contributions_to_Mozilla /en-US/docs/MDN/Community/Contributing/Getting_started +/en-US/docs/How_to_start_contributions_to_Mozilla /en-US/docs/MDN/Community/Getting_started /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 @@ -4026,12 +4017,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 @@ -4047,7 +4038,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 @@ -4149,7 +4140,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 @@ -4706,7 +4697,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 @@ -4714,7 +4705,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 @@ -4810,7 +4801,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 @@ -5150,225 +5141,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 @@ -5384,30 +5743,65 @@ /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 /en-US/docs/MDN/About /en-US/docs/MDN/Writing_guidelines +/en-US/docs/MDN/At_ten https://developer.mozilla.org/en-US/about#our_journey /en-US/docs/MDN/At_ten/Contributing_to_MDN /en-US/docs/MDN/Community/Contributing +/en-US/docs/MDN/At_ten/History_of_MDN https://developer.mozilla.org/en-US/about#our_journey +/en-US/docs/MDN/Changelog /en-US/docs/MDN/Writing_guidelines/Changelog +/en-US/docs/MDN/Community/Contributing/Getting_started /en-US/docs/MDN/Community/Getting_started +/en-US/docs/MDN/Community/Contributing/Security_vulnerability_response /en-US/docs/MDN/Community/Security_vulnerability_response +/en-US/docs/MDN/Community/Contributing/Translated_content /en-US/docs/MDN/Community/Translated_content /en-US/docs/MDN/Community/Issues/Issue_triage /en-US/docs/MDN/Community/Issues /en-US/docs/MDN/Community/MDN_content /en-US/docs/MDN/Community/Contributing /en-US/docs/MDN/Community/MDN_content/Issues /en-US/docs/MDN/Community/Issues /en-US/docs/MDN/Community/MDN_content/Pull_requests /en-US/docs/MDN/Community/Pull_requests /en-US/docs/MDN/Community/Users_teams /en-US/docs/MDN/Community/Roles_teams /en-US/docs/MDN/Contribute /en-US/docs/MDN/Community/Contributing -/en-US/docs/MDN/Contribute/Changelog /en-US/docs/MDN/Changelog +/en-US/docs/MDN/Contribute/Changelog /en-US/docs/MDN/Writing_guidelines/Changelog /en-US/docs/MDN/Contribute/Code_sample_guidelines /en-US/docs/MDN/Writing_guidelines/Writing_style_guide/Code_style_guide /en-US/docs/MDN/Contribute/Content /en-US/docs/MDN/Writing_guidelines /en-US/docs/MDN/Contribute/Content/Content_blocks /en-US/docs/MDN/Writing_guidelines/Howto/Markdown_in_MDN @@ -5425,8 +5819,8 @@ /en-US/docs/MDN/Contribute/FAQ /en-US/docs/MDN/Community/Contributing /en-US/docs/MDN/Contribute/Feedback /en-US/docs/MDN/Community /en-US/docs/MDN/Contribute/Fixing_MDN_content_bugs /en-US/docs/MDN/Community/Contributing -/en-US/docs/MDN/Contribute/Getting_started /en-US/docs/MDN/Community/Contributing/Getting_started -/en-US/docs/MDN/Contribute/GitHub_beginners /en-US/docs/MDN/Community/Contributing/Getting_started +/en-US/docs/MDN/Contribute/Getting_started /en-US/docs/MDN/Community/Getting_started +/en-US/docs/MDN/Contribute/GitHub_beginners /en-US/docs/MDN/Community/Getting_started /en-US/docs/MDN/Contribute/GitHub_best_practices /en-US/docs/MDN/Community/Issues /en-US/docs/MDN/Contribute/GitHub_cheatsheet /en-US/docs/MDN/Community/Issues /en-US/docs/MDN/Contribute/Guidelines /en-US/docs/MDN/Writing_guidelines @@ -5476,7 +5870,7 @@ /en-US/docs/MDN/Contribute/Howto/Write_an_API_reference/Information_contained_in_a_WebIDL_file /en-US/docs/MDN/Writing_guidelines/Howto/Write_an_api_reference/Information_contained_in_a_WebIDL_file /en-US/docs/MDN/Contribute/Howto/Write_an_API_reference/Sidebars /en-US/docs/MDN/Writing_guidelines/Howto/Write_an_api_reference/Sidebars /en-US/docs/MDN/Contribute/Howto/Write_for_SEO /en-US/docs/MDN/Writing_guidelines/Writing_style_guide -/en-US/docs/MDN/Contribute/Localize /en-US/docs/MDN/Community/Contributing/Translated_content +/en-US/docs/MDN/Contribute/Localize /en-US/docs/MDN/Community/Translated_content /en-US/docs/MDN/Contribute/Markdown_in_MDN /en-US/docs/MDN/Writing_guidelines/Howto/Markdown_in_MDN /en-US/docs/MDN/Contribute/Open_source_etiquette /en-US/docs/MDN/Community/Open_source_etiquette /en-US/docs/MDN/Contribute/Processes /en-US/docs/MDN/Community/Contributing @@ -5526,16 +5920,16 @@ /en-US/docs/MDN/Contribute/Style_guide/Quicklinks /en-US/docs/MDN/Writing_guidelines/Page_structures/Sidebars /en-US/docs/MDN/Contribute/Style_guide/Specification_tables /en-US/docs/MDN/Writing_guidelines/Page_structures/Specification_tables /en-US/docs/MDN/Contribute/Tagging /en-US/docs/MDN/Writing_guidelines/Howto -/en-US/docs/MDN/Contribute/Tasks /en-US/docs/MDN/Community/Contributing/Getting_started +/en-US/docs/MDN/Contribute/Tasks /en-US/docs/MDN/Community/Getting_started /en-US/docs/MDN/Contribute/Tools https://github.com/mdn/yari/tree/main/docs /en-US/docs/MDN/Contribute/Tools/Document_parameters /en-US/docs/MDN /en-US/docs/MDN/Contribute/Tools/KumaScript https://github.com/mdn/yari/tree/main/docs/kumascript /en-US/docs/MDN/Contribute/Tools/KumaScript/Troubleshooting https://github.com/mdn/yari/tree/main/docs/kumascript/troubleshooting-errors.md /en-US/docs/MDN/Contribute/Tools/Sample_server /en-US/docs/MDN -/en-US/docs/MDN/Contribute/Where_is_everything /en-US/docs/MDN/Community/Contributing/Our_repositories +/en-US/docs/MDN/Contribute/Where_is_everything /en-US/docs/MDN/Community/Our_repositories /en-US/docs/MDN/Doc_status/NSPR https://firefox-source-docs.mozilla.org/nspr/index.html /en-US/docs/MDN/Feedback /en-US/docs/MDN/Community -/en-US/docs/MDN/Getting_started /en-US/docs/MDN/Community/Contributing/Getting_started +/en-US/docs/MDN/Getting_started /en-US/docs/MDN/Community/Getting_started /en-US/docs/MDN/Guidelines /en-US/docs/MDN/Writing_guidelines /en-US/docs/MDN/Guidelines/CSS_style_guide /en-US/docs/MDN/Writing_guidelines/Howto/Markdown_in_MDN /en-US/docs/MDN/Guidelines/Code_guidelines /en-US/docs/MDN/Writing_guidelines/Writing_style_guide/Code_style_guide @@ -5561,11 +5955,13 @@ /en-US/docs/MDN/Kuma/Introduction_to_KumaScript https://github.com/mdn/yari/tree/main/docs/kumascript /en-US/docs/MDN/Kuma/Tools https://github.com/mdn/yari/tree/main/docs /en-US/docs/MDN/Kuma/Troubleshooting_KumaScript_errors https://github.com/mdn/yari/tree/main/docs/kumascript/troubleshooting-errors.md -/en-US/docs/MDN/MDN_Product_Advisory_Board/Members /en-US/docs/MDN/MDN_Product_Advisory_Board -/en-US/docs/MDN/MDN_Product_Avisory_Board /en-US/docs/MDN/MDN_Product_Advisory_Board -/en-US/docs/MDN/MDN_Product_Avisory_Board/Members /en-US/docs/MDN/MDN_Product_Advisory_Board -/en-US/docs/MDN/MDN_Product_Avisory_Board/Membership /en-US/docs/MDN/MDN_Product_Advisory_Board/Membership -/en-US/docs/MDN/Quick_start /en-US/docs/MDN/Community/Contributing/Getting_started +/en-US/docs/MDN/MDN_Product_Advisory_Board https://developer.mozilla.org/en-US/about#our_partners +/en-US/docs/MDN/MDN_Product_Advisory_Board/Members https://developer.mozilla.org/en-US/about#our_partners +/en-US/docs/MDN/MDN_Product_Advisory_Board/Membership https://developer.mozilla.org/en-US/about#our_partners +/en-US/docs/MDN/MDN_Product_Avisory_Board https://developer.mozilla.org/en-US/about#our_partners +/en-US/docs/MDN/MDN_Product_Avisory_Board/Members https://developer.mozilla.org/en-US/about#our_partners +/en-US/docs/MDN/MDN_Product_Avisory_Board/Membership https://developer.mozilla.org/en-US/about#our_partners +/en-US/docs/MDN/Quick_start /en-US/docs/MDN/Community/Getting_started /en-US/docs/MDN/Structures /en-US/docs/MDN/Writing_guidelines/Page_structures /en-US/docs/MDN/Structures/:-ms-input-placeholder_pseudo-class /en-US/docs/Web/CSS/:placeholder-shown /en-US/docs/MDN/Structures/API_references/API_reference_sidebars /en-US/docs/MDN/Writing_guidelines/Howto/Write_an_api_reference/Sidebars @@ -5608,10 +6004,10 @@ /en-US/docs/MDN/Writing_guidelines/Research_technology /en-US/docs/MDN/Writing_guidelines/Howto/Research_technology /en-US/docs/MDN/Writing_guidelines/What_we_write/Inclusion_criteria /en-US/docs/MDN/Writing_guidelines/What_we_write/Criteria_for_inclusion /en-US/docs/MDN/Yari https://github.com/mdn/yari/tree/main/docs -/en-US/docs/MDN_at_ten /en-US/docs/MDN/At_ten +/en-US/docs/MDN_at_ten https://developer.mozilla.org/en-US/about#our_journey /en-US/docs/MDN_at_ten/Contributing_to_MDN /en-US/docs/MDN/Community/Contributing -/en-US/docs/MDN_at_ten/History /en-US/docs/MDN/At_ten/History_of_MDN -/en-US/docs/MDN_at_ten/History_of_MDN /en-US/docs/MDN/At_ten/History_of_MDN +/en-US/docs/MDN_at_ten/History https://developer.mozilla.org/en-US/about#our_journey +/en-US/docs/MDN_at_ten/History_of_MDN https://developer.mozilla.org/en-US/about#our_journey /en-US/docs/Main_page /en-US/ /en-US/docs/Managing_screen_orientation /en-US/docs/Web/API/CSS_Object_Model/Managing_screen_orientation /en-US/docs/Manipulating_video_using_canvas /en-US/docs/Web/API/Canvas_API/Manipulating_video_using_canvas @@ -5662,7 +6058,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/ @@ -6373,7 +6769,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 @@ -6420,10 +6816,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 @@ -6743,7 +7139,6 @@ /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 @@ -6771,9 +7166,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 @@ -6837,8 +7231,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 @@ -6868,7 +7262,7 @@ /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 @@ -7072,10 +7466,10 @@ /en-US/docs/Tools/working_with_iframes https://firefox-source-docs.mozilla.org/devtools-user/working_with_iframes/index.html /en-US/docs/Tools:Validators https://firefox-source-docs.mozilla.org/devtools-user/validators/index.html /en-US/docs/Tools_Toolbox https://firefox-source-docs.mozilla.org/devtools-user/tools_toolbox/index.html -/en-US/docs/Transforming_XML_with_XSLT /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT -/en-US/docs/Transforming_XML_with_XSLT/An_Overview /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/An_Overview -/en-US/docs/Transforming_XML_with_XSLT/For_Further_Reading /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/For_Further_Reading -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT +/en-US/docs/Transforming_XML_with_XSLT /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT +/en-US/docs/Transforming_XML_with_XSLT/An_Overview /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT/An_Overview +/en-US/docs/Transforming_XML_with_XSLT/For_Further_Reading /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT/For_Further_Reading +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT /en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Axes /en-US/docs/Web/XPath/Axes /en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Axes/ancestor /en-US/docs/Web/XPath/Axes#ancestor /en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Axes/ancestor-or-self /en-US/docs/Web/XPath/Axes#ancestor-or-self @@ -7090,65 +7484,65 @@ /en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Axes/preceding /en-US/docs/Web/XPath/Axes#preceding /en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Axes/preceding-sibling /en-US/docs/Web/XPath/Axes#preceding-sibling /en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Axes/self /en-US/docs/Web/XPath/Axes#self -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements /en-US/docs/Web/XSLT/Element -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/apply-imports /en-US/docs/Web/XSLT/Element/apply-imports -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/apply-templates /en-US/docs/Web/XSLT/Element/apply-templates -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/attribute /en-US/docs/Web/XSLT/Element/attribute -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/attribute-set /en-US/docs/Web/XSLT/Element/attribute-set -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/call-template /en-US/docs/Web/XSLT/Element/call-template -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/choose /en-US/docs/Web/XSLT/Element/choose -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/comment /en-US/docs/Web/XSLT/Element/comment -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/copy /en-US/docs/Web/XSLT/Element/copy -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/copy-of /en-US/docs/Web/XSLT/Element/copy-of -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/decimal-format /en-US/docs/Web/XSLT/Element/decimal-format -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/element /en-US/docs/Web/XSLT/Element/element -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/fallback /en-US/docs/Web/XSLT/Element/fallback -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/for-each /en-US/docs/Web/XSLT/Element/for-each -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/if /en-US/docs/Web/XSLT/Element/if -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/import /en-US/docs/Web/XSLT/Element/import -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/include /en-US/docs/Web/XSLT/Element/include -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/key /en-US/docs/Web/XSLT/Element/key -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/message /en-US/docs/Web/XSLT/Element/message -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/namespace-alias /en-US/docs/Web/XSLT/Element/namespace-alias -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/number /en-US/docs/Web/XSLT/Element/number -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/otherwise /en-US/docs/Web/XSLT/Element/otherwise -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/output /en-US/docs/Web/XSLT/Element/output -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/param /en-US/docs/Web/XSLT/Element/param -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/preserve-space /en-US/docs/Web/XSLT/Element/preserve-space -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/processing-instruction /en-US/docs/Web/XSLT/Element/processing-instruction -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/sort /en-US/docs/Web/XSLT/Element/sort -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/strip-space /en-US/docs/Web/XSLT/Element/strip-space -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/stylesheet /en-US/docs/Web/XSLT/Element/stylesheet -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/template /en-US/docs/Web/XSLT/Element/template -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/text /en-US/docs/Web/XSLT/Element/text -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/transform /en-US/docs/Web/XSLT/Element/transform -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/value-of /en-US/docs/Web/XSLT/Element/value-of -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/variable /en-US/docs/Web/XSLT/Element/variable -/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/when /en-US/docs/Web/XSLT/Element/when -/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/Elements /en-US/docs/Web/XSLT/Reference/Element +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/apply-imports /en-US/docs/Web/XSLT/Reference/Element/apply-imports +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/apply-templates /en-US/docs/Web/XSLT/Reference/Element/apply-templates +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/attribute /en-US/docs/Web/XSLT/Reference/Element/attribute +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/attribute-set /en-US/docs/Web/XSLT/Reference/Element/attribute-set +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/call-template /en-US/docs/Web/XSLT/Reference/Element/call-template +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/choose /en-US/docs/Web/XSLT/Reference/Element/choose +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/comment /en-US/docs/Web/XSLT/Reference/Element/comment +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/copy /en-US/docs/Web/XSLT/Reference/Element/copy +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/copy-of /en-US/docs/Web/XSLT/Reference/Element/copy-of +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/decimal-format /en-US/docs/Web/XSLT/Reference/Element/decimal-format +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/element /en-US/docs/Web/XSLT/Reference/Element/element +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/fallback /en-US/docs/Web/XSLT/Reference/Element/fallback +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/for-each /en-US/docs/Web/XSLT/Reference/Element/for-each +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/if /en-US/docs/Web/XSLT/Reference/Element/if +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/import /en-US/docs/Web/XSLT/Reference/Element/import +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/include /en-US/docs/Web/XSLT/Reference/Element/include +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/key /en-US/docs/Web/XSLT/Reference/Element/key +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/message /en-US/docs/Web/XSLT/Reference/Element/message +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/namespace-alias /en-US/docs/Web/XSLT/Reference/Element/namespace-alias +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/number /en-US/docs/Web/XSLT/Reference/Element/number +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/otherwise /en-US/docs/Web/XSLT/Reference/Element/otherwise +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/output /en-US/docs/Web/XSLT/Reference/Element/output +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/param /en-US/docs/Web/XSLT/Reference/Element/param +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/preserve-space /en-US/docs/Web/XSLT/Reference/Element/preserve-space +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/processing-instruction /en-US/docs/Web/XSLT/Reference/Element/processing-instruction +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/sort /en-US/docs/Web/XSLT/Reference/Element/sort +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/strip-space /en-US/docs/Web/XSLT/Reference/Element/strip-space +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/stylesheet /en-US/docs/Web/XSLT/Reference/Element/stylesheet +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/template /en-US/docs/Web/XSLT/Reference/Element/template +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/text /en-US/docs/Web/XSLT/Reference/Element/text +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/transform /en-US/docs/Web/XSLT/Reference/Element/transform +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/value-of /en-US/docs/Web/XSLT/Reference/Element/value-of +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/variable /en-US/docs/Web/XSLT/Reference/Element/variable +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/when /en-US/docs/Web/XSLT/Reference/Element/when +/en-US/docs/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Elements/xsl/with-param /en-US/docs/Web/XSLT/Reference/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/Resources /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference /en-US/docs/Web/XSLT/Guides/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/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/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/Reference/Element/decimal-format +/en-US/docs/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference/Elements/xsl/element /en-US/docs/Web/XSLT/Reference/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:An_Overview /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/An_Overview -/en-US/docs/Transforming_XML_with_XSLT:For_Further_Reading /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/For_Further_Reading -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT +/en-US/docs/Transforming_XML_with_XSLT:An_Overview /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT/An_Overview +/en-US/docs/Transforming_XML_with_XSLT:For_Further_Reading /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT/For_Further_Reading +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Axes /en-US/docs/Web/XPath/Axes /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Axes:ancestor /en-US/docs/Web/XPath/Axes#ancestor /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Axes:ancestor-or-self /en-US/docs/Web/XPath/Axes#ancestor-or-self @@ -7163,44 +7557,44 @@ /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Axes:preceding /en-US/docs/Web/XPath/Axes#preceding /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Axes:preceding-sibling /en-US/docs/Web/XPath/Axes#preceding-sibling /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Axes:self /en-US/docs/Web/XPath/Axes#self -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements /en-US/docs/Web/XSLT/Element -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:apply-imports /en-US/docs/Web/XSLT/Element/apply-imports -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:apply-templates /en-US/docs/Web/XSLT/Element/apply-templates -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:attribute /en-US/docs/Web/XSLT/Element/attribute -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:attribute-set /en-US/docs/Web/XSLT/Element/attribute-set -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:call-template /en-US/docs/Web/XSLT/Element/call-template -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:choose /en-US/docs/Web/XSLT/Element/choose -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:comment /en-US/docs/Web/XSLT/Element/comment -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:copy /en-US/docs/Web/XSLT/Element/copy -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:copy-of /en-US/docs/Web/XSLT/Element/copy-of -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:decimal-format /en-US/docs/Web/XSLT/Element/decimal-format -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:element /en-US/docs/Web/XSLT/Element/element -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:fallback /en-US/docs/Web/XSLT/Element/fallback -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:for-each /en-US/docs/Web/XSLT/Element/for-each -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:if /en-US/docs/Web/XSLT/Element/if -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:import /en-US/docs/Web/XSLT/Element/import -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:include /en-US/docs/Web/XSLT/Element/include -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:key /en-US/docs/Web/XSLT/Element/key -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:message /en-US/docs/Web/XSLT/Element/message -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:namespace-alias /en-US/docs/Web/XSLT/Element/namespace-alias -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:number /en-US/docs/Web/XSLT/Element/number -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:otherwise /en-US/docs/Web/XSLT/Element/otherwise -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:output /en-US/docs/Web/XSLT/Element/output -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:param /en-US/docs/Web/XSLT/Element/param -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:preserve-space /en-US/docs/Web/XSLT/Element/preserve-space -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:processing-instruction /en-US/docs/Web/XSLT/Element/processing-instruction -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:sort /en-US/docs/Web/XSLT/Element/sort -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:strip-space /en-US/docs/Web/XSLT/Element/strip-space -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:stylesheet /en-US/docs/Web/XSLT/Element/stylesheet -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:template /en-US/docs/Web/XSLT/Element/template -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:text /en-US/docs/Web/XSLT/Element/text -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:transform /en-US/docs/Web/XSLT/Element/transform -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:value-of /en-US/docs/Web/XSLT/Element/value-of -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:variable /en-US/docs/Web/XSLT/Element/variable -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:when /en-US/docs/Web/XSLT/Element/when -/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:Elements /en-US/docs/Web/XSLT/Reference/Element +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:apply-imports /en-US/docs/Web/XSLT/Reference/Element/apply-imports +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:apply-templates /en-US/docs/Web/XSLT/Reference/Element/apply-templates +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:attribute /en-US/docs/Web/XSLT/Reference/Element/attribute +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:attribute-set /en-US/docs/Web/XSLT/Reference/Element/attribute-set +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:call-template /en-US/docs/Web/XSLT/Reference/Element/call-template +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:choose /en-US/docs/Web/XSLT/Reference/Element/choose +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:comment /en-US/docs/Web/XSLT/Reference/Element/comment +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:copy /en-US/docs/Web/XSLT/Reference/Element/copy +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:copy-of /en-US/docs/Web/XSLT/Reference/Element/copy-of +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:decimal-format /en-US/docs/Web/XSLT/Reference/Element/decimal-format +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:element /en-US/docs/Web/XSLT/Reference/Element/element +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:fallback /en-US/docs/Web/XSLT/Reference/Element/fallback +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:for-each /en-US/docs/Web/XSLT/Reference/Element/for-each +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:if /en-US/docs/Web/XSLT/Reference/Element/if +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:import /en-US/docs/Web/XSLT/Reference/Element/import +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:include /en-US/docs/Web/XSLT/Reference/Element/include +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:key /en-US/docs/Web/XSLT/Reference/Element/key +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:message /en-US/docs/Web/XSLT/Reference/Element/message +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:namespace-alias /en-US/docs/Web/XSLT/Reference/Element/namespace-alias +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:number /en-US/docs/Web/XSLT/Reference/Element/number +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:otherwise /en-US/docs/Web/XSLT/Reference/Element/otherwise +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:output /en-US/docs/Web/XSLT/Reference/Element/output +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:param /en-US/docs/Web/XSLT/Reference/Element/param +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:preserve-space /en-US/docs/Web/XSLT/Reference/Element/preserve-space +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:processing-instruction /en-US/docs/Web/XSLT/Reference/Element/processing-instruction +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:sort /en-US/docs/Web/XSLT/Reference/Element/sort +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:strip-space /en-US/docs/Web/XSLT/Reference/Element/strip-space +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:stylesheet /en-US/docs/Web/XSLT/Reference/Element/stylesheet +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:template /en-US/docs/Web/XSLT/Reference/Element/template +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:text /en-US/docs/Web/XSLT/Reference/Element/text +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:transform /en-US/docs/Web/XSLT/Reference/Element/transform +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:value-of /en-US/docs/Web/XSLT/Reference/Element/value-of +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:variable /en-US/docs/Web/XSLT/Reference/Element/variable +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:when /en-US/docs/Web/XSLT/Reference/Element/when +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT/XPath_Reference:Elements:xsl:with-param /en-US/docs/Web/XSLT/Reference/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:Mozilla_XSLT_XPath_Reference /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Axes /en-US/docs/Web/XPath/Axes /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Axes:ancestor /en-US/docs/Web/XPath/Axes#ancestor /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Axes:ancestor-or-self /en-US/docs/Web/XPath/Axes#ancestor-or-self @@ -7215,79 +7609,79 @@ /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Axes:preceding /en-US/docs/Web/XPath/Axes#preceding /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Axes:preceding-sibling /en-US/docs/Web/XPath/Axes#preceding-sibling /en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Axes:self /en-US/docs/Web/XPath/Axes#self -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements /en-US/docs/Web/XSLT/Element -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:apply-imports /en-US/docs/Web/XSLT/Element/apply-imports -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:apply-templates /en-US/docs/Web/XSLT/Element/apply-templates -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:attribute /en-US/docs/Web/XSLT/Element/attribute -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:attribute-set /en-US/docs/Web/XSLT/Element/attribute-set -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:call-template /en-US/docs/Web/XSLT/Element/call-template -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:choose /en-US/docs/Web/XSLT/Element/choose -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:comment /en-US/docs/Web/XSLT/Element/comment -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:copy /en-US/docs/Web/XSLT/Element/copy -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:copy-of /en-US/docs/Web/XSLT/Element/copy-of -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:decimal-format /en-US/docs/Web/XSLT/Element/decimal-format -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:element /en-US/docs/Web/XSLT/Element/element -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:fallback /en-US/docs/Web/XSLT/Element/fallback -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:for-each /en-US/docs/Web/XSLT/Element/for-each -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:if /en-US/docs/Web/XSLT/Element/if -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:import /en-US/docs/Web/XSLT/Element/import -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:include /en-US/docs/Web/XSLT/Element/include -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:key /en-US/docs/Web/XSLT/Element/key -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:message /en-US/docs/Web/XSLT/Element/message -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:namespace-alias /en-US/docs/Web/XSLT/Element/namespace-alias -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:number /en-US/docs/Web/XSLT/Element/number -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:otherwise /en-US/docs/Web/XSLT/Element/otherwise -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:output /en-US/docs/Web/XSLT/Element/output -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:param /en-US/docs/Web/XSLT/Element/param -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:preserve-space /en-US/docs/Web/XSLT/Element/preserve-space -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:processing-instruction /en-US/docs/Web/XSLT/Element/processing-instruction -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:sort /en-US/docs/Web/XSLT/Element/sort -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:strip-space /en-US/docs/Web/XSLT/Element/strip-space -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:stylesheet /en-US/docs/Web/XSLT/Element/stylesheet -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:template /en-US/docs/Web/XSLT/Element/template -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:text /en-US/docs/Web/XSLT/Element/text -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:transform /en-US/docs/Web/XSLT/Element/transform -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:value-of /en-US/docs/Web/XSLT/Element/value-of -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:variable /en-US/docs/Web/XSLT/Element/variable -/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:when /en-US/docs/Web/XSLT/Element/when -/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:Elements /en-US/docs/Web/XSLT/Reference/Element +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:apply-imports /en-US/docs/Web/XSLT/Reference/Element/apply-imports +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:apply-templates /en-US/docs/Web/XSLT/Reference/Element/apply-templates +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:attribute /en-US/docs/Web/XSLT/Reference/Element/attribute +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:attribute-set /en-US/docs/Web/XSLT/Reference/Element/attribute-set +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:call-template /en-US/docs/Web/XSLT/Reference/Element/call-template +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:choose /en-US/docs/Web/XSLT/Reference/Element/choose +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:comment /en-US/docs/Web/XSLT/Reference/Element/comment +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:copy /en-US/docs/Web/XSLT/Reference/Element/copy +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:copy-of /en-US/docs/Web/XSLT/Reference/Element/copy-of +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:decimal-format /en-US/docs/Web/XSLT/Reference/Element/decimal-format +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:element /en-US/docs/Web/XSLT/Reference/Element/element +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:fallback /en-US/docs/Web/XSLT/Reference/Element/fallback +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:for-each /en-US/docs/Web/XSLT/Reference/Element/for-each +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:if /en-US/docs/Web/XSLT/Reference/Element/if +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:import /en-US/docs/Web/XSLT/Reference/Element/import +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:include /en-US/docs/Web/XSLT/Reference/Element/include +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:key /en-US/docs/Web/XSLT/Reference/Element/key +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:message /en-US/docs/Web/XSLT/Reference/Element/message +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:namespace-alias /en-US/docs/Web/XSLT/Reference/Element/namespace-alias +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:number /en-US/docs/Web/XSLT/Reference/Element/number +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:otherwise /en-US/docs/Web/XSLT/Reference/Element/otherwise +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:output /en-US/docs/Web/XSLT/Reference/Element/output +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:param /en-US/docs/Web/XSLT/Reference/Element/param +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:preserve-space /en-US/docs/Web/XSLT/Reference/Element/preserve-space +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:processing-instruction /en-US/docs/Web/XSLT/Reference/Element/processing-instruction +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:sort /en-US/docs/Web/XSLT/Reference/Element/sort +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:strip-space /en-US/docs/Web/XSLT/Reference/Element/strip-space +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:stylesheet /en-US/docs/Web/XSLT/Reference/Element/stylesheet +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:template /en-US/docs/Web/XSLT/Reference/Element/template +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:text /en-US/docs/Web/XSLT/Reference/Element/text +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:transform /en-US/docs/Web/XSLT/Reference/Element/transform +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:value-of /en-US/docs/Web/XSLT/Reference/Element/value-of +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:variable /en-US/docs/Web/XSLT/Reference/Element/variable +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:when /en-US/docs/Web/XSLT/Reference/Element/when +/en-US/docs/Transforming_XML_with_XSLT:Mozilla_XSLT_XPath_Reference:Elements:xsl:with-param /en-US/docs/Web/XSLT/Reference/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:Resources /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference /en-US/docs/Web/XSLT/Guides/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: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: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/Reference/Element/decimal-format +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT/XPath_Reference:Elements:xsl:element /en-US/docs/Web/XSLT/Reference/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/Guides/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: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: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/Reference/Element/decimal-format +/en-US/docs/Transforming_XML_with_XSLT:The_Netscape_XSLT_XPath_Reference:Elements:xsl:element /en-US/docs/Web/XSLT/Reference/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 @@ -7312,8 +7706,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 @@ -7336,16 +7730,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 @@ -7692,6 +8086,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 @@ -7817,7 +8212,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 @@ -8039,7 +8434,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 @@ -8099,7 +8494,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 @@ -8133,7 +8528,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 @@ -8417,7 +8812,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 @@ -8784,7 +9179,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 @@ -8801,6 +9196,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 @@ -9465,10 +9864,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 +9885,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 +9963,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 @@ -10004,6 +10411,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 @@ -10073,9 +10482,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 @@ -10118,6 +10525,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 @@ -10148,8 +10556,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 @@ -10213,14 +10619,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 +10659,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 +10710,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 +10718,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,6 +10805,8 @@ /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 @@ -10439,6 +10842,7 @@ /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 +11113,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 +11145,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 +11194,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,8 +11343,8 @@ /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/external /en-US/docs/Web/API/window.sizeToContent /en-US/docs/Web/API/Window/sizeToContent @@ -10945,7 +11354,7 @@ /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 @@ -11050,16 +11459,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 +11493,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 +11505,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,17 +11526,17 @@ /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 @@ -11363,7 +11772,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 @@ -11376,7 +11784,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 @@ -11517,7 +11924,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 @@ -11581,7 +11988,8 @@ /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_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 @@ -11623,15 +12031,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 @@ -11655,11 +12061,11 @@ /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/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 @@ -11737,8 +12143,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 @@ -11784,7 +12191,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 @@ -11957,7 +12364,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 @@ -11996,9 +12403,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 @@ -12041,28 +12448,29 @@ /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/CSS_Layout /en-US/docs/Web/CSS/Guides /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/Challenge_solutions /en-US/docs/Learn_web_development/Core/Challenges +/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 @@ -12112,9 +12520,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 @@ -12132,53 +12540,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 @@ -12192,10 +12600,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 @@ -12251,13 +12659,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 @@ -12275,31 +12683,38 @@ /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 /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/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/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 @@ -12345,13 +12760,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/Basics_of_HTTP/MIME_types +/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 @@ -12373,7 +12789,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 @@ -12383,6 +12799,7 @@ /en-US/docs/Web/JavaScript/Guide/Inheritance_Revisited /en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain /en-US/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain /en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain /en-US/docs/Web/JavaScript/Guide/JavaScript_Overview /en-US/docs/Web/JavaScript/Guide/Introduction +/en-US/docs/Web/JavaScript/Guide/Numbers_and_dates /en-US/docs/Web/JavaScript/Guide/Numbers_and_strings /en-US/docs/Web/JavaScript/Guide/Obsolete_Pages /en-US/docs/Web/JavaScript/Guide /en-US/docs/Web/JavaScript/Guide/Obsolete_Pages/Block_Statement /en-US/docs/Web/JavaScript/Guide/Control_flow_and_error_handling /en-US/docs/Web/JavaScript/Guide/Obsolete_Pages/Calling_Functions /en-US/docs/Web/JavaScript/Guide/Functions @@ -12468,13 +12885,14 @@ /en-US/docs/Web/JavaScript/Guide/Regular_expressions/Unicode_property_escapes /en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape /en-US/docs/Web/JavaScript/Guide/Sameness /en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness /en-US/docs/Web/JavaScript/Guide/Statements /en-US/docs/Web/JavaScript/Guide/Control_flow_and_error_handling +/en-US/docs/Web/JavaScript/Guide/Text_formatting /en-US/docs/Web/JavaScript/Guide/Numbers_and_strings /en-US/docs/Web/JavaScript/Guide/The_Iterator_protocol /en-US/docs/Web/JavaScript/Reference/Iteration_protocols /en-US/docs/Web/JavaScript/Guide/The_legacy_Iterator_protocol /en-US/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features /en-US/docs/Web/JavaScript/Guide/Using_native_JSON /en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON /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 @@ -12706,52 +13124,52 @@ /en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/clear /en-US/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features /en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/prototype /en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap /en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype /en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly /en-US/docs/WebAssembly/JavaScript_interface -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError /en-US/docs/WebAssembly/JavaScript_interface/CompileError -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError/CompileError /en-US/docs/WebAssembly/JavaScript_interface/CompileError/CompileError -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception /en-US/docs/WebAssembly/JavaScript_interface/Exception -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception/Exception /en-US/docs/WebAssembly/JavaScript_interface/Exception/Exception -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception/getArg /en-US/docs/WebAssembly/JavaScript_interface/Exception/getArg -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception/is /en-US/docs/WebAssembly/JavaScript_interface/Exception/is -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception/stack /en-US/docs/WebAssembly/JavaScript_interface/Exception/stack -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global /en-US/docs/WebAssembly/JavaScript_interface/Global -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/Global /en-US/docs/WebAssembly/JavaScript_interface/Global/Global -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/prototype /en-US/docs/WebAssembly/JavaScript_interface/Global -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance /en-US/docs/WebAssembly/JavaScript_interface/Instance -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/Instance /en-US/docs/WebAssembly/JavaScript_interface/Instance/Instance -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/exports /en-US/docs/WebAssembly/JavaScript_interface/Instance/exports -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/prototype /en-US/docs/WebAssembly/JavaScript_interface/Instance -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError /en-US/docs/WebAssembly/JavaScript_interface/LinkError -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError/LinkError /en-US/docs/WebAssembly/JavaScript_interface/LinkError/LinkError -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory /en-US/docs/WebAssembly/JavaScript_interface/Memory -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/Memory /en-US/docs/WebAssembly/JavaScript_interface/Memory/Memory -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer /en-US/docs/WebAssembly/JavaScript_interface/Memory/buffer -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/grow /en-US/docs/WebAssembly/JavaScript_interface/Memory/grow -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/prototype /en-US/docs/WebAssembly/JavaScript_interface/Memory -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module /en-US/docs/WebAssembly/JavaScript_interface/Module -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/Module /en-US/docs/WebAssembly/JavaScript_interface/Module/Module -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/WebAssembly.Module.prototype /en-US/docs/WebAssembly/JavaScript_interface/Module -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/customSections /en-US/docs/WebAssembly/JavaScript_interface/Module/customSections_static -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/exports /en-US/docs/WebAssembly/JavaScript_interface/Module/exports_static -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/imports /en-US/docs/WebAssembly/JavaScript_interface/Module/imports_static -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/prototype /en-US/docs/WebAssembly/JavaScript_interface/Module -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError /en-US/docs/WebAssembly/JavaScript_interface/RuntimeError -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError/RuntimeError /en-US/docs/WebAssembly/JavaScript_interface/RuntimeError/RuntimeError -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table /en-US/docs/WebAssembly/JavaScript_interface/Table -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/Table /en-US/docs/WebAssembly/JavaScript_interface/Table/Table -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/get /en-US/docs/WebAssembly/JavaScript_interface/Table/get -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/grow /en-US/docs/WebAssembly/JavaScript_interface/Table/grow -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/length /en-US/docs/WebAssembly/JavaScript_interface/Table/length -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/prototype /en-US/docs/WebAssembly/JavaScript_interface/Table -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/set /en-US/docs/WebAssembly/JavaScript_interface/Table/set -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Tag /en-US/docs/WebAssembly/JavaScript_interface/Tag -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Tag/Tag /en-US/docs/WebAssembly/JavaScript_interface/Tag/Tag -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Tag/type /en-US/docs/WebAssembly/JavaScript_interface/Tag/type -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile /en-US/docs/WebAssembly/JavaScript_interface/compile_static -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming /en-US/docs/WebAssembly/JavaScript_interface/compileStreaming_static -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate /en-US/docs/WebAssembly/JavaScript_interface/instantiate_static -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming /en-US/docs/WebAssembly/JavaScript_interface/instantiateStreaming_static -/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/validate /en-US/docs/WebAssembly/JavaScript_interface/validate_static +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly /en-US/docs/WebAssembly/Reference/JavaScript_interface +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError /en-US/docs/WebAssembly/Reference/JavaScript_interface/CompileError +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError/CompileError /en-US/docs/WebAssembly/Reference/JavaScript_interface/CompileError/CompileError +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception /en-US/docs/WebAssembly/Reference/JavaScript_interface/Exception +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception/Exception /en-US/docs/WebAssembly/Reference/JavaScript_interface/Exception/Exception +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception/getArg /en-US/docs/WebAssembly/Reference/JavaScript_interface/Exception/getArg +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception/is /en-US/docs/WebAssembly/Reference/JavaScript_interface/Exception/is +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Exception/stack /en-US/docs/WebAssembly/Reference/JavaScript_interface/Exception/stack +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global /en-US/docs/WebAssembly/Reference/JavaScript_interface/Global +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/Global /en-US/docs/WebAssembly/Reference/JavaScript_interface/Global/Global +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/prototype /en-US/docs/WebAssembly/Reference/JavaScript_interface/Global +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance /en-US/docs/WebAssembly/Reference/JavaScript_interface/Instance +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/Instance /en-US/docs/WebAssembly/Reference/JavaScript_interface/Instance/Instance +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/exports /en-US/docs/WebAssembly/Reference/JavaScript_interface/Instance/exports +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance/prototype /en-US/docs/WebAssembly/Reference/JavaScript_interface/Instance +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError /en-US/docs/WebAssembly/Reference/JavaScript_interface/LinkError +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError/LinkError /en-US/docs/WebAssembly/Reference/JavaScript_interface/LinkError/LinkError +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory /en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/Memory /en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory/Memory +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer /en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory/buffer +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/grow /en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory/grow +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/prototype /en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/Module /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module/Module +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/WebAssembly.Module.prototype /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/customSections /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module/customSections_static +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/exports /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module/exports_static +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/imports /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module/imports_static +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/prototype /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError /en-US/docs/WebAssembly/Reference/JavaScript_interface/RuntimeError +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError/RuntimeError /en-US/docs/WebAssembly/Reference/JavaScript_interface/RuntimeError/RuntimeError +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/Table /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/Table +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/get /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/get +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/grow /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/grow +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/length /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/length +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/prototype /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/set /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/set +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Tag /en-US/docs/WebAssembly/Reference/JavaScript_interface/Tag +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Tag/Tag /en-US/docs/WebAssembly/Reference/JavaScript_interface/Tag/Tag +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Tag/type /en-US/docs/WebAssembly/Reference/JavaScript_interface/Tag/type +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile /en-US/docs/WebAssembly/Reference/JavaScript_interface/compile_static +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming /en-US/docs/WebAssembly/Reference/JavaScript_interface/compileStreaming_static +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate /en-US/docs/WebAssembly/Reference/JavaScript_interface/instantiate_static +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiateStreaming /en-US/docs/WebAssembly/Reference/JavaScript_interface/instantiateStreaming_static +/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/validate /en-US/docs/WebAssembly/Reference/JavaScript_interface/validate_static /en-US/docs/Web/JavaScript/Reference/Global_Objects/null /en-US/docs/Web/JavaScript/Reference/Operators/null /en-US/docs/Web/JavaScript/Reference/Global_Objects/uneval /en-US/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features /en-US/docs/Web/JavaScript/Reference/Methods_Index /en-US/docs/Web/JavaScript/Reference @@ -12805,24 +13223,44 @@ /en-US/docs/Web/JavaScript/Typed_arrays/Uint16Array /en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array /en-US/docs/Web/JavaScript/Typed_arrays/Uint32Array /en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array /en-US/docs/Web/JavaScript/Typed_arrays/Uint8Array /en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array +/en-US/docs/Web/Manifest/background_color /en-US/docs/Web/Manifest/Reference/background_color +/en-US/docs/Web/Manifest/categories /en-US/docs/Web/Manifest/Reference/categories +/en-US/docs/Web/Manifest/description /en-US/docs/Web/Manifest/Reference/description /en-US/docs/Web/Manifest/dir /en-US/docs/Web/Manifest +/en-US/docs/Web/Manifest/display /en-US/docs/Web/Manifest/Reference/display +/en-US/docs/Web/Manifest/display_override /en-US/docs/Web/Manifest/Reference/display_override +/en-US/docs/Web/Manifest/file_handlers /en-US/docs/Web/Manifest/Reference/file_handlers /en-US/docs/Web/Manifest/iarc_rating_id /en-US/docs/Web/Manifest +/en-US/docs/Web/Manifest/icons /en-US/docs/Web/Manifest/Reference/icons +/en-US/docs/Web/Manifest/id /en-US/docs/Web/Manifest/Reference/id /en-US/docs/Web/Manifest/lang /en-US/docs/Web/Manifest +/en-US/docs/Web/Manifest/launch_handler /en-US/docs/Web/Manifest/Reference/launch_handler +/en-US/docs/Web/Manifest/name /en-US/docs/Web/Manifest/Reference/name +/en-US/docs/Web/Manifest/note_taking /en-US/docs/Web/Manifest/Reference/note_taking +/en-US/docs/Web/Manifest/orientation /en-US/docs/Web/Manifest/Reference/orientation +/en-US/docs/Web/Manifest/prefer_related_applications /en-US/docs/Web/Manifest/Reference/prefer_related_applications +/en-US/docs/Web/Manifest/protocol_handlers /en-US/docs/Web/Manifest/Reference/protocol_handlers +/en-US/docs/Web/Manifest/related_applications /en-US/docs/Web/Manifest/Reference/related_applications +/en-US/docs/Web/Manifest/scope /en-US/docs/Web/Manifest/Reference/scope +/en-US/docs/Web/Manifest/screenshots /en-US/docs/Web/Manifest/Reference/screenshots +/en-US/docs/Web/Manifest/serviceworker /en-US/docs/Web/Manifest/Reference/serviceworker +/en-US/docs/Web/Manifest/share_target /en-US/docs/Web/Manifest/Reference/share_target +/en-US/docs/Web/Manifest/short_name /en-US/docs/Web/Manifest/Reference/short_name +/en-US/docs/Web/Manifest/shortcuts /en-US/docs/Web/Manifest/Reference/shortcuts +/en-US/docs/Web/Manifest/start_url /en-US/docs/Web/Manifest/Reference/start_url +/en-US/docs/Web/Manifest/theme_color /en-US/docs/Web/Manifest/Reference/theme_color /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 @@ -12843,12 +13281,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,7 +13458,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 @@ -13055,7 +13492,7 @@ /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 @@ -13066,7 +13503,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 @@ -13098,11 +13534,52 @@ /en-US/docs/Web/XPath/Axes/preceding-sibling /en-US/docs/Web/XPath/Axes#preceding-sibling /en-US/docs/Web/XPath/Axes/self /en-US/docs/Web/XPath/Axes#self /en-US/docs/Web/XPath/Index /en-US/docs/Web/XPath +/en-US/docs/Web/XSLT/Common_errors /en-US/docs/Web/XSLT/Guides/Common_errors /en-US/docs/Web/XSLT/EXSLT /en-US/docs/Web/EXSLT -/en-US/docs/Web/XSLT/Elements /en-US/docs/Web/XSLT/Element -/en-US/docs/Web/XSLT/Elements/element /en-US/docs/Web/XSLT/Element/element +/en-US/docs/Web/XSLT/Element /en-US/docs/Web/XSLT/Reference/Element +/en-US/docs/Web/XSLT/Element/apply-imports /en-US/docs/Web/XSLT/Reference/Element/apply-imports +/en-US/docs/Web/XSLT/Element/apply-templates /en-US/docs/Web/XSLT/Reference/Element/apply-templates +/en-US/docs/Web/XSLT/Element/attribute /en-US/docs/Web/XSLT/Reference/Element/attribute +/en-US/docs/Web/XSLT/Element/attribute-set /en-US/docs/Web/XSLT/Reference/Element/attribute-set +/en-US/docs/Web/XSLT/Element/call-template /en-US/docs/Web/XSLT/Reference/Element/call-template +/en-US/docs/Web/XSLT/Element/choose /en-US/docs/Web/XSLT/Reference/Element/choose +/en-US/docs/Web/XSLT/Element/comment /en-US/docs/Web/XSLT/Reference/Element/comment +/en-US/docs/Web/XSLT/Element/copy /en-US/docs/Web/XSLT/Reference/Element/copy +/en-US/docs/Web/XSLT/Element/copy-of /en-US/docs/Web/XSLT/Reference/Element/copy-of +/en-US/docs/Web/XSLT/Element/decimal-format /en-US/docs/Web/XSLT/Reference/Element/decimal-format +/en-US/docs/Web/XSLT/Element/element /en-US/docs/Web/XSLT/Reference/Element/element +/en-US/docs/Web/XSLT/Element/fallback /en-US/docs/Web/XSLT/Reference/Element/fallback +/en-US/docs/Web/XSLT/Element/for-each /en-US/docs/Web/XSLT/Reference/Element/for-each +/en-US/docs/Web/XSLT/Element/if /en-US/docs/Web/XSLT/Reference/Element/if +/en-US/docs/Web/XSLT/Element/import /en-US/docs/Web/XSLT/Reference/Element/import +/en-US/docs/Web/XSLT/Element/include /en-US/docs/Web/XSLT/Reference/Element/include +/en-US/docs/Web/XSLT/Element/key /en-US/docs/Web/XSLT/Reference/Element/key +/en-US/docs/Web/XSLT/Element/message /en-US/docs/Web/XSLT/Reference/Element/message +/en-US/docs/Web/XSLT/Element/namespace-alias /en-US/docs/Web/XSLT/Reference/Element/namespace-alias +/en-US/docs/Web/XSLT/Element/number /en-US/docs/Web/XSLT/Reference/Element/number +/en-US/docs/Web/XSLT/Element/otherwise /en-US/docs/Web/XSLT/Reference/Element/otherwise +/en-US/docs/Web/XSLT/Element/output /en-US/docs/Web/XSLT/Reference/Element/output +/en-US/docs/Web/XSLT/Element/param /en-US/docs/Web/XSLT/Reference/Element/param +/en-US/docs/Web/XSLT/Element/preserve-space /en-US/docs/Web/XSLT/Reference/Element/preserve-space +/en-US/docs/Web/XSLT/Element/processing-instruction /en-US/docs/Web/XSLT/Reference/Element/processing-instruction +/en-US/docs/Web/XSLT/Element/sort /en-US/docs/Web/XSLT/Reference/Element/sort +/en-US/docs/Web/XSLT/Element/strip-space /en-US/docs/Web/XSLT/Reference/Element/strip-space +/en-US/docs/Web/XSLT/Element/stylesheet /en-US/docs/Web/XSLT/Reference/Element/stylesheet +/en-US/docs/Web/XSLT/Element/template /en-US/docs/Web/XSLT/Reference/Element/template +/en-US/docs/Web/XSLT/Element/text /en-US/docs/Web/XSLT/Reference/Element/text +/en-US/docs/Web/XSLT/Element/transform /en-US/docs/Web/XSLT/Reference/Element/transform +/en-US/docs/Web/XSLT/Element/value-of /en-US/docs/Web/XSLT/Reference/Element/value-of +/en-US/docs/Web/XSLT/Element/variable /en-US/docs/Web/XSLT/Reference/Element/variable +/en-US/docs/Web/XSLT/Element/when /en-US/docs/Web/XSLT/Reference/Element/when +/en-US/docs/Web/XSLT/Element/with-param /en-US/docs/Web/XSLT/Reference/Element/with-param +/en-US/docs/Web/XSLT/Elements /en-US/docs/Web/XSLT/Reference/Element +/en-US/docs/Web/XSLT/Elements/element /en-US/docs/Web/XSLT/Reference/Element/element /en-US/docs/Web/XSLT/Index /en-US/docs/Web/XSLT -/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT +/en-US/docs/Web/XSLT/PI_Parameters /en-US/docs/Web/XSLT/Guides/PI_Parameters +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/An_Overview /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT/An_Overview +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/For_Further_Reading /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT/For_Further_Reading +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Axes /en-US/docs/Web/XPath/Axes /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Axes/ancestor /en-US/docs/Web/XPath/Axes#ancestor /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Axes/ancestor-or-self /en-US/docs/Web/XPath/Axes#ancestor-or-self @@ -13117,10 +13594,24 @@ /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Axes/preceding /en-US/docs/Web/XPath/Axes#preceding /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Axes/preceding-sibling /en-US/docs/Web/XPath/Axes#preceding-sibling /en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/Mozilla_XSLT_XPath_Reference/Axes/self /en-US/docs/Web/XPath/Axes#self -/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/Elements /en-US/docs/Web/XSLT/Reference/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/Resources /en-US/docs/Web/XSLT/Guides/Transforming_XML_with_XSLT +/en-US/docs/Web/XSLT/Transforming_XML_with_XSLT/The_Netscape_XSLT_XPath_Reference /en-US/docs/Web/XSLT/Guides/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 @@ -13131,42 +13622,42 @@ /en-US/docs/Web/XSLT/XSLT_JS_interface_in_Gecko/JavaScript_XSLT_Bindings /en-US/docs/Web/API/XSLTProcessor /en-US/docs/Web/XSLT/XSLT_JS_interface_in_Gecko/Resources /en-US/docs/Web/API/XSLTProcessor /en-US/docs/Web/XSLT/XSLT_JS_interface_in_Gecko/Setting_Parameters /en-US/docs/Web/API/XSLTProcessor -/en-US/docs/Web/XSLT/apply-imports /en-US/docs/Web/XSLT/Element/apply-imports -/en-US/docs/Web/XSLT/apply-templates /en-US/docs/Web/XSLT/Element/apply-templates -/en-US/docs/Web/XSLT/attribute /en-US/docs/Web/XSLT/Element/attribute -/en-US/docs/Web/XSLT/attribute-set /en-US/docs/Web/XSLT/Element/attribute-set -/en-US/docs/Web/XSLT/call-template /en-US/docs/Web/XSLT/Element/call-template -/en-US/docs/Web/XSLT/choose /en-US/docs/Web/XSLT/Element/choose -/en-US/docs/Web/XSLT/comment /en-US/docs/Web/XSLT/Element/comment -/en-US/docs/Web/XSLT/copy /en-US/docs/Web/XSLT/Element/copy -/en-US/docs/Web/XSLT/copy-of /en-US/docs/Web/XSLT/Element/copy-of -/en-US/docs/Web/XSLT/decimal-format /en-US/docs/Web/XSLT/Element/decimal-format -/en-US/docs/Web/XSLT/fallback /en-US/docs/Web/XSLT/Element/fallback -/en-US/docs/Web/XSLT/for-each /en-US/docs/Web/XSLT/Element/for-each -/en-US/docs/Web/XSLT/if /en-US/docs/Web/XSLT/Element/if -/en-US/docs/Web/XSLT/import /en-US/docs/Web/XSLT/Element/import -/en-US/docs/Web/XSLT/include /en-US/docs/Web/XSLT/Element/include -/en-US/docs/Web/XSLT/key /en-US/docs/Web/XSLT/Element/key -/en-US/docs/Web/XSLT/message /en-US/docs/Web/XSLT/Element/message -/en-US/docs/Web/XSLT/namespace-alias /en-US/docs/Web/XSLT/Element/namespace-alias -/en-US/docs/Web/XSLT/number /en-US/docs/Web/XSLT/Element/number -/en-US/docs/Web/XSLT/otherwise /en-US/docs/Web/XSLT/Element/otherwise -/en-US/docs/Web/XSLT/output /en-US/docs/Web/XSLT/Element/output -/en-US/docs/Web/XSLT/param /en-US/docs/Web/XSLT/Element/param -/en-US/docs/Web/XSLT/preserve-space /en-US/docs/Web/XSLT/Element/preserve-space -/en-US/docs/Web/XSLT/processing-instruction /en-US/docs/Web/XSLT/Element/processing-instruction +/en-US/docs/Web/XSLT/apply-imports /en-US/docs/Web/XSLT/Reference/Element/apply-imports +/en-US/docs/Web/XSLT/apply-templates /en-US/docs/Web/XSLT/Reference/Element/apply-templates +/en-US/docs/Web/XSLT/attribute /en-US/docs/Web/XSLT/Reference/Element/attribute +/en-US/docs/Web/XSLT/attribute-set /en-US/docs/Web/XSLT/Reference/Element/attribute-set +/en-US/docs/Web/XSLT/call-template /en-US/docs/Web/XSLT/Reference/Element/call-template +/en-US/docs/Web/XSLT/choose /en-US/docs/Web/XSLT/Reference/Element/choose +/en-US/docs/Web/XSLT/comment /en-US/docs/Web/XSLT/Reference/Element/comment +/en-US/docs/Web/XSLT/copy /en-US/docs/Web/XSLT/Reference/Element/copy +/en-US/docs/Web/XSLT/copy-of /en-US/docs/Web/XSLT/Reference/Element/copy-of +/en-US/docs/Web/XSLT/decimal-format /en-US/docs/Web/XSLT/Reference/Element/decimal-format +/en-US/docs/Web/XSLT/fallback /en-US/docs/Web/XSLT/Reference/Element/fallback +/en-US/docs/Web/XSLT/for-each /en-US/docs/Web/XSLT/Reference/Element/for-each +/en-US/docs/Web/XSLT/if /en-US/docs/Web/XSLT/Reference/Element/if +/en-US/docs/Web/XSLT/import /en-US/docs/Web/XSLT/Reference/Element/import +/en-US/docs/Web/XSLT/include /en-US/docs/Web/XSLT/Reference/Element/include +/en-US/docs/Web/XSLT/key /en-US/docs/Web/XSLT/Reference/Element/key +/en-US/docs/Web/XSLT/message /en-US/docs/Web/XSLT/Reference/Element/message +/en-US/docs/Web/XSLT/namespace-alias /en-US/docs/Web/XSLT/Reference/Element/namespace-alias +/en-US/docs/Web/XSLT/number /en-US/docs/Web/XSLT/Reference/Element/number +/en-US/docs/Web/XSLT/otherwise /en-US/docs/Web/XSLT/Reference/Element/otherwise +/en-US/docs/Web/XSLT/output /en-US/docs/Web/XSLT/Reference/Element/output +/en-US/docs/Web/XSLT/param /en-US/docs/Web/XSLT/Reference/Element/param +/en-US/docs/Web/XSLT/preserve-space /en-US/docs/Web/XSLT/Reference/Element/preserve-space +/en-US/docs/Web/XSLT/processing-instruction /en-US/docs/Web/XSLT/Reference/Element/processing-instruction /en-US/docs/Web/XSLT/regexp /en-US/docs/Web/EXSLT/regexp /en-US/docs/Web/XSLT/regexp/match /en-US/docs/Web/EXSLT/regexp/match -/en-US/docs/Web/XSLT/sort /en-US/docs/Web/XSLT/Element/sort -/en-US/docs/Web/XSLT/strip-space /en-US/docs/Web/XSLT/Element/strip-space -/en-US/docs/Web/XSLT/stylesheet /en-US/docs/Web/XSLT/Element/stylesheet -/en-US/docs/Web/XSLT/template /en-US/docs/Web/XSLT/Element/template -/en-US/docs/Web/XSLT/text /en-US/docs/Web/XSLT/Element/text -/en-US/docs/Web/XSLT/transform /en-US/docs/Web/XSLT/Element/transform -/en-US/docs/Web/XSLT/value-of /en-US/docs/Web/XSLT/Element/value-of -/en-US/docs/Web/XSLT/variable /en-US/docs/Web/XSLT/Element/variable -/en-US/docs/Web/XSLT/when /en-US/docs/Web/XSLT/Element/when -/en-US/docs/Web/XSLT/with-param /en-US/docs/Web/XSLT/Element/with-param +/en-US/docs/Web/XSLT/sort /en-US/docs/Web/XSLT/Reference/Element/sort +/en-US/docs/Web/XSLT/strip-space /en-US/docs/Web/XSLT/Reference/Element/strip-space +/en-US/docs/Web/XSLT/stylesheet /en-US/docs/Web/XSLT/Reference/Element/stylesheet +/en-US/docs/Web/XSLT/template /en-US/docs/Web/XSLT/Reference/Element/template +/en-US/docs/Web/XSLT/text /en-US/docs/Web/XSLT/Reference/Element/text +/en-US/docs/Web/XSLT/transform /en-US/docs/Web/XSLT/Reference/Element/transform +/en-US/docs/Web/XSLT/value-of /en-US/docs/Web/XSLT/Reference/Element/value-of +/en-US/docs/Web/XSLT/variable /en-US/docs/Web/XSLT/Reference/Element/variable +/en-US/docs/Web/XSLT/when /en-US/docs/Web/XSLT/Reference/Element/when +/en-US/docs/Web/XSLT/with-param /en-US/docs/Web/XSLT/Reference/Element/with-param /en-US/docs/WebAPI /en-US/docs/Web/API /en-US/docs/WebAPI/Battery_Status /en-US/docs/Web/API/Battery_Status_API /en-US/docs/WebAPI/CSS /en-US/docs/Web/API/CSS @@ -13184,32 +13675,83 @@ /en-US/docs/WebAPI/WebBluetooth /en-US/docs/Web/API/Web_Bluetooth_API /en-US/docs/WebApps /en-US/docs/Web/Progressive_web_apps /en-US/docs/WebAssembly/API /en-US/docs/WebAssembly -/en-US/docs/WebAssembly/API/Instance /en-US/docs/WebAssembly/JavaScript_interface/Instance -/en-US/docs/WebAssembly/API/Instance/Instance.exports /en-US/docs/WebAssembly/JavaScript_interface/Instance/exports -/en-US/docs/WebAssembly/API/Instance/exports /en-US/docs/WebAssembly/JavaScript_interface/Instance/exports -/en-US/docs/WebAssembly/API/Memory /en-US/docs/WebAssembly/JavaScript_interface/Memory -/en-US/docs/WebAssembly/API/Memory/buffer /en-US/docs/WebAssembly/JavaScript_interface/Memory/buffer -/en-US/docs/WebAssembly/API/Memory/grow /en-US/docs/WebAssembly/JavaScript_interface/Memory/grow -/en-US/docs/WebAssembly/API/Memory/grow() /en-US/docs/WebAssembly/JavaScript_interface/Memory/grow -/en-US/docs/WebAssembly/API/Module /en-US/docs/WebAssembly/JavaScript_interface/Module -/en-US/docs/WebAssembly/API/Table /en-US/docs/WebAssembly/JavaScript_interface/Table -/en-US/docs/WebAssembly/API/Table/get /en-US/docs/WebAssembly/JavaScript_interface/Table/get -/en-US/docs/WebAssembly/API/Table/grow /en-US/docs/WebAssembly/JavaScript_interface/Table/grow -/en-US/docs/WebAssembly/API/Table/length /en-US/docs/WebAssembly/JavaScript_interface/Table/length -/en-US/docs/WebAssembly/API/Table/set /en-US/docs/WebAssembly/JavaScript_interface/Table/set -/en-US/docs/WebAssembly/Exported_function_exotic_objects /en-US/docs/WebAssembly/Exported_functions -/en-US/docs/WebAssembly/Exported_wasm_functions /en-US/docs/WebAssembly/Exported_functions -/en-US/docs/WebAssembly/Fetching_WebAssembly_bytecode /en-US/docs/WebAssembly/Loading_and_running +/en-US/docs/WebAssembly/API/Instance /en-US/docs/WebAssembly/Reference/JavaScript_interface/Instance +/en-US/docs/WebAssembly/API/Instance/Instance.exports /en-US/docs/WebAssembly/Reference/JavaScript_interface/Instance/exports +/en-US/docs/WebAssembly/API/Instance/exports /en-US/docs/WebAssembly/Reference/JavaScript_interface/Instance/exports +/en-US/docs/WebAssembly/API/Memory /en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory +/en-US/docs/WebAssembly/API/Memory/buffer /en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory/buffer +/en-US/docs/WebAssembly/API/Memory/grow /en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory/grow +/en-US/docs/WebAssembly/API/Memory/grow() /en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory/grow +/en-US/docs/WebAssembly/API/Module /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module +/en-US/docs/WebAssembly/API/Table /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table +/en-US/docs/WebAssembly/API/Table/get /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/get +/en-US/docs/WebAssembly/API/Table/grow /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/grow +/en-US/docs/WebAssembly/API/Table/length /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/length +/en-US/docs/WebAssembly/API/Table/set /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/set +/en-US/docs/WebAssembly/C_to_Wasm /en-US/docs/WebAssembly/Guides/C_to_Wasm +/en-US/docs/WebAssembly/Concepts /en-US/docs/WebAssembly/Guides/Concepts +/en-US/docs/WebAssembly/Exported_function_exotic_objects /en-US/docs/WebAssembly/Guides/Exported_functions +/en-US/docs/WebAssembly/Exported_functions /en-US/docs/WebAssembly/Guides/Exported_functions +/en-US/docs/WebAssembly/Exported_wasm_functions /en-US/docs/WebAssembly/Guides/Exported_functions +/en-US/docs/WebAssembly/Fetching_WebAssembly_bytecode /en-US/docs/WebAssembly/Guides/Loading_and_running +/en-US/docs/WebAssembly/Imported_string_constants /en-US/docs/WebAssembly/Guides/Imported_string_constants /en-US/docs/WebAssembly/Index /en-US/docs/WebAssembly -/en-US/docs/WebAssembly/JavaScript_interface/Module/customSections /en-US/docs/WebAssembly/JavaScript_interface/Module/customSections_static -/en-US/docs/WebAssembly/JavaScript_interface/Module/exports /en-US/docs/WebAssembly/JavaScript_interface/Module/exports_static -/en-US/docs/WebAssembly/JavaScript_interface/Module/imports /en-US/docs/WebAssembly/JavaScript_interface/Module/imports_static -/en-US/docs/WebAssembly/JavaScript_interface/compile /en-US/docs/WebAssembly/JavaScript_interface/compile_static -/en-US/docs/WebAssembly/JavaScript_interface/compileStreaming /en-US/docs/WebAssembly/JavaScript_interface/compileStreaming_static -/en-US/docs/WebAssembly/JavaScript_interface/instantiate /en-US/docs/WebAssembly/JavaScript_interface/instantiate_static -/en-US/docs/WebAssembly/JavaScript_interface/instantiateStreaming /en-US/docs/WebAssembly/JavaScript_interface/instantiateStreaming_static -/en-US/docs/WebAssembly/JavaScript_interface/validate /en-US/docs/WebAssembly/JavaScript_interface/validate_static +/en-US/docs/WebAssembly/JavaScript_builtins /en-US/docs/WebAssembly/Guides/JavaScript_builtins +/en-US/docs/WebAssembly/JavaScript_interface /en-US/docs/WebAssembly/Reference/JavaScript_interface +/en-US/docs/WebAssembly/JavaScript_interface/CompileError /en-US/docs/WebAssembly/Reference/JavaScript_interface/CompileError +/en-US/docs/WebAssembly/JavaScript_interface/CompileError/CompileError /en-US/docs/WebAssembly/Reference/JavaScript_interface/CompileError/CompileError +/en-US/docs/WebAssembly/JavaScript_interface/Exception /en-US/docs/WebAssembly/Reference/JavaScript_interface/Exception +/en-US/docs/WebAssembly/JavaScript_interface/Exception/Exception /en-US/docs/WebAssembly/Reference/JavaScript_interface/Exception/Exception +/en-US/docs/WebAssembly/JavaScript_interface/Exception/getArg /en-US/docs/WebAssembly/Reference/JavaScript_interface/Exception/getArg +/en-US/docs/WebAssembly/JavaScript_interface/Exception/is /en-US/docs/WebAssembly/Reference/JavaScript_interface/Exception/is +/en-US/docs/WebAssembly/JavaScript_interface/Exception/stack /en-US/docs/WebAssembly/Reference/JavaScript_interface/Exception/stack +/en-US/docs/WebAssembly/JavaScript_interface/Global /en-US/docs/WebAssembly/Reference/JavaScript_interface/Global +/en-US/docs/WebAssembly/JavaScript_interface/Global/Global /en-US/docs/WebAssembly/Reference/JavaScript_interface/Global/Global +/en-US/docs/WebAssembly/JavaScript_interface/Instance /en-US/docs/WebAssembly/Reference/JavaScript_interface/Instance +/en-US/docs/WebAssembly/JavaScript_interface/Instance/Instance /en-US/docs/WebAssembly/Reference/JavaScript_interface/Instance/Instance +/en-US/docs/WebAssembly/JavaScript_interface/Instance/exports /en-US/docs/WebAssembly/Reference/JavaScript_interface/Instance/exports +/en-US/docs/WebAssembly/JavaScript_interface/LinkError /en-US/docs/WebAssembly/Reference/JavaScript_interface/LinkError +/en-US/docs/WebAssembly/JavaScript_interface/LinkError/LinkError /en-US/docs/WebAssembly/Reference/JavaScript_interface/LinkError/LinkError +/en-US/docs/WebAssembly/JavaScript_interface/Memory /en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory +/en-US/docs/WebAssembly/JavaScript_interface/Memory/Memory /en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory/Memory +/en-US/docs/WebAssembly/JavaScript_interface/Memory/buffer /en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory/buffer +/en-US/docs/WebAssembly/JavaScript_interface/Memory/grow /en-US/docs/WebAssembly/Reference/JavaScript_interface/Memory/grow +/en-US/docs/WebAssembly/JavaScript_interface/Module /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module +/en-US/docs/WebAssembly/JavaScript_interface/Module/Module /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module/Module +/en-US/docs/WebAssembly/JavaScript_interface/Module/customSections /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module/customSections_static +/en-US/docs/WebAssembly/JavaScript_interface/Module/customSections_static /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module/customSections_static +/en-US/docs/WebAssembly/JavaScript_interface/Module/exports /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module/exports_static +/en-US/docs/WebAssembly/JavaScript_interface/Module/exports_static /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module/exports_static +/en-US/docs/WebAssembly/JavaScript_interface/Module/imports /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module/imports_static +/en-US/docs/WebAssembly/JavaScript_interface/Module/imports_static /en-US/docs/WebAssembly/Reference/JavaScript_interface/Module/imports_static +/en-US/docs/WebAssembly/JavaScript_interface/RuntimeError /en-US/docs/WebAssembly/Reference/JavaScript_interface/RuntimeError +/en-US/docs/WebAssembly/JavaScript_interface/RuntimeError/RuntimeError /en-US/docs/WebAssembly/Reference/JavaScript_interface/RuntimeError/RuntimeError +/en-US/docs/WebAssembly/JavaScript_interface/Table /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table +/en-US/docs/WebAssembly/JavaScript_interface/Table/Table /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/Table +/en-US/docs/WebAssembly/JavaScript_interface/Table/get /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/get +/en-US/docs/WebAssembly/JavaScript_interface/Table/grow /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/grow +/en-US/docs/WebAssembly/JavaScript_interface/Table/length /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/length +/en-US/docs/WebAssembly/JavaScript_interface/Table/set /en-US/docs/WebAssembly/Reference/JavaScript_interface/Table/set +/en-US/docs/WebAssembly/JavaScript_interface/Tag /en-US/docs/WebAssembly/Reference/JavaScript_interface/Tag +/en-US/docs/WebAssembly/JavaScript_interface/Tag/Tag /en-US/docs/WebAssembly/Reference/JavaScript_interface/Tag/Tag +/en-US/docs/WebAssembly/JavaScript_interface/Tag/type /en-US/docs/WebAssembly/Reference/JavaScript_interface/Tag/type +/en-US/docs/WebAssembly/JavaScript_interface/compile /en-US/docs/WebAssembly/Reference/JavaScript_interface/compile_static +/en-US/docs/WebAssembly/JavaScript_interface/compileStreaming /en-US/docs/WebAssembly/Reference/JavaScript_interface/compileStreaming_static +/en-US/docs/WebAssembly/JavaScript_interface/compileStreaming_static /en-US/docs/WebAssembly/Reference/JavaScript_interface/compileStreaming_static +/en-US/docs/WebAssembly/JavaScript_interface/compile_static /en-US/docs/WebAssembly/Reference/JavaScript_interface/compile_static +/en-US/docs/WebAssembly/JavaScript_interface/instantiate /en-US/docs/WebAssembly/Reference/JavaScript_interface/instantiate_static +/en-US/docs/WebAssembly/JavaScript_interface/instantiateStreaming /en-US/docs/WebAssembly/Reference/JavaScript_interface/instantiateStreaming_static +/en-US/docs/WebAssembly/JavaScript_interface/instantiateStreaming_static /en-US/docs/WebAssembly/Reference/JavaScript_interface/instantiateStreaming_static +/en-US/docs/WebAssembly/JavaScript_interface/instantiate_static /en-US/docs/WebAssembly/Reference/JavaScript_interface/instantiate_static +/en-US/docs/WebAssembly/JavaScript_interface/validate /en-US/docs/WebAssembly/Reference/JavaScript_interface/validate_static +/en-US/docs/WebAssembly/JavaScript_interface/validate_static /en-US/docs/WebAssembly/Reference/JavaScript_interface/validate_static +/en-US/docs/WebAssembly/Loading_and_running /en-US/docs/WebAssembly/Guides/Loading_and_running +/en-US/docs/WebAssembly/Rust_to_Wasm /en-US/docs/WebAssembly/Guides/Rust_to_Wasm +/en-US/docs/WebAssembly/Text_format_to_Wasm /en-US/docs/WebAssembly/Guides/Text_format_to_Wasm +/en-US/docs/WebAssembly/Understanding_the_text_format /en-US/docs/WebAssembly/Guides/Understanding_the_text_format +/en-US/docs/WebAssembly/Using_the_JavaScript_API /en-US/docs/WebAssembly/Guides/Using_the_JavaScript_API /en-US/docs/WebAssembly/WebAssembly_JavaScript_API /en-US/docs/WebAssembly +/en-US/docs/WebAssembly/existing_C_to_Wasm /en-US/docs/WebAssembly/Guides/Existing_C_to_Wasm /en-US/docs/WebAudio_playbackRate_explained /en-US/docs/Web/Media/Audio_and_video_delivery/WebAudio_playbackRate_explained /en-US/docs/WebDAV /en-US/docs/Glossary/WebDAV /en-US/docs/WebGL /en-US/docs/Web/API/WebGL_API @@ -13219,7 +13761,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 @@ -13249,20 +13790,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 @@ -13271,7 +13812,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 @@ -13396,8 +13937,8 @@ /en-US/docs/XSL /en-US/docs/Web/XSLT /en-US/docs/XSLT /en-US/docs/Web/XSLT /en-US/docs/XSLT/EXSLT /en-US/docs/Web/EXSLT -/en-US/docs/XSLT/Elements /en-US/docs/Web/XSLT/Element -/en-US/docs/XSLT/PI_Parameters /en-US/docs/Web/XSLT/PI_Parameters +/en-US/docs/XSLT/Elements /en-US/docs/Web/XSLT/Reference/Element +/en-US/docs/XSLT/PI_Parameters /en-US/docs/Web/XSLT/Guides/PI_Parameters /en-US/docs/XSLT/XSLT_JS_interface_in_Gecko /en-US/docs/Web/API/XSLTProcessor /en-US/docs/XSLT/XSLT_JS_interface_in_Gecko/Advanced_Example /en-US/docs/Web/API/XSLTProcessor /en-US/docs/XSLT/XSLT_JS_interface_in_Gecko/Basic_Example /en-US/docs/Web/API/XSLTProcessor @@ -13406,82 +13947,82 @@ /en-US/docs/XSLT/XSLT_JS_interface_in_Gecko/JavaScript_XSLT_Bindings /en-US/docs/Web/API/XSLTProcessor /en-US/docs/XSLT/XSLT_JS_interface_in_Gecko/Resources /en-US/docs/Web/API/XSLTProcessor /en-US/docs/XSLT/XSLT_JS_interface_in_Gecko/Setting_Parameters /en-US/docs/Web/API/XSLTProcessor -/en-US/docs/XSLT/apply-imports /en-US/docs/Web/XSLT/Element/apply-imports -/en-US/docs/XSLT/apply-templates /en-US/docs/Web/XSLT/Element/apply-templates -/en-US/docs/XSLT/attribute /en-US/docs/Web/XSLT/Element/attribute -/en-US/docs/XSLT/attribute-set /en-US/docs/Web/XSLT/Element/attribute-set -/en-US/docs/XSLT/call-template /en-US/docs/Web/XSLT/Element/call-template -/en-US/docs/XSLT/choose /en-US/docs/Web/XSLT/Element/choose -/en-US/docs/XSLT/comment /en-US/docs/Web/XSLT/Element/comment -/en-US/docs/XSLT/copy /en-US/docs/Web/XSLT/Element/copy -/en-US/docs/XSLT/copy-of /en-US/docs/Web/XSLT/Element/copy-of -/en-US/docs/XSLT/decimal-format /en-US/docs/Web/XSLT/Element/decimal-format -/en-US/docs/XSLT/element /en-US/docs/Web/XSLT/Element/element -/en-US/docs/XSLT/fallback /en-US/docs/Web/XSLT/Element/fallback -/en-US/docs/XSLT/for-each /en-US/docs/Web/XSLT/Element/for-each -/en-US/docs/XSLT/if /en-US/docs/Web/XSLT/Element/if -/en-US/docs/XSLT/import /en-US/docs/Web/XSLT/Element/import -/en-US/docs/XSLT/include /en-US/docs/Web/XSLT/Element/include -/en-US/docs/XSLT/key /en-US/docs/Web/XSLT/Element/key -/en-US/docs/XSLT/message /en-US/docs/Web/XSLT/Element/message -/en-US/docs/XSLT/namespace-alias /en-US/docs/Web/XSLT/Element/namespace-alias -/en-US/docs/XSLT/number /en-US/docs/Web/XSLT/Element/number -/en-US/docs/XSLT/otherwise /en-US/docs/Web/XSLT/Element/otherwise -/en-US/docs/XSLT/output /en-US/docs/Web/XSLT/Element/output -/en-US/docs/XSLT/param /en-US/docs/Web/XSLT/Element/param -/en-US/docs/XSLT/preserve-space /en-US/docs/Web/XSLT/Element/preserve-space -/en-US/docs/XSLT/processing-instruction /en-US/docs/Web/XSLT/Element/processing-instruction +/en-US/docs/XSLT/apply-imports /en-US/docs/Web/XSLT/Reference/Element/apply-imports +/en-US/docs/XSLT/apply-templates /en-US/docs/Web/XSLT/Reference/Element/apply-templates +/en-US/docs/XSLT/attribute /en-US/docs/Web/XSLT/Reference/Element/attribute +/en-US/docs/XSLT/attribute-set /en-US/docs/Web/XSLT/Reference/Element/attribute-set +/en-US/docs/XSLT/call-template /en-US/docs/Web/XSLT/Reference/Element/call-template +/en-US/docs/XSLT/choose /en-US/docs/Web/XSLT/Reference/Element/choose +/en-US/docs/XSLT/comment /en-US/docs/Web/XSLT/Reference/Element/comment +/en-US/docs/XSLT/copy /en-US/docs/Web/XSLT/Reference/Element/copy +/en-US/docs/XSLT/copy-of /en-US/docs/Web/XSLT/Reference/Element/copy-of +/en-US/docs/XSLT/decimal-format /en-US/docs/Web/XSLT/Reference/Element/decimal-format +/en-US/docs/XSLT/element /en-US/docs/Web/XSLT/Reference/Element/element +/en-US/docs/XSLT/fallback /en-US/docs/Web/XSLT/Reference/Element/fallback +/en-US/docs/XSLT/for-each /en-US/docs/Web/XSLT/Reference/Element/for-each +/en-US/docs/XSLT/if /en-US/docs/Web/XSLT/Reference/Element/if +/en-US/docs/XSLT/import /en-US/docs/Web/XSLT/Reference/Element/import +/en-US/docs/XSLT/include /en-US/docs/Web/XSLT/Reference/Element/include +/en-US/docs/XSLT/key /en-US/docs/Web/XSLT/Reference/Element/key +/en-US/docs/XSLT/message /en-US/docs/Web/XSLT/Reference/Element/message +/en-US/docs/XSLT/namespace-alias /en-US/docs/Web/XSLT/Reference/Element/namespace-alias +/en-US/docs/XSLT/number /en-US/docs/Web/XSLT/Reference/Element/number +/en-US/docs/XSLT/otherwise /en-US/docs/Web/XSLT/Reference/Element/otherwise +/en-US/docs/XSLT/output /en-US/docs/Web/XSLT/Reference/Element/output +/en-US/docs/XSLT/param /en-US/docs/Web/XSLT/Reference/Element/param +/en-US/docs/XSLT/preserve-space /en-US/docs/Web/XSLT/Reference/Element/preserve-space +/en-US/docs/XSLT/processing-instruction /en-US/docs/Web/XSLT/Reference/Element/processing-instruction /en-US/docs/XSLT/regexp /en-US/docs/Web/EXSLT/regexp /en-US/docs/XSLT/regexp/match /en-US/docs/Web/EXSLT/regexp/match -/en-US/docs/XSLT/sort /en-US/docs/Web/XSLT/Element/sort -/en-US/docs/XSLT/strip-space /en-US/docs/Web/XSLT/Element/strip-space -/en-US/docs/XSLT/stylesheet /en-US/docs/Web/XSLT/Element/stylesheet -/en-US/docs/XSLT/template /en-US/docs/Web/XSLT/Element/template -/en-US/docs/XSLT/text /en-US/docs/Web/XSLT/Element/text -/en-US/docs/XSLT/transform /en-US/docs/Web/XSLT/Element/transform -/en-US/docs/XSLT/value-of /en-US/docs/Web/XSLT/Element/value-of -/en-US/docs/XSLT/variable /en-US/docs/Web/XSLT/Element/variable -/en-US/docs/XSLT/when /en-US/docs/Web/XSLT/Element/when -/en-US/docs/XSLT/with-param /en-US/docs/Web/XSLT/Element/with-param +/en-US/docs/XSLT/sort /en-US/docs/Web/XSLT/Reference/Element/sort +/en-US/docs/XSLT/strip-space /en-US/docs/Web/XSLT/Reference/Element/strip-space +/en-US/docs/XSLT/stylesheet /en-US/docs/Web/XSLT/Reference/Element/stylesheet +/en-US/docs/XSLT/template /en-US/docs/Web/XSLT/Reference/Element/template +/en-US/docs/XSLT/text /en-US/docs/Web/XSLT/Reference/Element/text +/en-US/docs/XSLT/transform /en-US/docs/Web/XSLT/Reference/Element/transform +/en-US/docs/XSLT/value-of /en-US/docs/Web/XSLT/Reference/Element/value-of +/en-US/docs/XSLT/variable /en-US/docs/Web/XSLT/Reference/Element/variable +/en-US/docs/XSLT/when /en-US/docs/Web/XSLT/Reference/Element/when +/en-US/docs/XSLT/with-param /en-US/docs/Web/XSLT/Reference/Element/with-param /en-US/docs/XSLT:EXSLT /en-US/docs/Web/EXSLT -/en-US/docs/XSLT:Elements /en-US/docs/Web/XSLT/Element -/en-US/docs/XSLT:PI_Parameters /en-US/docs/Web/XSLT/PI_Parameters -/en-US/docs/XSLT:apply-imports /en-US/docs/Web/XSLT/Element/apply-imports -/en-US/docs/XSLT:apply-templates /en-US/docs/Web/XSLT/Element/apply-templates -/en-US/docs/XSLT:attribute /en-US/docs/Web/XSLT/Element/attribute -/en-US/docs/XSLT:attribute-set /en-US/docs/Web/XSLT/Element/attribute-set -/en-US/docs/XSLT:call-template /en-US/docs/Web/XSLT/Element/call-template -/en-US/docs/XSLT:choose /en-US/docs/Web/XSLT/Element/choose -/en-US/docs/XSLT:comment /en-US/docs/Web/XSLT/Element/comment -/en-US/docs/XSLT:copy /en-US/docs/Web/XSLT/Element/copy -/en-US/docs/XSLT:copy-of /en-US/docs/Web/XSLT/Element/copy-of -/en-US/docs/XSLT:decimal-format /en-US/docs/Web/XSLT/Element/decimal-format -/en-US/docs/XSLT:element /en-US/docs/Web/XSLT/Element/element -/en-US/docs/XSLT:fallback /en-US/docs/Web/XSLT/Element/fallback -/en-US/docs/XSLT:for-each /en-US/docs/Web/XSLT/Element/for-each -/en-US/docs/XSLT:if /en-US/docs/Web/XSLT/Element/if -/en-US/docs/XSLT:import /en-US/docs/Web/XSLT/Element/import -/en-US/docs/XSLT:include /en-US/docs/Web/XSLT/Element/include -/en-US/docs/XSLT:key /en-US/docs/Web/XSLT/Element/key -/en-US/docs/XSLT:message /en-US/docs/Web/XSLT/Element/message -/en-US/docs/XSLT:namespace-alias /en-US/docs/Web/XSLT/Element/namespace-alias -/en-US/docs/XSLT:number /en-US/docs/Web/XSLT/Element/number -/en-US/docs/XSLT:otherwise /en-US/docs/Web/XSLT/Element/otherwise -/en-US/docs/XSLT:output /en-US/docs/Web/XSLT/Element/output -/en-US/docs/XSLT:param /en-US/docs/Web/XSLT/Element/param -/en-US/docs/XSLT:preserve-space /en-US/docs/Web/XSLT/Element/preserve-space -/en-US/docs/XSLT:processing-instruction /en-US/docs/Web/XSLT/Element/processing-instruction +/en-US/docs/XSLT:Elements /en-US/docs/Web/XSLT/Reference/Element +/en-US/docs/XSLT:PI_Parameters /en-US/docs/Web/XSLT/Guides/PI_Parameters +/en-US/docs/XSLT:apply-imports /en-US/docs/Web/XSLT/Reference/Element/apply-imports +/en-US/docs/XSLT:apply-templates /en-US/docs/Web/XSLT/Reference/Element/apply-templates +/en-US/docs/XSLT:attribute /en-US/docs/Web/XSLT/Reference/Element/attribute +/en-US/docs/XSLT:attribute-set /en-US/docs/Web/XSLT/Reference/Element/attribute-set +/en-US/docs/XSLT:call-template /en-US/docs/Web/XSLT/Reference/Element/call-template +/en-US/docs/XSLT:choose /en-US/docs/Web/XSLT/Reference/Element/choose +/en-US/docs/XSLT:comment /en-US/docs/Web/XSLT/Reference/Element/comment +/en-US/docs/XSLT:copy /en-US/docs/Web/XSLT/Reference/Element/copy +/en-US/docs/XSLT:copy-of /en-US/docs/Web/XSLT/Reference/Element/copy-of +/en-US/docs/XSLT:decimal-format /en-US/docs/Web/XSLT/Reference/Element/decimal-format +/en-US/docs/XSLT:element /en-US/docs/Web/XSLT/Reference/Element/element +/en-US/docs/XSLT:fallback /en-US/docs/Web/XSLT/Reference/Element/fallback +/en-US/docs/XSLT:for-each /en-US/docs/Web/XSLT/Reference/Element/for-each +/en-US/docs/XSLT:if /en-US/docs/Web/XSLT/Reference/Element/if +/en-US/docs/XSLT:import /en-US/docs/Web/XSLT/Reference/Element/import +/en-US/docs/XSLT:include /en-US/docs/Web/XSLT/Reference/Element/include +/en-US/docs/XSLT:key /en-US/docs/Web/XSLT/Reference/Element/key +/en-US/docs/XSLT:message /en-US/docs/Web/XSLT/Reference/Element/message +/en-US/docs/XSLT:namespace-alias /en-US/docs/Web/XSLT/Reference/Element/namespace-alias +/en-US/docs/XSLT:number /en-US/docs/Web/XSLT/Reference/Element/number +/en-US/docs/XSLT:otherwise /en-US/docs/Web/XSLT/Reference/Element/otherwise +/en-US/docs/XSLT:output /en-US/docs/Web/XSLT/Reference/Element/output +/en-US/docs/XSLT:param /en-US/docs/Web/XSLT/Reference/Element/param +/en-US/docs/XSLT:preserve-space /en-US/docs/Web/XSLT/Reference/Element/preserve-space +/en-US/docs/XSLT:processing-instruction /en-US/docs/Web/XSLT/Reference/Element/processing-instruction /en-US/docs/XSLT:regexp:match /en-US/docs/Web/EXSLT/regexp/match -/en-US/docs/XSLT:sort /en-US/docs/Web/XSLT/Element/sort -/en-US/docs/XSLT:strip-space /en-US/docs/Web/XSLT/Element/strip-space -/en-US/docs/XSLT:stylesheet /en-US/docs/Web/XSLT/Element/stylesheet -/en-US/docs/XSLT:template /en-US/docs/Web/XSLT/Element/template -/en-US/docs/XSLT:text /en-US/docs/Web/XSLT/Element/text -/en-US/docs/XSLT:transform /en-US/docs/Web/XSLT/Element/transform -/en-US/docs/XSLT:value-of /en-US/docs/Web/XSLT/Element/value-of -/en-US/docs/XSLT:variable /en-US/docs/Web/XSLT/Element/variable -/en-US/docs/XSLT:when /en-US/docs/Web/XSLT/Element/when -/en-US/docs/XSLT:with-param /en-US/docs/Web/XSLT/Element/with-param +/en-US/docs/XSLT:sort /en-US/docs/Web/XSLT/Reference/Element/sort +/en-US/docs/XSLT:strip-space /en-US/docs/Web/XSLT/Reference/Element/strip-space +/en-US/docs/XSLT:stylesheet /en-US/docs/Web/XSLT/Reference/Element/stylesheet +/en-US/docs/XSLT:template /en-US/docs/Web/XSLT/Reference/Element/template +/en-US/docs/XSLT:text /en-US/docs/Web/XSLT/Reference/Element/text +/en-US/docs/XSLT:transform /en-US/docs/Web/XSLT/Reference/Element/transform +/en-US/docs/XSLT:value-of /en-US/docs/Web/XSLT/Reference/Element/value-of +/en-US/docs/XSLT:variable /en-US/docs/Web/XSLT/Reference/Element/variable +/en-US/docs/XSLT:when /en-US/docs/Web/XSLT/Reference/Element/when +/en-US/docs/XSLT:with-param /en-US/docs/Web/XSLT/Reference/Element/with-param /en-US/docs/XSLTProcessor /en-US/docs/Web/API/XSLTProcessor /en-US/docs/XSLT_in_Gecko /en-US/docs/Web/API/XSLTProcessor /en-US/docs/XSLT_in_Gecko/Basic_Example /en-US/docs/Web/API/XSLTProcessor/Basic_Example @@ -13716,12 +14257,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 @@ -13735,7 +14276,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 @@ -13750,8 +14290,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 @@ -13793,8 +14333,8 @@ /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.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 @@ -13804,5 +14344,3 @@ /en-US/docs/window.window /en-US/docs/Web/API/Window/window /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 3b7f12aeee7ec23..4e5765f17d7a6af 100644 --- a/files/en-us/_wikihistory.json +++ b/files/en-us/_wikihistory.json @@ -1897,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": [ @@ -4507,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": [ @@ -5744,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", @@ -5860,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", @@ -5881,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", @@ -5917,7 +5807,7 @@ "unused" ] }, - "Learn/Accessibility/Mobile": { + "Learn_web_development/Core/Accessibility/Mobile": { "modified": "2020-12-10T09:45:31.215Z", "contributors": [ "chrisdavidmills", @@ -5933,7 +5823,7 @@ "qdirks" ] }, - "Learn/Accessibility/Multimedia": { + "Learn_web_development/Core/Accessibility/Multimedia": { "modified": "2020-12-03T08:05:47.296Z", "contributors": [ "chrisdavidmills", @@ -5950,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", @@ -5976,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", @@ -6004,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", @@ -6372,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", @@ -6399,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", @@ -6408,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", @@ -6440,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", @@ -6452,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", @@ -6467,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", @@ -6496,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", @@ -6524,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", @@ -6538,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", @@ -6547,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", @@ -6558,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", @@ -6571,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", @@ -6580,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", @@ -6612,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", @@ -6630,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", @@ -6641,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", @@ -6655,2381 +6210,1952 @@ "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/Challenges": { + "modified": "2019-08-29T20:48:33.765Z", + "contributors": [ + "Sebastianz", + "strael1", + "teoli", + "Jeremie", + "Sheppy", + "illourr", + "jswisher" + ] + }, + "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", + "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_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": [ - "onurbasturk", - "blueblots", - "gsorto", - "xp44mm", - "smilevideo", - "mbrasseau", "chrisdavidmills", - "rachelandrew", - "ExE-Boss", - "MyNameIsBond" + "harryghgim", + "terrymorse", + "valgrimm", + "nicolasguasca1", + "codeability", + "mgechev", + "jchimene" ] }, - "Learn/CSS/First_steps/How_CSS_is_structured": { - "modified": "2020-11-25T08:39:35.232Z", + "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": [ - "Seeeven7", - "mfuji09", - "gdsimoes", - "ohaver", - "impossibleshadow", - "theRealJennie", - "SnakeWhisperer", - "paul2ma", - "PatientLearner", - "vgiffin", - "bart5", - "jsargey", - "fischer", - "sardarisk", "chrisdavidmills", - "choudh70", - "mikemorr", - "xp44mm", - "mbrasseau", - "jlbuckner", - "rachelandrew", - "ExE-Boss" + "vgiffin", + "ndri", + "xfq", + "doncity-tech" ] }, - "Learn/CSS/First_steps/How_CSS_works": { - "modified": "2020-07-27T17:10:18.945Z", + "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": [ - "warleyfdias", - "choudh70", - "jlbuckner", - "rachelandrew", "chrisdavidmills", - "ExE-Boss" + "ramiZackaryShamir", + "spaceinvadev", + "mrmowji", + "codeability", + "bias-santa", + "franca" ] }, - "Learn/CSS/First_steps/Styling_a_biography_page": { - "modified": "2020-11-20T01:07:05.733Z", + "Learn_web_development/Core/Frameworks_libraries/React_interactivity_events_state": { + "modified": "2020-09-01T07:11:30.226Z", "contributors": [ - "schalkneethling", - "hakantr", - "salutis", "chrisdavidmills", - "rachelandrew" + "ndri", + "nicolasguasca1", + "mrmowji", + "alperars" ] }, - "Learn/CSS/First_steps/What_is_CSS": { - "modified": "2020-11-20T01:04:49.095Z", + "Learn_web_development/Core/Frameworks_libraries/React_interactivity_filtering_conditional_rendering": { + "modified": "2020-09-28T06:18:04.788Z", "contributors": [ - "schalkneethling", "chrisdavidmills", - "jlbuckner", - "rachelandrew", - "ExE-Boss", - "MyNameIsBond" + "dl90", + "terrymorse", + "Rafael_Green", + "mrmowji" ] }, - "Learn/CSS/Howto": { - "modified": "2020-07-16T22:25:41.103Z", + "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": [ - "Coink", + "haond10adp", "SphinxKnight", - "dforceacademy", - "prayagch", + "Rafael_Green", "chrisdavidmills", - "kruschk", - "david_ross", - "Jedipedia", - "yuj25", - "Onkar316", - "adebiyial", - "hbloomer", - "Jeremie" + "opensas" ] }, - "Learn/CSS/Howto/CSS_FAQ": { - "modified": "2020-07-16T22:25:44.490Z", + "Learn_web_development/Core/Frameworks_libraries/Svelte_stores": { + "modified": "2020-12-11T07:44:13.494Z", "contributors": [ - "SphinxKnight", - "sarlington", - "stephaniehobson", - "Sheppy", - "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" + "Mishra-Suraj", + "haond10adp", + "Rafael_Green", + "chrisdavidmills" ] }, - "Learn/CSS/Howto/Generated_content": { - "modified": "2020-07-16T22:25:46.676Z", + "Learn_web_development/Core/Frameworks_libraries/Svelte_variables_props": { + "modified": "2020-10-20T01:35:26.842Z", + "contributors": ["haond10adp", "Rafael_Green", "chrisdavidmills"] + }, + "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", - "clairealyssa", - "wbamberg", - "tirein", - "yancarq", - "mrlagerwey", - "kan199041", - "mfluehr", - "luketeaford", - "floEdelmann", - "jeansouz4", - "veryrandomname", + "kruschk", + "Andriy-K", + "adnankammes", + "SphinxKnight", + "billaparker", + "Elllenn", + "dartvaneri", + "kunleris", + "gotoark", "Jeremie", - "kscarfone", - "stephen", - "trevorh", - "teoli", - "Sheppy", - "jswisher", - "Mgjbot", - "Leandro Mercês Xavier", - "Verruckt", - "BenoitL", - "Rod Whiteley", - "gandalf", - "Nickolay" + "Sheppy" ] }, - "Learn/CSS/Howto/create_fancy_boxes": { - "modified": "2020-07-16T22:25:49.147Z", - "contributors": ["hbloomer", "Jeremie"] - }, - "Learn/CSS/Styling_text": { - "modified": "2020-07-16T22:25:57.072Z", + "Learn_web_development/Core/Scripting/A_first_splash": { + "modified": "2020-12-05T16:30:27.992Z", "contributors": [ + "mfuji09", "chrisdavidmills", - "cartwr40", - "mozdevcontrib", - "wilton-cruz", - "pranay2063", - "Didglee", - "richardzacur", - "rolfedh" + "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" ] }, - "Learn/CSS/Styling_text/Fundamentals": { - "modified": "2020-12-01T06:10:24.965Z", + "Learn_web_development/Core/Scripting/Arrays": { + "modified": "2020-07-16T22:30:52.384Z", "contributors": [ "chrisdavidmills", - "salutis", "choudh70", "tayyabalishan", - "xp44mm", - "pei-han", - "UnorthodoxThing", - "PanayiotisPaschalides", - "koralcem", + "jswisher", + "denise_", + "Majek", + "keshav1245", + "mfuji09", + "dq82elo", + "TasosPoursaitides", + "johnnyvalles", + "pbbob1", + "bripmccann", "stephaniehobson", - "wilton-cruz", - "Sheppy", - "TimSongCoder", + "AnnaCheba", "qdirks", - "PyroLagus", - "richardzacur", - "plug-n-play" + "hadleyel", + "RobWheadon", + "faroukcharkas", + "sushobhana", + "cloverharvest", + "nmve", + "TimHandy", + "PawelRokosz", + "Jeremie", + "BaderSur", + "Sebastianz", + "BenCrab", + "fscholz" ] }, - "Learn/CSS/Styling_text/Styling_links": { - "modified": "2020-11-03T06:47:30.595Z", + "Learn_web_development/Core/Scripting/Build_your_own_function": { + "modified": "2020-07-16T22:31:28.317Z", "contributors": [ - "tremby", - "gerfolder", + "A.Faturechi", "chrisdavidmills", - "vgiffin", - "tayyabalishan", - "hackernewslibrary", - "angel-luis", + "mariusmucenicu", + "docrob0t", + "sambgordon", + "thenoelman", + "wazz", + "kan199041", "stephaniehobson", - "TimSongCoder", - "multics", - "qdirks", - "dsujeeun", - "waldr", - "PyroLagus", - "mkamalkayani", - "richardzacur" + "FishinginaSombrero8", + "cPlayIt", + "nmve", + "rteliczan", + "Jeremie" ] }, - "Learn/CSS/Styling_text/Styling_lists": { - "modified": "2020-07-16T22:26:10.863Z", + "Learn_web_development/Core/Scripting/Conditionals": { + "modified": "2020-07-16T22:31:11.893Z", "contributors": [ - "avivmu", - "haond10adp", "chrisdavidmills", - "massood", - "ntutangyun", - "irenesmith", + "choudh70", + "tayyabalishan", + "jswisher", + "keshav1245", "RafeyIqbalRahman", - "thenoelman", - "juandesouza", - "angel-luis", + "Czl.Lebleu", + "smccrindle", + "OxyDesign", "stephaniehobson", - "pbarun", - "jruota", - "anthonyvallee", - "richardzacur" + "qdirks", + "drozycki", + "BrunkBeard", + "akshayjumbade", + "nmve", + "Rohit25negi", + "Jeremie", + "Cameron-Riecan", + "husain100b", + "fscholz", + "Sebastianz" ] }, - "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/DOM_scripting": { + "modified": "2020-08-23T02:38:31.029Z", "contributors": [ + "wlt", + "herrieii", "chrisdavidmills", - "mostlybytes", - "tayyabalishan", - "choudh70", "kruschk", - "darman12", - "legostud", - "msobanjo", - "edprince", - "aboagyed", - "oyenirat", + "HARARCA", + "Aternus", + "ajhsu", + "jlafica", + "sourav2706", + "francescm", + "jwq1", "stephaniehobson", - "JonathanPool", - "mfluehr", - "potmpark", - "qdirks", - "pmontegna", - "PyroLagus", - "richardzacur" + "Bogdan.G", + "JideLambo", + "lybrendan", + "mientje" ] }, - "Learn/Common_questions": { - "modified": "2020-07-16T22:35:20.908Z", + "Learn_web_development/Core/Scripting/Debugging_JavaScript": { + "modified": "2020-11-23T02:24:03.962Z", "contributors": [ + "hamishwillee", + "chrisdavidmills", + "ckashby", "kruschk", - "romanjamesmirov", "stephaniehobson", - "JeffD", - "chrisdavidmills", - "rudolfo", - "Mori" + "EdwardB", + "qdirks", + "Juggernaughtt" ] }, - "Learn/Common_questions/Design_and_accessibility/Common_web_layouts": { - "modified": "2020-07-16T22:35:42.190Z", + "Learn_web_development/Core/Scripting/Events": { + "modified": "2020-08-19T17:34:16.897Z", "contributors": [ + "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", - "Sheppy", - "Kathrincolyn", - "Andrew_Pfeiffer", - "mehmetaergun", - "anistark", - "rhyne24" + "BaderSur", + "sngv" ] }, - "Learn/Common_questions/Design_and_accessibility/Design_for_all_types_of_users": { - "modified": "2020-07-16T22:35:50.650Z", + "Learn_web_development/Core/Scripting/Functions": { + "modified": "2020-09-29T10:01:24.142Z", "contributors": [ - "MelchiorIm3Tal", + "bhushangoel", + "JohnnyMu-Cn", "chrisdavidmills", - "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", - "notabene" + "Cameron-Riecan", + "husain100b", + "fscholz" ] }, - "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/Image_gallery": { + "modified": "2020-07-31T18:38:47.870Z", "contributors": [ - "maishakins", - "jamesdhurd", + "Rafael_Green", "chrisdavidmills", - "surigangula", - "SphinxKnight", - "Jeremie", - "Andrew_Pfeiffer", - "teoli" + "jswisher", + "csarami", + "jxhdev", + "jyjz2008", + "Jeremie" ] }, - "Learn/Common_questions/Design_and_accessibility/What_is_accessibility": { - "modified": "2020-07-16T22:35:46.668Z", + "Learn_web_development/Core/Scripting/JSON": { + "modified": "2020-10-31T11:57:03.706Z", "contributors": [ + "randycasburn", "chrisdavidmills", + "jswisher", + "mariusmucenicu", + "thebearingedge", + "bripmccann", + "shilili", + "thekosiguy", + "TasosPoursaitides", + "dvsgnr", + "stephaniehobson", + "torazaburo", + "DipperP", + "qdirks", + "systematis", + "mememachine666", + "nmve", "Jeremie", - "Andrew_Pfeiffer", - "notabene" + "fscholz" ] }, - "Learn/Common_questions/Tools_and_setup/Available_text_editors": { - "modified": "2020-09-11T09:55:13.639Z", + "Learn_web_development/Core/Scripting/Loops": { + "modified": "2020-09-15T14:47:05.302Z", "contributors": [ - "callpri", - "GCCSheep", - "blueblots", - "iigmir", - "rashmimalpande", - "chrisdavidmills", - "funnyChinese", + "theRealJennie", "SphinxKnight", - "Jeremie", - "Andrew_Pfeiffer", - "fmarier" - ] - }, - "Learn/Common_questions/Tools_and_setup/Checking_that_your_web_site_is_working_properly": { - "modified": "2020-07-16T22:35:49.891Z", - "contributors": [ + "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" + "fscholz" ] }, - "Learn/Common_questions/Tools_and_setup/set_up_a_local_testing_server": { - "modified": "2020-07-16T22:35:52.628Z", + "Learn_web_development/Core/Scripting/Silly_story_generator": { + "modified": "2020-07-16T22:30:59.670Z", "contributors": [ + "neuroptera", "chrisdavidmills", - "bhushan_mdn", - "Aviatorpaal", - "yunchispk", - "ckashby", - "diegoza", - "rax02", - "mmhyamin", - "pascalchevrel", - "RealTheOne", - "zixuan75", - "suterj", - "jaikathuria", - "jgathogo", - "Mateen" + "nsangwan", + "rendner", + "csarami", + "2alin", + "jswisher", + "ctroupin", + "keshavmahajan", + "pranay2063", + "MrMaxMeranda", + "Jeremie" ] }, - "Learn/Common_questions/Web_mechanics/How_does_the_Internet_work": { - "modified": "2020-07-16T22:35:35.495Z", + "Learn_web_development/Core/Scripting/Strings": { + "modified": "2020-07-16T22:30:38.291Z", "contributors": [ - "MSabry809", + "chinmaykunkikar", "chrisdavidmills", - "codewilling", - "1653099", - "imba-tjd", - "SphinxKnight", - "Tan_", - "kjerinic", - "alattalatta", - "wattydev", - "diogeneshamilton", + "tayyabalishan", + "kruschk", + "jswisher", + "alepsys", + "eremis101", + "gerganzh", + "grumBit", + "RafeyIqbalRahman", + "sahilwasan000", + "hello-ajayrawat", + "bripmccann", + "rileym7", + "stephaniehobson", + "hadleyel", + "shoelaces", "Jeremie", - "Andrew_Pfeiffer", - "kscarfone" + "Sebastianz", + "fscholz" ] }, - "Learn/Common_questions/Web_mechanics/Pages_sites_servers_and_search_engines": { - "modified": "2020-07-16T22:35:39.329Z", + "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": [ - "lghiggino", - "mfuji09", - "mammothb", - "Nucleomante", - "Patricio_Raschetti", "chrisdavidmills", - "Gitthuma", - "bminard", - "haiku11000", - "agnelvishal", - "Gordon-Bleu", + "jpfkd", + "epirnat", + "A.Faturechi", + "choudh70", + "tayyabalishan", "jswisher", - "AVRILALEJANDRO", - "vikhyat", - "ladyNinja86", - "dagolinuxoid", - "Sheppy", - "xfq", + "alepsys", + "Asimov4", + "v8sagar", + "bkucey", + "bripmccann", + "stephaniehobson", + "hadleyel", + "RobWheadon", + "sushobhana", + "nmve", + "brenseid", "Jeremie", - "Andrew_Pfeiffer" + "BaderSur", + "sngv", + "Sebastianz", + "BenCrab", + "fscholz" ] }, - "Learn/Common_questions/Web_mechanics/What_are_hyperlinks": { - "modified": "2020-07-16T22:35:42.757Z", + "Learn_web_development/Core/Scripting/Variables": { + "modified": "2020-09-28T12:52:31.401Z", "contributors": [ - "Patricio_Raschetti", - "maishakins", + "mohammad92asghari", "chrisdavidmills", - "vicvarfon", - "bhanubais", - "hoosteeno", - "samlaf", + "Nachec", + "choudh70", + "tayyabalishan", + "jswisher", + "JawnMarc", + "inikolaesku", + "cinephile85", + "alepsys", + "SphinxKnight", + "blimp", + "msobanjo", + "TasosPoursaitides", + "RafeyIqbalRahman", + "aswaniprakash", + "felipe-lee", + "sxnaprkhr", + "alexandr-osprey", + "Uemmra3", + "martian2049", + "bripmccann", + "jruota", + "stephaniehobson", + "rmdobservations", + "shoelaces", + "stockcj", "Jeremie", - "jsx", - "ronakkhunt", - "Andrew_Pfeiffer", - "teoli", - "tseamans" + "razouckt", + "Sebastianz", + "Sheppy", + "salman-shah" ] }, - "Learn/Common_questions/Web_mechanics/What_is_a_URL": { - "modified": "2020-07-16T22:35:28.894Z", + "Learn_web_development/Core/Scripting/What_is_JavaScript": { + "modified": "2020-12-05T16:30:59.604Z", "contributors": [ - "chrisdavidmills", "mfuji09", - "DallasBelt", + "dcompcoder", + "jpfkd", + "rajatsan", + "chrisdavidmills", + "ibnlanre", + "ckashby", + "tayyabalishan", + "JawnMarc", + "inikolaesku", "Sheppy", - "tsaddique389", - "AbidRiaz", - "SphinxKnight", - "yzfdjzwl", - "bhanubais", + "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", - "jsx", - "ronakkhunt", - "Andrew_Pfeiffer", - "amygori", - "teoli" + "ObroAhmed", + "hamishwillee", + "Sebastianz" ] }, - "Learn/Common_questions/Web_mechanics/What_is_a_domain_name": { - "modified": "2020-12-11T01:30:52.383Z", + "Learn_web_development/Core/Scripting/What_went_wrong": { + "modified": "2020-09-04T06:06:17.140Z", "contributors": [ - "darby", - "ronal.candia11", - "ezzep66", - "NateEag", "chrisdavidmills", - "amitananddotxyz", - "jsx", - "gavenkoa", - "elcamlost", - "davidwhy", - "SphinxKnight", + "jswisher", + "manideep39", + "tayyabalishan", + "inikolaesku", + "Alek2077", + "wbreakell", + "redrambles", + "bripmccann", + "MiaD", + "stephaniehobson", + "kewinsousa", + "hadleyel", + "nmaksymchuk", + "Tony-Thomas", + "rsidorov", + "stockcj", + "niklasholm", + "nmve", + "DeboraG", + "BrianCsection", "Jeremie", - "ronakkhunt", - "Andrew_Pfeiffer", - "notabene" + "Sebastianz" ] }, - "Learn/Common_questions/Web_mechanics/What_is_a_web_server": { - "modified": "2020-11-21T18:13:05.008Z", + "Learn_web_development/Core/Structuring_content": { + "modified": "2020-12-03T08:31:03.862Z", "contributors": [ - "Havardox", - "ohaver", - "hussamkhatib", - "gbui", - "mfuji09", - "fiver22", "chrisdavidmills", - "ashishcodes", - "surigangula", - "xclusivesaurav", - "iigmir", - "ggarrickk", - "StarkBjorn", - "thanhvk", - "hierror", - "Jeremie", - "Andrew_Pfeiffer", - "sboroda", - "klez" + "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" ] }, - "Learn/Forms": { - "modified": "2020-09-07T06:45:29.152Z", + "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", - "ShubhamShukla", + "tayyabalishan", + "choudh70", "SphinxKnight", - "iwo12", - "wbamberg", - "estelle", - "Jeffrey_Yang", + "famees", + "markwood87", + "Yachi_Huang", + "Jesssie", + "imi-tating", + "suterj", + "stephaniehobson", + "Nintendao", + "agnelvishal", + "rarevans", + "vkweb", "wilhelmtell", - "Porkepix", - "ttamminen", - "ajayashuba", - "Bandaged", - "Markus Prokott", - "sjmiles", - "ishita", - "Fredchat", - "sailplaneTW", - "SteveFaulkner", - "kscarfone", - "Sheppy", - "teoli", - "haboqueferus", - "Jeremie" + "flash4syth", + "GowthamPrakaash", + "Wispring", + "CatalinMengheris", + "waldr", + "robinfromsps", + "AmazingJamesLee", + "goto.prototype", + "amins", + "richardzacur" ] }, - "Learn/Forms/Advanced_form_styling": { - "modified": "2020-12-09T16:39:42.715Z", + "Learn_web_development/Core/Structuring_content/Basic_HTML_syntax": { + "modified": "2020-12-05T12:24:44.561Z", "contributors": [ + "Seeeven7", "chrisdavidmills", - "rpxs", - "edchasw", - "Uemmra3", - "Lisadot", - "A.Faturechi", - "sjud", - "estelle", - "Aubrays", - "Tigt", - "ferrysdayoff", - "missmatsuko", - "soonoo", - "coderjerk", + "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", - "david_ross", - "toraritte", - "samford", - "Jeremie", - "kscarfone", - "teoli", - "FredB", - "notabene", - "Brettz9", - "Sheppy" + "agnelvishal", + "MiltonAkash", + "KadirTopal", + "ameridan", + "mondaya", + "wilhelmtell", + "hadleyel", + "psylone", + "jorgeclesio", + "abdusalah", + "Bryzzle", + "Cameron-Riecan", + "jswisher", + "KevinDonnelly", + "richardzacur", + "mauney" ] }, - "Learn/Forms/Basic_native_form_controls": { - "modified": "2020-10-25T00:26:19.500Z", + "Learn_web_development/Core/Structuring_content/Creating_links": { + "modified": "2020-12-02T15:56:05.660Z", "contributors": [ - "Harold-Gao", - "amikalperkins", "chrisdavidmills", - "A.Faturechi", - "estelle", + "asad_mozilla", + "codejayant", + "gdsimoes", + "techdocswriter", + "josh.591536", + "onurbasturk", "sideshowbarker", - "zubaer54", - "tayyabalishan", + "deepaksenguttuvan", + "santimirandarp", "choudh70", - "cybmdm", - "amIsmael", - "853419196", - "Sheppy", - "Ko.Kyaw.Zin.Htet", - "Tigt", - "juandesouza", + "Elched", + "eremis101", + "noorfathima11", + "MNizam0802", + "Jozefi87", + "mfuji09", + "mbuc", + "DrewGeisler", "stephaniehobson", - "Jeffrey_Yang", - "toraritte", - "Ajedi32", - "Jeremie", - "aksht", - "kscarfone", - "lemgrb" + "bgrayland", + "Hiroshivam", + "vkweb", + "potmpark", + "scottaohara", + "svmartin", + "rebelstatus", + "NurudeenPopoola", + "richardzacur" ] }, - "Learn/Forms/Form_validation": { - "modified": "2020-12-12T20:31:48.908Z", + "Learn_web_development/Core/Structuring_content/Debugging_HTML": { + "modified": "2020-08-09T17:31:16.592Z", "contributors": [ - "bershanskiy", - "scottBowles", + "anewton", + "avivmu", "chrisdavidmills", - "tbolt", - "A.Faturechi", - "Halochkin", - "83C10", - "NikolayPe", - "Brettz9", - "SphinxKnight", - "kyonlee", - "estelle", "tayyabalishan", - "choudh70", - "perfmattersconf", - "SabineEmden", - "lbraun", - "ychouloute", - "alacritas", - "metamas", - "escattone", - "richajak", - "sidd", - "RachelM", - "jpaugh", - "shilili", - "agrimarcal", - "Sal56", - "jswisher", - "Marvinside", - "libmw", - "mfuji09", - "RafeyIqbalRahman", - "mnoorenberghe", - "futureworktechno", - "futuretechnologies01", "sideshowbarker", - "FutureWork08", - "thenoelman", - "csarami", - "mmeinzer", - "tjmcewan", - "chafic", - "zsogolow", - "zorrobei", - "BryanL", - "Sajag", + "frezier", "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" + "stefanocbl", + "johnjago", + "mustak", + "breno785au", + "richardzacur", + "sockofleas" ] }, - "Learn/Forms/HTML5_input_types": { - "modified": "2020-10-04T09:16:43.234Z", + "Learn_web_development/Core/Structuring_content/General_embedding_technologies": { + "modified": "2020-10-19T05:59:20.512Z", "contributors": [ - "JennyDC", - "amikalperkins", "chrisdavidmills", - "arjenlgill", - "blueblots", - "panpy-web", - "A.Faturechi", - "joyjade", - "estelle", - "kyonlee", - "zubaer54", - "Zearin_Galaurum" + "gdsimoes", + "Sichen-Wang", + "TheMageKing", + "choudh70", + "Elched", + "darby", + "eremis101", + "Wind1808", + "RafeyIqbalRahman", + "Jesssie", + "pradeeprajr93", + "juandesouza", + "stephaniehobson", + "NilSocket", + "flash4syth", + "BaderSur", + "richardzacur" ] }, - "Learn/Forms/HTML_forms_in_legacy_browsers": { - "modified": "2020-07-16T22:22:02.938Z", + "Learn_web_development/Core/Structuring_content/HTML_images": { + "modified": "2020-11-06T07:13:32.741Z", "contributors": [ "chrisdavidmills", - "estelle", - "ferrysdayoff", - "soonoo", - "stephaniehobson", - "nunu10000", - "Jeremie", - "kscarfone", - "teoli", + "philou", + "atd30", + "abbasalamin12", + "RicardsVeveris", + "choudh70", + "LeonFrempong", + "Mahdi_Karimi_Asl", + "sudipbhandari126", "Sheppy", - "jswisher" + "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": { - "modified": "2020-09-17T01:08:40.244Z", + "Learn_web_development/Core/Structuring_content/HTML_images/Test_your_skills:_HTML_images": { + "modified": "2020-10-18T19:47:17.929Z", + "contributors": ["gdsimoes", "chrisdavidmills"] + }, + "Learn_web_development/Core/Structuring_content/HTML_table_basics": { + "modified": "2020-07-16T22:25:17.858Z", "contributors": [ - "ralaplines1988", - "prosciutto1", - "vgiffin", - "JoshApos", + "avivmu", "chrisdavidmills", - "estelle", - "trieudh58", - "lonelywhisper", - "yiosh", - "stephaniehobson", - "jhggins", - "meshulam", + "radiocane", + "Sichen-Wang", + "choudh70", + "tayyabalishan", + "santiago-rodrig", + "Octopinky", + "ratbeard", + "irenesmith", "Sheppy", - "Jeremie", - "kscarfone", - "notabene", - "BYK" + "nrebhun", + "surigangula", + "stephaniehobson", + "yanlee26", + "qdirks", + "Sebastianz", + "mientje" ] }, - "Learn/Forms/How_to_build_custom_form_controls/Example_1": { - "modified": "2020-07-16T22:21:58.881Z", + "Learn_web_development/Core/Structuring_content/HTML_video_and_audio": { + "modified": "2020-11-20T14:06:53.297Z", "contributors": [ + "philou", "chrisdavidmills", - "estelle", - "kscarfone", - "ethertank", + "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_2": { - "modified": "2020-07-16T22:21:59.274Z", - "contributors": ["chrisdavidmills", "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_build_custom_form_controls/Example_3": { - "modified": "2020-07-16T22:21:59.617Z", + "Learn_web_development/Core/Structuring_content/Headings_and_paragraphs": { + "modified": "2020-10-29T23:24:18.960Z", "contributors": [ + "philou", "chrisdavidmills", - "estelle", - "Sheppy", - "Jeremie", - "lmorchard" + "theRealJennie", + "trebuchet", + "emckean", + "onurbasturk", + "choudh70", + "cadorej", + "WindLo", + "eremis101", + "xubres", + "bminard", + "Chomchaum", + "quixx", + "Manisha0605", + "WikiMarc", + "stephaniehobson", + "cknapp92", + "mientje", + "Wispring", + "sideshowbarker", + "phorgan1", + "abdusalah", + "NurudeenPopoola", + "monooran1", + "PushpitaPikuDey", + "rolfedh" ] }, - "Learn/Forms/How_to_build_custom_form_controls/Example_4": { - "modified": "2020-07-16T22:21:59.939Z", + "Learn_web_development/Core/Structuring_content/Including_vector_graphics_in_HTML": { + "modified": "2020-10-19T00:06:33.919Z", "contributors": [ + "gdsimoes", + "ralaplines1988", + "dd-pardal", "chrisdavidmills", - "estelle", - "abt8601", - "Sheppy", - "Jeremie" + "choudh70", + "tayyabalishan", + "Zectbumo", + "danialtaherifar", + "imba-tjd", + "mfuji09", + "bdeloeste", + "deacon", + "agnelvishal", + "stephaniehobson", + "potmpark", + "richardzacur", + "Andrew_Pfeiffer", + "hbloomer" ] }, - "Learn/Forms/How_to_build_custom_form_controls/Example_5": { - "modified": "2020-07-16T22:22:00.262Z", - "contributors": ["chrisdavidmills", "estelle", "Sheppy", "Jeremie"] - }, - "Learn/Forms/How_to_structure_a_web_form": { - "modified": "2020-07-16T22:21:09.116Z", + "Learn_web_development/Core/Structuring_content/Marking_up_a_letter": { + "modified": "2020-07-16T22:23:10.729Z", "contributors": [ "chrisdavidmills", - "A.Faturechi", - "andrewbluepiano", - "estelle", - "perfmattersconf", - "RicardsVeveris", + "avivmu", + "ohaver", "tayyabalishan", - "willi-berger", - "groprog", - "UnorthodoxThing", - "richajak", - "Sal56", - "Devendra0110", "sideshowbarker", - "Milind-Gawande", - "surigangula", - "Pav_ka", - "sgnl", - "BunnyWong", - "jaredef", - "Tunisiano32", - "stephaniehobson", - "tyreer", - "tedmetaltns", - "davidalejandro", - "Lehakos", - "brandonrodriguez", - "mientje", - "JonathanLake", - "freekngdom", - "ivaturi", - "rolfedh", - "PushpitaPikuDey", - "marcos-abreu", - "Qombella", - "susanBuck", - "Sheppy", - "rylan", - "andrew-luhring", - "LayZeeDK", - "xfq", - "Jeremie", - "Serenity", - "kscarfone", - "FredB", - "notabene" + "r_arpeet82", + "fazl", + "soppa91", + "bripmccann", + "jswisher", + "jk777", + "mishkadoma" ] }, - "Learn/Forms/How_to_structure_a_web_form/Example": { - "modified": "2020-07-16T22:21:16.974Z", - "contributors": ["chrisdavidmills", "rashmimalpande", "Sheppy", "Jeremie"] - }, - "Learn/Forms/Other_form_controls": { - "modified": "2020-07-16T22:22:07.520Z", + "Learn_web_development/Core/Structuring_content/Mozilla_splash_page": { + "modified": "2020-07-16T22:25:05.240Z", "contributors": [ "chrisdavidmills", - "riturajshakti", - "A.Faturechi", - "w13rdo", - "estelle" + "FoxDie12x", + "MNizam0802", + "jswisher", + "goto.prototype", + "richardzacur" ] }, - "Learn/Forms/Property_compatibility_table_for_form_controls": { - "modified": "2020-07-16T22:21:38.501Z", + "Learn_web_development/Core/Structuring_content/Planet_data_table": { + "modified": "2020-07-16T22:25:28.525Z", "contributors": [ - "jasjenand", "chrisdavidmills", - "estelle", - "kruschk", - "Dralyab", - "stephaniehobson", - "mfluehr", - "Jeremie", - "kscarfone", - "james_oh", - "Sheppy" + "tayyabalishan", + "jswisher", + "Sebastianz" ] }, - "Learn/Forms/Sending_and_retrieving_form_data": { - "modified": "2020-09-13T14:02:27.104Z", + "Learn_web_development/Core/Structuring_content/Structuring_a_page_of_content": { + "modified": "2020-07-16T22:24:17.251Z", "contributors": [ + "yolo.kimc", "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" + "markwood87", + "jswisher", + "diveshuttam", + "SoftwareRVG", + "richardzacur" ] }, - "Learn/Forms/Sending_forms_through_JavaScript": { - "modified": "2020-07-21T05:40:07.618Z", + "Learn_web_development/Core/Structuring_content/Structuring_documents": { + "modified": "2020-11-03T08:36:09.820Z", "contributors": [ "chrisdavidmills", - "aelliott1485", - "estelle", - "tayyabalishan", + "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", - "richardzacur" - ] - }, - "Learn/HTML/Multimedia_and_embedding/Adding_vector_graphics_to_the_Web": { - "modified": "2020-10-19T00:06:33.919Z", - "contributors": [ - "gdsimoes", - "ralaplines1988", - "dd-pardal", - "chrisdavidmills", - "choudh70", - "tayyabalishan", - "Zectbumo", - "danialtaherifar", - "imba-tjd", - "mfuji09", - "bdeloeste", - "deacon", - "agnelvishal", "stephaniehobson", + "JonathanPool", + "mfluehr", "potmpark", - "richardzacur", - "Andrew_Pfeiffer", - "hbloomer" + "qdirks", + "pmontegna", + "PyroLagus", + "richardzacur" ] }, - "Learn/HTML/Multimedia_and_embedding/Images_in_HTML": { - "modified": "2020-11-06T07:13:32.741Z", + "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": [ + "owdown", "chrisdavidmills", - "philou", - "atd30", - "abbasalamin12", - "RicardsVeveris", - "choudh70", - "LeonFrempong", - "Mahdi_Karimi_Asl", - "sudipbhandari126", - "Sheppy", - "cinephile85", - "eremis101", - "MNizam0802", - "oyenirat", - "adyavanapalli", + "CodeDotJS", "bripmccann", - "sideshowbarker", - "Ajimi", - "stephaniehobson", - "Potch", - "andrealaw", - "tedmetaltns", - "david_ross", - "Looserof7", - "jamalss", - "mishkadoma", - "jswisher", - "rishianand", - "richardzacur" + "shi_zi_", + "Ch0coL8te", + "omeid", + "torazaburo", + "MashKao", + "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/Adding_bouncing_balls_features": { + "modified": "2020-10-28T23:14:36.083Z", "contributors": [ + "krankj", "chrisdavidmills", - "FoxDie12x", - "MNizam0802", "jswisher", - "goto.prototype", - "richardzacur" + "wwags33", + "rmdobservations", + "edsonmendieta", + "nmve", + "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_building_practice": { + "modified": "2020-07-16T22:32:30.497Z", "contributors": [ "chrisdavidmills", - "gdsimoes", - "Sichen-Wang", - "TheMageKing", - "choudh70", - "Elched", - "darby", - "eremis101", - "Wind1808", - "RafeyIqbalRahman", - "Jesssie", - "pradeeprajr93", - "juandesouza", + "jswisher", + "IamLegendChamp", + "rohitarondekar", "stephaniehobson", - "NilSocket", - "flash4syth", + "qdirks", + "RobWheadon", + "khamer1410", + "edsonmendieta", + "crueschenberg", + "nmve", + "wetlife", "BaderSur", - "richardzacur" - ] - }, - "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" + "fscholz" ] }, - "Learn/HTML/Multimedia_and_embedding/Video_and_audio_content": { - "modified": "2020-11-20T14:06:53.297Z", + "Learn_web_development/Extensions/Advanced_JavaScript_objects/Object_prototypes": { + "modified": "2020-11-29T09:12:53.165Z", "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", + "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", - "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", + "iAziz786", + "lfzy", + "systematis", + "tcsc", + "giorgiobeggiora", + "zziccardi", + "rht19932", + "crueschenberg", + "sportnak", + "nmve", + "BrunkBeard", "Jeremie", - "Sebastianz", - "bbstudio03", - "atymchuk", - "Andrew_Pfeiffer", - "fscholz" + "fscholz", + "ZeroUnderscoreOu" ] }, - "Learn/JavaScript/Asynchronous": { + "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", @@ -9039,7 +8165,7 @@ "AllenChong" ] }, - "Learn/JavaScript/Asynchronous/Introducing": { + "Learn_web_development/Extensions/Async_JS/Introducing": { "modified": "2020-11-05T06:58:50.627Z", "contributors": [ "chrisdavidmills", @@ -9056,7 +8182,7 @@ "Sheppy" ] }, - "Learn/JavaScript/Asynchronous/Promises": { + "Learn_web_development/Extensions/Async_JS/Promises": { "modified": "2020-09-22T14:49:51.114Z", "contributors": [ "jswisher", @@ -9073,229 +8199,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", @@ -9308,7 +8212,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", @@ -9328,7 +8232,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", @@ -9345,32 +8249,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", @@ -9399,28 +8278,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", @@ -9441,7 +8299,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", @@ -9459,538 +8317,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", - "stephaniehobson", - "AnnaCheba", - "qdirks", - "hadleyel", - "RobWheadon", - "faroukcharkas", - "sushobhana", - "cloverharvest", - "nmve", - "TimHandy", - "PawelRokosz", - "Jeremie", - "BaderSur", - "Sebastianz", - "BenCrab", - "fscholz" - ] - }, - "Learn/JavaScript/First_steps/Math": { - "modified": "2020-07-16T22:30:23.656Z", - "contributors": [ - "mrmowji", - "asavageiv", - "A.Faturechi", - "chrisdavidmills", - "choudh70", - "tayyabalishan", - "kruschk", - "jswisher", - "cinephile85", - "amitch38", - "alepsys", - "vitaliyterziev", - "caraya", + "rpxs", + "edchasw", "Uemmra3", - "bripmccann", - "dlwagner", + "Lisadot", + "A.Faturechi", + "sjud", + "estelle", + "Aubrays", + "Tigt", + "ferrysdayoff", + "missmatsuko", + "soonoo", + "coderjerk", "stephaniehobson", - "Saabbir", - "gabiaad", - "BadTudou", - "hadleyel", - "FIJN", - "hungvt0301", - "vatz88", - "kiley0", - "nmve", - "brendenseidel", + "david_ross", + "toraritte", + "samford", "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" + "kscarfone", + "teoli", + "FredB", + "notabene", + "Brettz9", + "Sheppy" ] }, - "Learn/JavaScript/First_steps/Strings": { - "modified": "2020-07-16T22:30:38.291Z", + "Learn_web_development/Extensions/Forms/Basic_native_form_controls": { + "modified": "2020-10-25T00:26:19.500Z", "contributors": [ - "chinmaykunkikar", + "Harold-Gao", + "amikalperkins", "chrisdavidmills", + "A.Faturechi", + "estelle", + "sideshowbarker", + "zubaer54", "tayyabalishan", - "kruschk", - "jswisher", - "alepsys", - "eremis101", - "gerganzh", - "grumBit", - "RafeyIqbalRahman", - "sahilwasan000", - "hello-ajayrawat", - "bripmccann", - "rileym7", + "choudh70", + "cybmdm", + "amIsmael", + "853419196", + "Sheppy", + "Ko.Kyaw.Zin.Htet", + "Tigt", + "juandesouza", "stephaniehobson", - "hadleyel", - "shoelaces", + "Jeffrey_Yang", + "toraritte", + "Ajedi32", "Jeremie", - "Sebastianz", - "fscholz" + "aksht", + "kscarfone", + "lemgrb" ] }, - "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/Form_validation": { + "modified": "2020-12-12T20:31:48.908Z", "contributors": [ + "bershanskiy", + "scottBowles", "chrisdavidmills", - "jpfkd", - "epirnat", + "tbolt", "A.Faturechi", - "choudh70", + "Halochkin", + "83C10", + "NikolayPe", + "Brettz9", + "SphinxKnight", + "kyonlee", + "estelle", "tayyabalishan", + "choudh70", + "perfmattersconf", + "SabineEmden", + "lbraun", + "ychouloute", + "alacritas", + "metamas", + "escattone", + "richajak", + "sidd", + "RachelM", + "jpaugh", + "shilili", + "agrimarcal", + "Sal56", "jswisher", - "alepsys", - "Asimov4", - "v8sagar", - "bkucey", - "bripmccann", + "Marvinside", + "libmw", + "mfuji09", + "RafeyIqbalRahman", + "mnoorenberghe", + "futureworktechno", + "futuretechnologies01", + "sideshowbarker", + "FutureWork08", + "thenoelman", + "csarami", + "mmeinzer", + "tjmcewan", + "chafic", + "zsogolow", + "zorrobei", + "BryanL", + "Sajag", "stephaniehobson", - "hadleyel", + "stellartux", + "sparecycles", + "lobsterhands", + "manikos", + "sabrinaluo", "RobWheadon", - "sushobhana", - "nmve", - "brenseid", + "denilsonsa", + "xmbhasin", + "ggyismjxd", + "wido", + "tkrotoff", + "Chandan-97", + "eanakashima", + "programmer5000", + "itsrahulpandey", + "andreaswachowski", + "enderandpeter", + "jrussia", + "cezaraugusto", + "mmk", + "Sheppy", + "PushpitaPikuDey", + "Tuxosaurus", + "gto1", "Jeremie", - "BaderSur", - "sngv", - "Sebastianz", - "BenCrab", - "fscholz" + "dalex", + "kscarfone", + "dbuch", + "jumpnett", + "Havvy" ] }, - "Learn/JavaScript/First_steps/Variables": { - "modified": "2020-09-28T12:52:31.401Z", + "Learn_web_development/Extensions/Forms/HTML5_input_types": { + "modified": "2020-10-04T09:16:43.234Z", "contributors": [ - "mohammad92asghari", + "JennyDC", + "amikalperkins", "chrisdavidmills", - "Nachec", - "choudh70", - "tayyabalishan", - "jswisher", - "JawnMarc", - "inikolaesku", - "cinephile85", - "alepsys", - "SphinxKnight", - "blimp", - "msobanjo", - "TasosPoursaitides", - "RafeyIqbalRahman", - "aswaniprakash", - "felipe-lee", - "sxnaprkhr", - "alexandr-osprey", - "Uemmra3", - "martian2049", - "bripmccann", - "jruota", - "stephaniehobson", - "rmdobservations", - "shoelaces", - "stockcj", - "Jeremie", - "razouckt", - "Sebastianz", - "Sheppy", - "salman-shah" + "arjenlgill", + "blueblots", + "panpy-web", + "A.Faturechi", + "joyjade", + "estelle", + "kyonlee", + "zubaer54", + "Zearin_Galaurum" ] }, - "Learn/JavaScript/First_steps/What_is_JavaScript": { - "modified": "2020-12-05T16:30:59.604Z", + "Learn_web_development/Extensions/Forms/HTML_forms_in_legacy_browsers": { + "modified": "2020-07-16T22:22:02.938Z", "contributors": [ - "mfuji09", - "dcompcoder", - "jpfkd", - "rajatsan", "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", + "ferrysdayoff", + "soonoo", "stephaniehobson", - "morfioce", - "whiteheat2019", - "hadleyel", - "SarahSakura1990", - "rmateus", - "nmve", - "OrthoLearner", + "nunu10000", "Jeremie", - "ObroAhmed", - "hamishwillee", - "Sebastianz" + "kscarfone", + "teoli", + "Sheppy", + "jswisher" ] }, - "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": { + "modified": "2020-09-17T01:08:40.244Z", "contributors": [ + "ralaplines1988", + "prosciutto1", + "vgiffin", + "JoshApos", "chrisdavidmills", - "jswisher", - "manideep39", - "tayyabalishan", - "inikolaesku", - "Alek2077", - "wbreakell", - "redrambles", - "bripmccann", - "MiaD", + "estelle", + "trieudh58", + "lonelywhisper", + "yiosh", "stephaniehobson", - "kewinsousa", - "hadleyel", - "nmaksymchuk", - "Tony-Thomas", - "rsidorov", - "stockcj", - "niklasholm", - "nmve", - "DeboraG", - "BrianCsection", + "jhggins", + "meshulam", + "Sheppy", "Jeremie", - "Sebastianz" + "kscarfone", + "notabene", + "BYK" ] }, - "Learn/JavaScript/Howto": { - "modified": "2020-07-16T22:33:08.616Z", + "Learn_web_development/Extensions/Forms/How_to_build_custom_form_controls/Example_1": { + "modified": "2020-07-16T22:21:58.881Z", "contributors": [ - "kruschk", - "sywsyw", - "jmstfv", - "stephaniehobson", "chrisdavidmills", - "Maxim79", - "tedmarynicz", - "adekoyejo" + "estelle", + "kscarfone", + "ethertank", + "Sheppy", + "Jeremie" ] }, - "Learn/JavaScript/Objects": { - "modified": "2020-08-18T09:29:11.749Z", + "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_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", - "Jeremie", - "fscholz" + "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" ] }, - "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", @@ -10004,11 +8888,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", @@ -10019,15 +8903,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", @@ -10039,11 +8923,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", @@ -10054,7 +8938,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", @@ -10067,7 +8951,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", @@ -10076,15 +8960,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", @@ -10097,7 +8981,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", @@ -10116,7 +9000,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", @@ -10146,7 +9030,7 @@ "Dria" ] }, - "Learn/Server-side/Django": { + "Learn_web_development/Extensions/Server-side/Django": { "modified": "2020-12-04T14:02:07.117Z", "contributors": [ "Arpitgoyalgg", @@ -10158,7 +9042,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", @@ -10184,7 +9068,7 @@ "shakib609" ] }, - "Learn/Server-side/Django/Authentication": { + "Learn_web_development/Extensions/Server-side/Django/Authentication": { "modified": "2020-12-03T20:13:13.675Z", "contributors": [ "hamishwillee", @@ -10222,7 +9106,7 @@ "devosnw" ] }, - "Learn/Server-side/Django/Deployment": { + "Learn_web_development/Extensions/Server-side/Django/Deployment": { "modified": "2020-12-03T20:19:51.934Z", "contributors": [ "hamishwillee", @@ -10245,7 +9129,7 @@ "alanypz" ] }, - "Learn/Server-side/Django/Forms": { + "Learn_web_development/Extensions/Server-side/Django/Forms": { "modified": "2020-12-03T20:17:00.543Z", "contributors": [ "hamishwillee", @@ -10274,7 +9158,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", @@ -10306,7 +9190,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", @@ -10334,7 +9218,7 @@ "BaderSur" ] }, - "Learn/Server-side/Django/Introduction": { + "Learn_web_development/Extensions/Server-side/Django/Introduction": { "modified": "2020-10-26T20:19:15.370Z", "contributors": [ "hamishwillee", @@ -10363,7 +9247,7 @@ "RezaGhanbari" ] }, - "Learn/Server-side/Django/Models": { + "Learn_web_development/Extensions/Server-side/Django/Models": { "modified": "2020-12-03T19:54:59.247Z", "contributors": [ "hamishwillee", @@ -10407,7 +9291,7 @@ "shakib609" ] }, - "Learn/Server-side/Django/Sessions": { + "Learn_web_development/Extensions/Server-side/Django/Sessions": { "modified": "2020-12-03T20:12:07.151Z", "contributors": [ "hamishwillee", @@ -10424,7 +9308,7 @@ "kalch" ] }, - "Learn/Server-side/Django/Testing": { + "Learn_web_development/Extensions/Server-side/Django/Testing": { "modified": "2020-12-03T20:18:46.698Z", "contributors": [ "hamishwillee", @@ -10455,7 +9339,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", @@ -10469,7 +9353,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", @@ -10495,7 +9379,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", @@ -10504,7 +9388,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", @@ -10537,7 +9421,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", @@ -10546,7 +9430,7 @@ "stephaniehobson" ] }, - "Learn/Server-side/Express_Nodejs": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs": { "modified": "2020-07-16T22:37:50.456Z", "contributors": [ "ckashby", @@ -10563,7 +9447,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", @@ -10584,7 +9468,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", @@ -10594,7 +9478,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", @@ -10608,7 +9492,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", @@ -10619,7 +9503,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", @@ -10629,7 +9513,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", @@ -10640,7 +9524,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", @@ -10651,7 +9535,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", @@ -10661,7 +9545,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", @@ -10679,7 +9563,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", @@ -10694,7 +9578,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", @@ -10703,7 +9587,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", @@ -10714,7 +9598,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", @@ -10767,7 +9651,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", @@ -10778,7 +9662,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", @@ -10801,7 +9685,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", @@ -10829,7 +9713,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", @@ -10857,7 +9741,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", @@ -10873,7 +9757,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", @@ -10887,7 +9771,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", @@ -10904,7 +9788,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", @@ -10922,7 +9806,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", @@ -10935,7 +9819,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", @@ -10948,7 +9832,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", @@ -11014,7 +9898,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", @@ -11043,7 +9927,7 @@ "wsvincent" ] }, - "Learn/Server-side/Express_Nodejs/skeleton_website": { + "Learn_web_development/Extensions/Server-side/Express_Nodejs/skeleton_website": { "modified": "2020-10-05T02:08:15.540Z", "contributors": [ "hamishwillee", @@ -11070,7 +9954,7 @@ "JonathanPool" ] }, - "Learn/Server-side/First_steps": { + "Learn_web_development/Extensions/Server-side/First_steps": { "modified": "2020-10-07T11:33:39.639Z", "contributors": [ "ohaver", @@ -11085,7 +9969,7 @@ "hamishwillee" ] }, - "Learn/Server-side/First_steps/Client-Server_overview": { + "Learn_web_development/Extensions/Server-side/First_steps/Client-Server_overview": { "modified": "2020-07-16T22:36:18.007Z", "contributors": [ "SphinxKnight", @@ -11110,7 +9994,7 @@ "hamishwillee" ] }, - "Learn/Server-side/First_steps/Introduction": { + "Learn_web_development/Extensions/Server-side/First_steps/Introduction": { "modified": "2020-11-22T17:43:04.256Z", "contributors": [ "Havardox", @@ -11141,7 +10025,7 @@ "hamishwillee" ] }, - "Learn/Server-side/First_steps/Web_frameworks": { + "Learn_web_development/Extensions/Server-side/First_steps/Web_frameworks": { "modified": "2020-07-16T22:36:23.155Z", "contributors": [ "Software202", @@ -11173,7 +10057,7 @@ "hamishwillee" ] }, - "Learn/Server-side/First_steps/Website_security": { + "Learn_web_development/Extensions/Server-side/First_steps/Website_security": { "modified": "2020-07-16T22:36:26.667Z", "contributors": [ "sideshowbarker", @@ -11195,7 +10079,7 @@ "hamishwillee" ] }, - "Learn/Server-side/Node_server_without_framework": { + "Learn_web_development/Extensions/Server-side/Node_server_without_framework": { "modified": "2020-10-02T01:27:11.451Z", "contributors": [ "hamishwillee", @@ -11220,379 +10104,1116 @@ "h_ajsf" ] }, - "Learn/Tools_and_testing": { - "modified": "2020-07-16T22:38:53.469Z", - "contributors": ["chrisdavidmills", "kruschk", "dylanferguson", "Navin77"] + "Learn_web_development/Extensions/Testing": { + "modified": "2020-07-16T22:38:59.026Z", + "contributors": [ + "chrisdavidmills", + "kruschk", + "ShivamGoyal1899", + "wbamberg", + "arai", + "prograamer", + "hadleyel", + "jpetto", + "melaniemkwon" + ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks": { - "modified": "2020-09-25T22:34:22.129Z", - "contributors": ["chrisdavidmills", "CodeDotJS"] + "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/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_conditional_footer": { - "modified": "2020-09-03T05:31:37.623Z", - "contributors": ["Rafael_Green", "chrisdavidmills"] + "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/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_getting_started": { - "modified": "2020-08-06T07:27:06.082Z", - "contributors": ["chrisdavidmills"] + "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/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_interactivity_events_state": { - "modified": "2020-08-06T07:26:59.624Z", - "contributors": ["chrisdavidmills"] + "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/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_resources": { - "modified": "2020-08-06T07:26:47.135Z", - "contributors": ["chrisdavidmills"] + "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/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_routing": { - "modified": "2020-08-06T07:26:51.530Z", - "contributors": ["chrisdavidmills"] + "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/Tools_and_testing/Client-side_JavaScript_frameworks/Ember_structure_componentization": { - "modified": "2020-08-06T07:27:03.636Z", - "contributors": ["chrisdavidmills"] + "Learn_web_development/Getting_started/Environment_setup/Command_line": { + "modified": "2020-10-18T22:03:14.400Z", + "contributors": ["ralaplines1988", "Callahad", "chrisdavidmills"] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Introduction": { - "modified": "2020-09-08T07:18:11.161Z", + "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", - "harryghgim", - "terrymorse", - "valgrimm", - "nicolasguasca1", - "codeability", - "mgechev", - "jchimene" + "dangvancuong", + "SphinxKnight", + "knows1", + "qadero", + "stephaniehobson", + "agnelvishal", + "afishop", + "hadleyel", + "Goldfish", + "shoelaces", + "Jeremie", + "ifilin", + "Ojas_A", + "Andrew_Pfeiffer", + "yokimbo", + "Sheppy", + "SueSmith" ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Main_features": { - "modified": "2020-09-08T05:53:30.007Z", - "contributors": ["chrisdavidmills", "terrymorse", "luc4leone", "mrmowji"] + "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/Tools_and_testing/Client-side_JavaScript_frameworks/React_accessibility": { - "modified": "2020-08-06T07:27:14.576Z", + "Learn_web_development/Getting_started/Soft_skills/Learning_and_getting_help": { + "modified": "2020-10-12T05:38:01.632Z", "contributors": [ "chrisdavidmills", - "vgiffin", - "ndri", + "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", - "doncity-tech" + "Andrew_Pfeiffer" ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_components": { - "modified": "2020-08-06T07:27:25.146Z", - "contributors": ["chrisdavidmills", "storytellerrishabh", "codeability"] + "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/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started": { - "modified": "2020-10-21T06:59:37.317Z", + "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", - "ramiZackaryShamir", - "spaceinvadev", "mrmowji", - "codeability", - "bias-santa", - "franca" + "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": [ + "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" + ] + }, + "Learn_web_development/Howto/Design_and_accessibility/Common_web_layouts": { + "modified": "2020-07-16T22:35:42.190Z", + "contributors": [ + "chrisdavidmills", + "SphinxKnight", + "Jeremie", + "Sheppy", + "Kathrincolyn", + "Andrew_Pfeiffer", + "mehmetaergun", + "anistark", + "rhyne24" + ] + }, + "Learn_web_development/Howto/Design_and_accessibility/Design_for_all_types_of_users": { + "modified": "2020-07-16T22:35:50.650Z", + "contributors": [ + "MelchiorIm3Tal", + "chrisdavidmills", + "SphinxKnight", + "Jeremie", + "Andrew_Pfeiffer", + "notabene" + ] + }, + "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": [ + "maishakins", + "jamesdhurd", + "chrisdavidmills", + "surigangula", + "SphinxKnight", + "Jeremie", + "Andrew_Pfeiffer", + "teoli" + ] + }, + "Learn_web_development/Howto/Design_and_accessibility/What_is_accessibility": { + "modified": "2020-07-16T22:35:46.668Z", + "contributors": [ + "chrisdavidmills", + "Jeremie", + "Andrew_Pfeiffer", + "notabene" + ] + }, + "Learn_web_development/Howto/Solve_CSS_problems": { + "modified": "2020-07-16T22:25:41.103Z", + "contributors": [ + "Coink", + "SphinxKnight", + "dforceacademy", + "prayagch", + "chrisdavidmills", + "kruschk", + "david_ross", + "Jedipedia", + "yuj25", + "Onkar316", + "adebiyial", + "hbloomer", + "Jeremie" + ] + }, + "Learn_web_development/Howto/Solve_CSS_problems/CSS_FAQ": { + "modified": "2020-07-16T22:25:44.490Z", + "contributors": [ + "SphinxKnight", + "sarlington", + "stephaniehobson", + "Sheppy", + "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" + ] + }, + "Learn_web_development/Howto/Solve_CSS_problems/Generated_content": { + "modified": "2020-07-16T22:25:46.676Z", + "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" + ] + }, + "Learn_web_development/Howto/Solve_HTML_problems": { + "modified": "2020-07-16T22:22:27.700Z", + "contributors": [ + "chrisdavidmills", + "RafeyIqbalRahman", + "mrmowji", + "ishan123456789", + "Jeremie", + "Andrew_Pfeiffer" + ] + }, + "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", + "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_web_development/Howto/Solve_HTML_problems/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/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/React_interactivity_events_state": { - "modified": "2020-09-01T07:11:30.226Z", + "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_web_development/Howto/Solve_HTML_problems/Use_data_attributes": { + "modified": "2020-07-16T22:22:34.241Z", "contributors": [ + "vnctdj", + "LoVo666", + "jmstfv", + "mfuji09", + "kenny-evitt", + "Enrico_Polanski", + "ryanve", + "calebmosher", "chrisdavidmills", - "ndri", - "nicolasguasca1", - "mrmowji", - "alperars" + "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/React_interactivity_filtering_conditional_rendering": { - "modified": "2020-09-28T06:18:04.788Z", + "Learn_web_development/Howto/Solve_JavaScript_problems": { + "modified": "2020-07-16T22:33:08.616Z", "contributors": [ + "kruschk", + "sywsyw", + "jmstfv", + "stephaniehobson", "chrisdavidmills", - "dl90", - "terrymorse", - "Rafael_Green", - "mrmowji" + "Maxim79", + "tedmarynicz", + "adekoyejo" ] }, - "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/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_getting_started": { - "modified": "2020-09-11T14:25:08.477Z", - "contributors": ["Rafael_Green", "chrisdavidmills", "opensas"] - }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_reactivity_lifecycle_accessibility": { - "modified": "2020-10-24T06:16:59.643Z", + "Learn_web_development/Howto/Tools_and_setup/Available_text_editors": { + "modified": "2020-09-11T09:55:13.639Z", "contributors": [ - "haond10adp", - "SphinxKnight", - "Rafael_Green", + "callpri", + "GCCSheep", + "blueblots", + "iigmir", + "rashmimalpande", "chrisdavidmills", - "opensas" + "funnyChinese", + "SphinxKnight", + "Jeremie", + "Andrew_Pfeiffer", + "fmarier" ] }, - "Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_stores": { - "modified": "2020-12-11T07:44:13.494Z", + "Learn_web_development/Howto/Tools_and_setup/Checking_that_your_web_site_is_working_properly": { + "modified": "2020-07-16T22:35:49.891Z", "contributors": [ - "Mishra-Suraj", - "haond10adp", - "Rafael_Green", - "chrisdavidmills" + "chrisdavidmills", + "Andrew_Pfeiffer", + "Jeremie", + "hbloomer", + "notabene" ] }, - "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/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_resources": { - "modified": "2020-08-06T07:26:03.837Z", - "contributors": ["chrisdavidmills"] - }, - "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": { @@ -11616,54 +11237,6 @@ "ziyunfei" ] }, - "MDN/At_ten": { - "modified": "2020-12-14T11:30:31.427Z", - "contributors": [ - "fscholz", - "nasimrja", - "chandan987", - "stephaniehobson", - "jsx", - "daniellascandles", - "h8erofthem8tixs", - "jswisher", - "chrisdavidmills", - "wkforever", - "Sheppy" - ] - }, - "MDN/At_ten/History_of_MDN": { - "modified": "2020-12-12T07:24:50.578Z", - "contributors": [ - "bershanskiy", - "Sheppy", - "jswisher", - "jwhitlock", - "stephaniehobson", - "groovecoder" - ] - }, - "MDN/MDN_Product_Advisory_Board": { - "modified": "2019-06-05T12:41:23.682Z", - "contributors": [ - "Sheppy", - "wbamberg", - "alispivak", - "stephaniehobson", - "chrisdavidmills", - "KadirTopal" - ] - }, - "MDN/MDN_Product_Advisory_Board/Membership": { - "modified": "2020-08-24T15:00:45.099Z", - "contributors": [ - "chrisdavidmills", - "wbamberg", - "alispivak", - "Sheppy", - "KadirTopal" - ] - }, "MDN/Writing_guidelines/Howto/Document_a_CSS_property": { "modified": "2020-02-18T19:54:27.563Z", "contributors": [ @@ -23275,10 +22848,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": [ @@ -37644,16 +37213,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": [ @@ -37674,6 +37233,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"] @@ -54159,10 +53730,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"] @@ -54187,10 +53754,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"] @@ -54207,10 +53770,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"] @@ -54219,10 +53778,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"] @@ -54235,10 +53790,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"] @@ -54821,46 +54372,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"] @@ -65415,10 +64926,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"] @@ -66504,6 +66011,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": [ @@ -66604,6 +66168,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"] @@ -68208,6 +67794,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": [ @@ -68824,6 +68420,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"] @@ -69046,23 +68813,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"] @@ -70945,63 +70695,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": [ @@ -71496,209 +71189,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": [ @@ -86802,10 +86292,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"] @@ -90642,7 +90128,7 @@ "teoli" ] }, - "Web/CSS/url": { + "Web/CSS/url_value": { "modified": "2020-12-11T11:18:33.507Z", "contributors": [ "rachelandrew", @@ -91564,18 +91050,6 @@ "ethertank" ] }, - "Web/Guide/CSS/Getting_started/Challenge_solutions": { - "modified": "2019-08-29T20:48:33.765Z", - "contributors": [ - "Sebastianz", - "strael1", - "teoli", - "Jeremie", - "Sheppy", - "illourr", - "jswisher" - ] - }, "Web/Guide/Parsing_and_serializing_XML": { "modified": "2020-09-09T05:19:22.895Z", "contributors": [ @@ -98296,6 +97770,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": [ @@ -98407,115 +97919,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/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/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/Browser_detection_using_the_user_agent": { "modified": "2020-07-11T11:53:53.804Z", "contributors": [ @@ -98895,24 +98298,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": [ @@ -99038,6 +98423,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": [ @@ -99093,17 +98502,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": [ @@ -99719,10 +99117,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": [ @@ -100344,10 +99738,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"] @@ -100466,6 +99856,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": [ @@ -102669,7 +102128,7 @@ "douglasnaphas" ] }, - "Web/JavaScript/Guide/Numbers_and_dates": { + "Web/JavaScript/Guide/Numbers_and_strings": { "modified": "2020-11-14T07:27:01.088Z", "contributors": [ "mfuji09", @@ -102915,31 +102374,6 @@ "jpmedley" ] }, - "Web/JavaScript/Guide/Text_formatting": { - "modified": "2020-05-25T10:48:56.137Z", - "contributors": [ - "fscholz", - "wbamberg", - "bma", - "alattalatta", - "vriojtg", - "sbfraser01", - "chrisdavidmills", - "JigneshMistry", - "stephaniehobson", - "SphinxKnight", - "amir77ameri", - "ThomasEugeneBishop", - "nmve", - "kdex", - "Jeremie", - "danielinux7", - "gportioli", - "xfq", - "mahzaib", - "kscarfone" - ] - }, "Web/JavaScript/Guide/Typed_arrays": { "modified": "2020-10-15T21:04:01.905Z", "contributors": [ @@ -121924,7 +121358,7 @@ "nyx2014" ] }, - "Web/Manifest/background_color": { + "Web/Manifest/Reference/background_color": { "modified": "2020-10-15T22:19:34.725Z", "contributors": [ "alattalatta", @@ -121936,7 +121370,7 @@ "bershanskiy" ] }, - "Web/Manifest/categories": { + "Web/Manifest/Reference/categories": { "modified": "2020-10-15T22:19:38.950Z", "contributors": [ "mfuji09", @@ -121946,7 +121380,7 @@ "bershanskiy" ] }, - "Web/Manifest/description": { + "Web/Manifest/Reference/description": { "modified": "2020-10-15T22:19:35.118Z", "contributors": [ "mfuji09", @@ -121958,11 +121392,11 @@ "bershanskiy" ] }, - "Web/Manifest/display": { + "Web/Manifest/Reference/display": { "modified": "2020-10-15T22:19:35.572Z", "contributors": ["mfuji09", "wbamberg", "chrisdavidmills", "bershanskiy"] }, - "Web/Manifest/icons": { + "Web/Manifest/Reference/icons": { "modified": "2020-10-15T22:19:36.584Z", "contributors": [ "NotWoods", @@ -121973,7 +121407,7 @@ "bershanskiy" ] }, - "Web/Manifest/name": { + "Web/Manifest/Reference/name": { "modified": "2020-10-15T22:19:34.029Z", "contributors": [ "mfuji09", @@ -121983,11 +121417,11 @@ "bershanskiy" ] }, - "Web/Manifest/orientation": { + "Web/Manifest/Reference/orientation": { "modified": "2020-10-15T22:19:38.630Z", "contributors": ["mfuji09", "wbamberg", "chrisdavidmills", "bershanskiy"] }, - "Web/Manifest/prefer_related_applications": { + "Web/Manifest/Reference/prefer_related_applications": { "modified": "2020-10-15T22:19:35.087Z", "contributors": [ "mfuji09", @@ -121999,7 +121433,7 @@ "bershanskiy" ] }, - "Web/Manifest/related_applications": { + "Web/Manifest/Reference/related_applications": { "modified": "2020-10-15T22:19:38.718Z", "contributors": [ "mfuji09", @@ -122010,7 +121444,7 @@ "bershanskiy" ] }, - "Web/Manifest/scope": { + "Web/Manifest/Reference/scope": { "modified": "2020-10-15T22:19:34.717Z", "contributors": [ "mfuji09", @@ -122020,7 +121454,7 @@ "bershanskiy" ] }, - "Web/Manifest/screenshots": { + "Web/Manifest/Reference/screenshots": { "modified": "2020-10-15T22:19:38.892Z", "contributors": [ "mfuji09", @@ -122031,7 +121465,7 @@ "bershanskiy" ] }, - "Web/Manifest/short_name": { + "Web/Manifest/Reference/short_name": { "modified": "2020-10-15T22:19:34.266Z", "contributors": [ "mfuji09", @@ -122041,15 +121475,15 @@ "bershanskiy" ] }, - "Web/Manifest/shortcuts": { + "Web/Manifest/Reference/shortcuts": { "modified": "2020-10-15T22:31:46.728Z", "contributors": ["bershanskiy"] }, - "Web/Manifest/start_url": { + "Web/Manifest/Reference/start_url": { "modified": "2020-10-15T22:19:39.071Z", "contributors": ["mfuji09", "wbamberg", "chrisdavidmills", "bershanskiy"] }, - "Web/Manifest/theme_color": { + "Web/Manifest/Reference/theme_color": { "modified": "2020-10-15T22:19:39.139Z", "contributors": ["mfuji09", "wbamberg", "chrisdavidmills", "bershanskiy"] }, @@ -122654,6 +122088,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"] @@ -127627,11 +127079,74 @@ "Mathieu Deaudelin" ] }, - "Web/XSLT/Common_errors": { + "Web/XSLT/Guides/Common_errors": { "modified": "2019-03-24T00:09:17.416Z", "contributors": ["tommorris", "teoli", "sicking"] }, - "Web/XSLT/Element": { + "Web/XSLT/Guides/PI_Parameters": { + "modified": "2019-03-23T23:52:15.197Z", + "contributors": [ + "SphinxKnight", + "Sheppy", + "Pekarna", + "Fredchat", + "Nickolay", + "sicking" + ] + }, + "Web/XSLT/Guides/Transforming_XML_with_XSLT": { + "modified": "2019-03-18T20:49:03.271Z", + "contributors": [ + "mfuji09", + "ExE-Boss", + "chrisdavidmills", + "ethertank", + "jswisher", + "bovinespirit", + "SamB", + "Brettz9", + "Fredchat", + "Kitchen", + "Sebuls", + "Mgjbot", + "Callek", + "Sheppy", + "Ptak82", + "NickolayBot", + "alecananian", + "Dria", + "Nickolay", + "CitizenK" + ] + }, + "Web/XSLT/Guides/Transforming_XML_with_XSLT/An_Overview": { + "modified": "2019-03-23T23:43:18.530Z", + "contributors": [ + "SphinxKnight", + "chrisdavidmills", + "Fredchat", + "jswisher", + "trevorh", + "Dria", + "CitizenK" + ] + }, + "Web/XSLT/Guides/Transforming_XML_with_XSLT/For_Further_Reading": { + "modified": "2019-03-23T23:43:15.921Z", + "contributors": [ + "SphinxKnight", + "chrisdavidmills", + "ethertank", + "jswisher", + "Fredchat", + "Major Small", + "Nickolay", + "Ptak82", + "Dria", + "CitizenK" + ] + }, + "Web/XSLT/Reference/Element": { "modified": "2019-03-24T00:14:46.715Z", "contributors": [ "ExE-Boss", @@ -127647,7 +127162,7 @@ "Dria" ] }, - "Web/XSLT/Element/apply-imports": { + "Web/XSLT/Reference/Element/apply-imports": { "modified": "2019-03-23T23:43:46.904Z", "contributors": [ "ExE-Boss", @@ -127661,7 +127176,7 @@ "Dria" ] }, - "Web/XSLT/Element/apply-templates": { + "Web/XSLT/Reference/Element/apply-templates": { "modified": "2019-03-23T23:43:44.196Z", "contributors": [ "ExE-Boss", @@ -127675,7 +127190,7 @@ "Dria" ] }, - "Web/XSLT/Element/attribute": { + "Web/XSLT/Reference/Element/attribute": { "modified": "2019-03-23T23:43:47.471Z", "contributors": [ "ExE-Boss", @@ -127690,7 +127205,7 @@ "Dria" ] }, - "Web/XSLT/Element/attribute-set": { + "Web/XSLT/Reference/Element/attribute-set": { "modified": "2019-03-23T23:43:44.737Z", "contributors": [ "ExE-Boss", @@ -127704,7 +127219,7 @@ "Dria" ] }, - "Web/XSLT/Element/call-template": { + "Web/XSLT/Reference/Element/call-template": { "modified": "2019-03-23T23:43:45.299Z", "contributors": [ "ExE-Boss", @@ -127719,7 +127234,7 @@ "Dria" ] }, - "Web/XSLT/Element/choose": { + "Web/XSLT/Reference/Element/choose": { "modified": "2019-03-23T23:51:26.001Z", "contributors": [ "ExE-Boss", @@ -127735,7 +127250,7 @@ "Dria" ] }, - "Web/XSLT/Element/comment": { + "Web/XSLT/Reference/Element/comment": { "modified": "2019-03-23T23:43:46.122Z", "contributors": [ "ExE-Boss", @@ -127749,7 +127264,7 @@ "Dria" ] }, - "Web/XSLT/Element/copy": { + "Web/XSLT/Reference/Element/copy": { "modified": "2019-03-23T23:43:46.021Z", "contributors": [ "ExE-Boss", @@ -127763,7 +127278,7 @@ "Dria" ] }, - "Web/XSLT/Element/copy-of": { + "Web/XSLT/Reference/Element/copy-of": { "modified": "2019-03-23T23:43:45.653Z", "contributors": [ "ExE-Boss", @@ -127777,7 +127292,7 @@ "Dria" ] }, - "Web/XSLT/Element/decimal-format": { + "Web/XSLT/Reference/Element/decimal-format": { "modified": "2019-03-23T23:43:43.644Z", "contributors": [ "ExE-Boss", @@ -127790,7 +127305,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/element": { + "Web/XSLT/Reference/Element/element": { "modified": "2019-03-23T23:46:27.595Z", "contributors": [ "ExE-Boss", @@ -127805,7 +127320,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/fallback": { + "Web/XSLT/Reference/Element/fallback": { "modified": "2019-03-23T23:43:46.291Z", "contributors": [ "ExE-Boss", @@ -127818,7 +127333,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/for-each": { + "Web/XSLT/Reference/Element/for-each": { "modified": "2019-03-23T23:43:46.604Z", "contributors": [ "ExE-Boss", @@ -127831,7 +127346,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/if": { + "Web/XSLT/Reference/Element/if": { "modified": "2019-03-23T23:43:44.538Z", "contributors": [ "ExE-Boss", @@ -127844,7 +127359,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/import": { + "Web/XSLT/Reference/Element/import": { "modified": "2019-03-23T23:43:44.287Z", "contributors": [ "ExE-Boss", @@ -127857,7 +127372,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/include": { + "Web/XSLT/Reference/Element/include": { "modified": "2019-03-23T23:43:45.387Z", "contributors": [ "ExE-Boss", @@ -127870,7 +127385,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/key": { + "Web/XSLT/Reference/Element/key": { "modified": "2019-03-23T23:43:46.516Z", "contributors": [ "ExE-Boss", @@ -127883,7 +127398,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/message": { + "Web/XSLT/Reference/Element/message": { "modified": "2019-03-23T23:43:47.380Z", "contributors": [ "ExE-Boss", @@ -127896,7 +127411,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/namespace-alias": { + "Web/XSLT/Reference/Element/namespace-alias": { "modified": "2019-03-23T23:43:47.275Z", "contributors": [ "ExE-Boss", @@ -127909,7 +127424,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/number": { + "Web/XSLT/Reference/Element/number": { "modified": "2019-03-23T23:43:45.547Z", "contributors": [ "ExE-Boss", @@ -127922,7 +127437,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/otherwise": { + "Web/XSLT/Reference/Element/otherwise": { "modified": "2019-03-23T23:43:48.892Z", "contributors": [ "ExE-Boss", @@ -127935,7 +127450,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/output": { + "Web/XSLT/Reference/Element/output": { "modified": "2019-03-23T23:43:51.603Z", "contributors": [ "ExE-Boss", @@ -127947,7 +127462,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/param": { + "Web/XSLT/Reference/Element/param": { "modified": "2019-03-23T23:43:49.631Z", "contributors": [ "ExE-Boss", @@ -127960,7 +127475,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/preserve-space": { + "Web/XSLT/Reference/Element/preserve-space": { "modified": "2019-03-23T23:43:47.668Z", "contributors": [ "ExE-Boss", @@ -127972,7 +127487,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/processing-instruction": { + "Web/XSLT/Reference/Element/processing-instruction": { "modified": "2019-03-23T23:43:48.104Z", "contributors": [ "ExE-Boss", @@ -127984,7 +127499,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/sort": { + "Web/XSLT/Reference/Element/sort": { "modified": "2019-03-23T23:46:25.569Z", "contributors": [ "ExE-Boss", @@ -127997,7 +127512,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/strip-space": { + "Web/XSLT/Reference/Element/strip-space": { "modified": "2019-03-23T23:43:48.022Z", "contributors": [ "ExE-Boss", @@ -128009,7 +127524,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/stylesheet": { + "Web/XSLT/Reference/Element/stylesheet": { "modified": "2020-10-15T21:18:07.082Z", "contributors": [ "sideshowbarker", @@ -128024,7 +127539,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/template": { + "Web/XSLT/Reference/Element/template": { "modified": "2019-03-23T23:43:47.932Z", "contributors": [ "ExE-Boss", @@ -128036,7 +127551,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/text": { + "Web/XSLT/Reference/Element/text": { "modified": "2019-03-23T23:43:46.996Z", "contributors": [ "ExE-Boss", @@ -128049,7 +127564,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/transform": { + "Web/XSLT/Reference/Element/transform": { "modified": "2019-03-23T23:43:47.834Z", "contributors": [ "ExE-Boss", @@ -128062,7 +127577,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/value-of": { + "Web/XSLT/Reference/Element/value-of": { "modified": "2019-03-23T23:45:34.399Z", "contributors": [ "ExE-Boss", @@ -128076,7 +127591,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/variable": { + "Web/XSLT/Reference/Element/variable": { "modified": "2019-03-23T23:43:47.576Z", "contributors": [ "ExE-Boss", @@ -128088,7 +127603,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/when": { + "Web/XSLT/Reference/Element/when": { "modified": "2019-03-23T23:43:47.757Z", "contributors": [ "ExE-Boss", @@ -128101,7 +127616,7 @@ "CitizenK" ] }, - "Web/XSLT/Element/with-param": { + "Web/XSLT/Reference/Element/with-param": { "modified": "2019-03-23T23:43:47.094Z", "contributors": [ "ExE-Boss", @@ -128114,135 +127629,6 @@ "CitizenK" ] }, - "Web/XSLT/PI_Parameters": { - "modified": "2019-03-23T23:52:15.197Z", - "contributors": [ - "SphinxKnight", - "Sheppy", - "Pekarna", - "Fredchat", - "Nickolay", - "sicking" - ] - }, - "Web/XSLT/Transforming_XML_with_XSLT": { - "modified": "2019-03-18T20:49:03.271Z", - "contributors": [ - "mfuji09", - "ExE-Boss", - "chrisdavidmills", - "ethertank", - "jswisher", - "bovinespirit", - "SamB", - "Brettz9", - "Fredchat", - "Kitchen", - "Sebuls", - "Mgjbot", - "Callek", - "Sheppy", - "Ptak82", - "NickolayBot", - "alecananian", - "Dria", - "Nickolay", - "CitizenK" - ] - }, - "Web/XSLT/Transforming_XML_with_XSLT/An_Overview": { - "modified": "2019-03-23T23:43:18.530Z", - "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "Fredchat", - "jswisher", - "trevorh", - "Dria", - "CitizenK" - ] - }, - "Web/XSLT/Transforming_XML_with_XSLT/For_Further_Reading": { - "modified": "2019-03-23T23:43:15.921Z", - "contributors": [ - "SphinxKnight", - "chrisdavidmills", - "ethertank", - "jswisher", - "Fredchat", - "Major Small", - "Nickolay", - "Ptak82", - "Dria", - "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": [ @@ -128263,7 +127649,7 @@ "ukyo" ] }, - "WebAssembly/C_to_Wasm": { + "WebAssembly/Guides/C_to_Wasm": { "modified": "2020-06-11T15:32:29.520Z", "contributors": [ "dwrolvink", @@ -128286,7 +127672,7 @@ "BrainBuzzer" ] }, - "WebAssembly/Concepts": { + "WebAssembly/Guides/Concepts": { "modified": "2020-09-11T03:22:18.074Z", "contributors": [ "chrisdavidmills", @@ -128317,11 +127703,120 @@ "BrainBuzzer" ] }, - "WebAssembly/Exported_functions": { + "WebAssembly/Guides/Existing_C_to_Wasm": { + "modified": "2019-10-25T23:35:34.819Z", + "contributors": [ + "leela52452", + "msobanjo", + "sideshowbarker", + "nylki", + "AntonOellerer", + "tomasdev", + "jpmedley", + "chrisdavidmills" + ] + }, + "WebAssembly/Guides/Exported_functions": { "modified": "2019-03-23T22:19:25.918Z", "contributors": ["chrisdavidmills", "WesleydeSouza", "kingysu"] }, - "WebAssembly/JavaScript_interface": { + "WebAssembly/Guides/Loading_and_running": { + "modified": "2020-11-15T12:25:58.103Z", + "contributors": [ + "MisterJ936", + "MarkusStange", + "kdex", + "lukewagner", + "chrisdavidmills", + "AndyLnd", + "sideshowbarker", + "lyrra", + "ukyo" + ] + }, + "WebAssembly/Guides/Rust_to_Wasm": { + "modified": "2020-12-03T13:43:48.765Z", + "contributors": [ + "blboyle", + "david.cdb004", + "mjsML", + "sheonhan", + "edude03", + "trevordmiller", + "mfuji09", + "jswisher", + "ExE-Boss", + "TerryOShea", + "codebam", + "toume", + "nvarner", + "chrisdavidmills" + ] + }, + "WebAssembly/Guides/Text_format_to_Wasm": { + "modified": "2020-10-13T12:24:14.646Z", + "contributors": [ + "mfuji09", + "Sunfishcode", + "JNa0", + "leela52452", + "ExE-Boss", + "julienw", + "chrisdavidmills", + "PushpitaPikuDey", + "sideshowbarker", + "KateSturmey", + "jmittert", + "kingysu", + "lukewagner" + ] + }, + "WebAssembly/Guides/Understanding_the_text_format": { + "modified": "2020-08-07T00:05:11.492Z", + "contributors": [ + "dgb23", + "chrisdavidmills", + "lukewagner", + "martin-t", + "cwebber", + "leela52452", + "adamkewley", + "AlanFoster", + "sideshowbarker", + "ofrobots", + "theSdev", + "ExE-Boss", + "puzpuzpuz", + "olegvs", + "antstei", + "mkelliher", + "kenrick95", + "KagamiH", + "maximebl", + "kingysu", + "ukyo", + "fanmingfei", + "AndreasHassing", + "BrainBuzzer", + "kdex" + ] + }, + "WebAssembly/Guides/Using_the_JavaScript_API": { + "modified": "2020-11-22T10:35:58.263Z", + "contributors": [ + "SphinxKnight", + "UltimateProGrammer", + "chrisdavidmills", + "justin.menking", + "FarooqAR", + "mcopejans", + "YuryDelendik", + "lukewagner", + "chrissantos1995", + "Jiang-Xuan" + ] + }, + "WebAssembly/Reference/JavaScript_interface": { "modified": "2020-10-15T21:51:43.349Z", "contributors": [ "fscholz", @@ -128333,7 +127828,7 @@ "lukewagner" ] }, - "WebAssembly/JavaScript_interface/CompileError": { + "WebAssembly/Reference/JavaScript_interface/CompileError": { "modified": "2020-10-15T21:51:47.191Z", "contributors": [ "fscholz", @@ -128344,11 +127839,11 @@ "lukewagner" ] }, - "WebAssembly/JavaScript_interface/CompileError/CompileError": { + "WebAssembly/Reference/JavaScript_interface/CompileError/CompileError": { "modified": "2020-10-15T22:27:16.736Z", "contributors": ["fscholz", "wbamberg"] }, - "WebAssembly/JavaScript_interface/Global": { + "WebAssembly/Reference/JavaScript_interface/Global": { "modified": "2020-12-11T06:30:22.237Z", "contributors": [ "bershanskiy", @@ -128359,11 +127854,11 @@ "jpmedley" ] }, - "WebAssembly/JavaScript_interface/Global/Global": { + "WebAssembly/Reference/JavaScript_interface/Global/Global": { "modified": "2020-12-11T06:28:32.977Z", "contributors": ["bershanskiy", "fscholz"] }, - "WebAssembly/JavaScript_interface/Instance": { + "WebAssembly/Reference/JavaScript_interface/Instance": { "modified": "2020-10-15T21:51:45.430Z", "contributors": [ "chrisdavidmills", @@ -128377,15 +127872,15 @@ "lukewagner" ] }, - "WebAssembly/JavaScript_interface/Instance/Instance": { + "WebAssembly/Reference/JavaScript_interface/Instance/Instance": { "modified": "2020-10-15T22:27:23.122Z", "contributors": ["chrisdavidmills", "wbamberg", "mfuji09", "fscholz"] }, - "WebAssembly/JavaScript_interface/Instance/exports": { + "WebAssembly/Reference/JavaScript_interface/Instance/exports": { "modified": "2020-10-15T21:51:47.093Z", "contributors": ["fscholz", "mfuji09", "sideshowbarker", "chrisdavidmills"] }, - "WebAssembly/JavaScript_interface/LinkError": { + "WebAssembly/Reference/JavaScript_interface/LinkError": { "modified": "2020-10-15T21:51:48.473Z", "contributors": [ "fscholz", @@ -128395,11 +127890,11 @@ "lukewagner" ] }, - "WebAssembly/JavaScript_interface/LinkError/LinkError": { + "WebAssembly/Reference/JavaScript_interface/LinkError/LinkError": { "modified": "2020-10-15T22:27:14.353Z", "contributors": ["fscholz", "wbamberg"] }, - "WebAssembly/JavaScript_interface/Memory": { + "WebAssembly/Reference/JavaScript_interface/Memory": { "modified": "2020-12-03T13:47:41.979Z", "contributors": [ "DesmondWillowbrook", @@ -128411,15 +127906,15 @@ "lukewagner" ] }, - "WebAssembly/JavaScript_interface/Memory/Memory": { + "WebAssembly/Reference/JavaScript_interface/Memory/Memory": { "modified": "2020-10-15T22:27:22.819Z", "contributors": ["lukewagner", "chrisdavidmills", "fscholz", "mfuji09"] }, - "WebAssembly/JavaScript_interface/Memory/buffer": { + "WebAssembly/Reference/JavaScript_interface/Memory/buffer": { "modified": "2020-10-15T21:51:49.592Z", "contributors": ["fscholz", "mfuji09", "sideshowbarker", "chrisdavidmills"] }, - "WebAssembly/JavaScript_interface/Memory/grow": { + "WebAssembly/Reference/JavaScript_interface/Memory/grow": { "modified": "2020-10-15T21:51:47.051Z", "contributors": [ "fscholz", @@ -128428,7 +127923,7 @@ "lukewagner" ] }, - "WebAssembly/JavaScript_interface/Module": { + "WebAssembly/Reference/JavaScript_interface/Module": { "modified": "2020-12-06T05:19:13.781Z", "contributors": [ "mfuji09", @@ -128440,11 +127935,11 @@ "lukewagner" ] }, - "WebAssembly/JavaScript_interface/Module/Module": { + "WebAssembly/Reference/JavaScript_interface/Module/Module": { "modified": "2020-10-15T22:27:22.788Z", "contributors": ["chrisdavidmills", "wbamberg", "fscholz"] }, - "WebAssembly/JavaScript_interface/Module/customSections_static": { + "WebAssembly/Reference/JavaScript_interface/Module/customSections_static": { "modified": "2020-10-15T21:51:48.277Z", "contributors": [ "fscholz", @@ -128455,7 +127950,7 @@ "svodnik" ] }, - "WebAssembly/JavaScript_interface/Module/exports_static": { + "WebAssembly/Reference/JavaScript_interface/Module/exports_static": { "modified": "2020-10-15T21:51:45.300Z", "contributors": [ "fscholz", @@ -128468,7 +127963,7 @@ "svodnik" ] }, - "WebAssembly/JavaScript_interface/Module/imports_static": { + "WebAssembly/Reference/JavaScript_interface/Module/imports_static": { "modified": "2020-10-15T21:51:45.626Z", "contributors": [ "fscholz", @@ -128480,7 +127975,7 @@ "svodnik" ] }, - "WebAssembly/JavaScript_interface/RuntimeError": { + "WebAssembly/Reference/JavaScript_interface/RuntimeError": { "modified": "2020-10-15T21:51:48.054Z", "contributors": [ "fscholz", @@ -128490,11 +127985,11 @@ "lukewagner" ] }, - "WebAssembly/JavaScript_interface/RuntimeError/RuntimeError": { + "WebAssembly/Reference/JavaScript_interface/RuntimeError/RuntimeError": { "modified": "2020-10-15T22:27:14.920Z", "contributors": ["fscholz", "wbamberg"] }, - "WebAssembly/JavaScript_interface/Table": { + "WebAssembly/Reference/JavaScript_interface/Table": { "modified": "2020-10-15T21:51:46.257Z", "contributors": [ "fscholz", @@ -128504,15 +127999,15 @@ "lukewagner" ] }, - "WebAssembly/JavaScript_interface/Table/Table": { + "WebAssembly/Reference/JavaScript_interface/Table/Table": { "modified": "2020-10-15T22:27:22.286Z", "contributors": ["fscholz"] }, - "WebAssembly/JavaScript_interface/Table/get": { + "WebAssembly/Reference/JavaScript_interface/Table/get": { "modified": "2020-10-15T21:51:47.366Z", "contributors": ["fscholz", "sideshowbarker", "chrisdavidmills"] }, - "WebAssembly/JavaScript_interface/Table/grow": { + "WebAssembly/Reference/JavaScript_interface/Table/grow": { "modified": "2020-10-15T21:51:47.624Z", "contributors": [ "fscholz", @@ -128521,7 +128016,7 @@ "lukewagner" ] }, - "WebAssembly/JavaScript_interface/Table/length": { + "WebAssembly/Reference/JavaScript_interface/Table/length": { "modified": "2020-10-15T21:51:48.365Z", "contributors": [ "fscholz", @@ -128531,15 +128026,15 @@ "lukewagner" ] }, - "WebAssembly/JavaScript_interface/Table/set": { + "WebAssembly/Reference/JavaScript_interface/Table/set": { "modified": "2020-10-15T21:51:48.539Z", "contributors": ["fscholz", "mfuji09", "sideshowbarker", "chrisdavidmills"] }, - "WebAssembly/JavaScript_interface/compileStreaming_static": { + "WebAssembly/Reference/JavaScript_interface/compileStreaming_static": { "modified": "2020-10-15T21:58:23.274Z", "contributors": ["fscholz", "wbamberg", "chrisdavidmills"] }, - "WebAssembly/JavaScript_interface/compile_static": { + "WebAssembly/Reference/JavaScript_interface/compile_static": { "modified": "2020-10-15T21:51:47.482Z", "contributors": [ "chharvey", @@ -128549,11 +128044,11 @@ "lukewagner" ] }, - "WebAssembly/JavaScript_interface/instantiateStreaming_static": { + "WebAssembly/Reference/JavaScript_interface/instantiateStreaming_static": { "modified": "2020-10-15T21:58:22.787Z", "contributors": ["fscholz", "wbamberg", "chrisdavidmills", "AnimusPEXUS"] }, - "WebAssembly/JavaScript_interface/instantiate_static": { + "WebAssembly/Reference/JavaScript_interface/instantiate_static": { "modified": "2020-12-06T05:01:39.378Z", "contributors": [ "mfuji09", @@ -128567,7 +128062,7 @@ "lukewagner" ] }, - "WebAssembly/JavaScript_interface/validate_static": { + "WebAssembly/Reference/JavaScript_interface/validate_static": { "modified": "2020-10-15T21:51:47.232Z", "contributors": [ "fscholz", @@ -128577,115 +128072,6 @@ "lukewagner" ] }, - "WebAssembly/Loading_and_running": { - "modified": "2020-11-15T12:25:58.103Z", - "contributors": [ - "MisterJ936", - "MarkusStange", - "kdex", - "lukewagner", - "chrisdavidmills", - "AndyLnd", - "sideshowbarker", - "lyrra", - "ukyo" - ] - }, - "WebAssembly/Rust_to_Wasm": { - "modified": "2020-12-03T13:43:48.765Z", - "contributors": [ - "blboyle", - "david.cdb004", - "mjsML", - "sheonhan", - "edude03", - "trevordmiller", - "mfuji09", - "jswisher", - "ExE-Boss", - "TerryOShea", - "codebam", - "toume", - "nvarner", - "chrisdavidmills" - ] - }, - "WebAssembly/Text_format_to_Wasm": { - "modified": "2020-10-13T12:24:14.646Z", - "contributors": [ - "mfuji09", - "Sunfishcode", - "JNa0", - "leela52452", - "ExE-Boss", - "julienw", - "chrisdavidmills", - "PushpitaPikuDey", - "sideshowbarker", - "KateSturmey", - "jmittert", - "kingysu", - "lukewagner" - ] - }, - "WebAssembly/Understanding_the_text_format": { - "modified": "2020-08-07T00:05:11.492Z", - "contributors": [ - "dgb23", - "chrisdavidmills", - "lukewagner", - "martin-t", - "cwebber", - "leela52452", - "adamkewley", - "AlanFoster", - "sideshowbarker", - "ofrobots", - "theSdev", - "ExE-Boss", - "puzpuzpuz", - "olegvs", - "antstei", - "mkelliher", - "kenrick95", - "KagamiH", - "maximebl", - "kingysu", - "ukyo", - "fanmingfei", - "AndreasHassing", - "BrainBuzzer", - "kdex" - ] - }, - "WebAssembly/Using_the_JavaScript_API": { - "modified": "2020-11-22T10:35:58.263Z", - "contributors": [ - "SphinxKnight", - "UltimateProGrammer", - "chrisdavidmills", - "justin.menking", - "FarooqAR", - "mcopejans", - "YuryDelendik", - "lukewagner", - "chrissantos1995", - "Jiang-Xuan" - ] - }, - "WebAssembly/existing_C_to_Wasm": { - "modified": "2019-10-25T23:35:34.819Z", - "contributors": [ - "leela52452", - "msobanjo", - "sideshowbarker", - "nylki", - "AntonOellerer", - "tomasdev", - "jpmedley", - "chrisdavidmills" - ] - }, "web/css/:user-valid": { "modified": "2020-10-15T21:10:41.856Z", "contributors": [ diff --git a/files/en-us/games/anatomy/index.md b/files/en-us/games/anatomy/index.md index fa81f0c08ad0240..ee5fee68589152d 100644 --- a/files/en-us/games/anatomy/index.md +++ b/files/en-us/games/anatomy/index.md @@ -214,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: diff --git a/files/en-us/games/index.md b/files/en-us/games/index.md index a9c9859298ef15e..41272c331fe4301 100644 --- a/files/en-us/games/index.md +++ b/files/en-us/games/index.md @@ -15,7 +15,7 @@ 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. +> 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 77d6d4d998e9a9d..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 @@ -100,7 +100,7 @@ The web is the first and the best choice for HTML games, but if you want to reac 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/techniques/2d_collision_detection/index.md b/files/en-us/games/techniques/2d_collision_detection/index.md index 591b9fe4c6e862a..a9e53f8130e1474 100644 --- a/files/en-us/games/techniques/2d_collision_detection/index.md +++ b/files/en-us/games/techniques/2d_collision_detection/index.md @@ -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_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 e07729f3833a7b6..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 + +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. -## 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 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: -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: +```html + +``` -- 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. +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. -## HTML structure +### HTML starter for A-Frame -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: +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,12 +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: @@ -62,13 +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 @@ -78,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;"> ``` @@ -242,18 +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 c6996160d270978..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`. + +## Development setup + +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. -To start developing with Babylon.js, you don't need much. 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 Babylon.js engine](https://doc.babylonjs.com/setup/frameworkPackages/frameworkVers/) inside that directory. +Alternatively, you can load Babylon.js from a CDN: + +```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 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. +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 structure +### HTML starter for Babylon.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 @@ -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 @@ -104,8 +119,7 @@ const camera = new BABYLON.FreeCamera( 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 @@ -129,10 +143,9 @@ Now the scene is properly rendering we can start adding 3D shapes to it. To spee 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: @@ -155,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 @@ -197,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; @@ -204,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 @@ -256,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 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: + +```html hidden live-sample___babylon-js-animation + + +``` -{{JSFiddleEmbed("https://jsfiddle.net/end3r/8r66fdvp/","","350")}} +```js live-sample___babylon-js-animation +const canvas = document.getElementById("render-canvas"); +const engine = new BABYLON.Engine(canvas, true, { + preserveDrawingBuffer: false, + alpha: true, +}); + +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; + +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 f426366e52cf110..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 @@ -77,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 @@ -97,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 aaf03d0ef0a9aec..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. -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. +> [!NOTE] +> This guide was last updated in November 2024, and is compatible with PlayCanvas version `2.2.2`. -## Environment setup +## Development setup -To start developing with PlayCanvas, you don't need much. You should start off by: +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. -- 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'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: -## HTML structure +```html + +``` -Here's the HTML structure we will use. +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 starter for PlayCanvas + +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,16 +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 @@ -116,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 @@ -135,36 +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. -> [!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. +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`. -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`. +## PlayCanvas shape example -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: +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: -![Blue cube on a gray background rendered with PlayCanvas.](cube-playcanvas.png) +```html hidden live-sample___play-canvas-intro + + +``` -And here's the code we have created so far: +```js hidden live-sample___play-canvas-intro +const canvas = document.getElementById("application-canvas"); -{{JSFiddleEmbed("https://jsfiddle.net/end3r/cqs6pg3x/","","350")}} +// Start and init Application +const app = new pc.Application(canvas); +app.start(); +app.setCanvasFillMode(pc.FILLMODE_FILL_WINDOW); +app.setCanvasResolution(pc.RESOLUTION_AUTO); -You can also [check it out on GitHub](https://github.com/end3r/MDN-Games-3D/blob/gh-pages/PlayCanvas/cube.html). +// 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; + +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 @@ -190,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; @@ -206,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; @@ -214,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 @@ -266,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 with animated shapes. +You can click "Play" to edit the example in the MDN Playground: -Here's the final code listing, along with a viewable live example: +```html hidden live-sample___play-canvas-animation + + +``` + +```js hidden live-sample___play-canvas-animation +const canvas = document.getElementById("application-canvas"); -{{JSFiddleEmbed("https://jsfiddle.net/end3r/auvcLoc4/","","350")}} +// 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_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 f47088ba36062b0..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,20 +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. + +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. > [!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/). +> This guide was last updated in November 2024, and is compatible with Three.js version `r79`. -## Environment setup +## Development setup -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. +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. -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. +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 @@ -27,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 @@ -40,18 +49,19 @@ Here's the HTML structure we will use: MDN Games: Three.js demo - + +``` -{{JSFiddleEmbed("https://jsfiddle.net/end3r/bwup75fa/","","350")}} +```js hidden live-sample___three-js-intro +const WIDTH = window.innerWidth; +const HEIGHT = window.innerHeight; -You can also [check it out on GitHub](https://github.com/end3r/MDN-Games-3D/blob/gh-pages/Three.js/cube.html). +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); +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); + +function render() { + requestAnimationFrame(render); + renderer.render(scene, camera); +} +render(); +``` + +```css hidden live-sample___three-js-intro +body, +canvas { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-size: 0; +} +``` + +{{embedlivesample("three-js-intro", "", "400px")}} ## More shapes and materials @@ -199,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: @@ -214,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. @@ -230,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 @@ -250,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; @@ -265,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/audio_for_web_games/index.md b/files/en-us/games/techniques/audio_for_web_games/index.md index a21425554bb5e9d..d2593d6b52808bd 100644 --- a/files/en-us/games/techniques/audio_for_web_games/index.md +++ b/files/en-us/games/techniques/audio_for_web_games/index.md @@ -143,7 +143,7 @@ The advantage is that we can prime one piece of audio and have our sprites ready ```js const myAudio = document.createElement("audio"); -myAudio.src = "mysprite.mp3"; +myAudio.src = "my-sprite.mp3"; myAudio.play(); myAudio.pause(); ``` diff --git a/files/en-us/games/techniques/control_mechanisms/desktop_with_gamepad/index.md b/files/en-us/games/techniques/control_mechanisms/desktop_with_gamepad/index.md index da104d7f69b9791..f75e1fb5aa5bdf8 100644 --- a/files/en-us/games/techniques/control_mechanisms/desktop_with_gamepad/index.md +++ b/files/en-us/games/techniques/control_mechanisms/desktop_with_gamepad/index.md @@ -346,9 +346,9 @@ if (gamepadAPI.buttonPressed("B")) { } ``` -## The paused and gameover states +## The paused and game-over states -We already learned how to control the whole lifecycle of the game: pausing the gameplay, restarting it, or getting back to the main menu. It works smooth on mobile and desktop, and adding gamepad controls is just as straightforward — in the `update()` function, we check to see if the current state status is `paused` — if so, the relevant actions are enabled: +We already learned how to control the whole lifecycle of the game: pausing the gameplay, restarting it, or getting back to the main menu. It works smooth on mobile and desktop, and adding gamepad controls is just as straightforward — in the `update()` function, we check to see if the current state status is "paused" — if so, the relevant actions are enabled: ```js if (GamepadAPI.buttons.pressed("Start")) { @@ -360,7 +360,7 @@ if (GamepadAPI.buttons.pressed("Back")) { } ``` -Similarly, when the `gameover` state status is active, then we can allow the user to restart the game instead of continuing it: +Similarly, when the "game-over" state status is active, then we can allow the user to restart the game instead of continuing it: ```js if (GamepadAPI.buttons.pressed("Start")) { diff --git a/files/en-us/games/techniques/control_mechanisms/other/index.md b/files/en-us/games/techniques/control_mechanisms/other/index.md index abbc4f722173692..463c0375a3bbde1 100644 --- a/files/en-us/games/techniques/control_mechanisms/other/index.md +++ b/files/en-us/games/techniques/control_mechanisms/other/index.md @@ -72,7 +72,7 @@ You can see it in action by watching [this video](https://www.youtube.com/watch? Have you ever thought about controlling a game only with your hands? It's possible with [Leap Motion](https://www.ultraleap.com/), an immersive controller for games and apps. -Leapmotion is becoming more and more popular due to very good integration with VR headsets — demoing [Rainbow Membrane](https://mozilla.github.io/rainbow/) on an Oculus Rift with Leap Motion attached to it was voted one of the best WebVR experiences by JavaScript developers visiting demo booths at conferences around the world. +Leap Motion is becoming more and more popular due to very good integration with VR headsets — demoing [Rainbow Membrane](https://mozilla.github.io/rainbow/) on an Oculus Rift with Leap Motion attached to it was voted one of the best WebVR experiences by JavaScript developers visiting demo booths at conferences around the world. As well as being great for virtual interfaces, it can also be used for a casual 2D gaming experiences. It would be very difficult to do everything with only your hands, but it's totally doable for the simple Captain Roger's gameplay — steering the ship and shooting the bullets. @@ -158,15 +158,15 @@ The `diff` would be the difference between the initial position of the hand and This approach won't give us the full flexibility of using a Gamepad, or even Leap Motion, but it's definitely an interesting, unconventional alternative. You can use it to scroll a page hands-free, or play theremin, but it should also be enough to move the ship up and down the screen if implemented correctly. -## MaKey MaKey +## Makey Makey -If you want to go completely bananas you can use [MaKey MaKey](https://makeymakey.com/), a board that can turn anything into a controller — it's all about connecting real-world, conductive objects to a computer and using them as touch interfaces. +If you want to go completely bananas you can use [Makey Makey](https://makeymakey.com/), a board that can turn anything into a controller — it's all about connecting real-world, conductive objects to a computer and using them as touch interfaces. ![Controlling a banana piano using Makey Makey.](controls-banana.png) Check out the [banana piano video](https://www.youtube.com/watch?v=_DWQ6ce2Ags), and be sure to visit the [quick start guide](https://learn.sparkfun.com/tutorials/makey-makey-quickstart-guide) for all the needed info. -There's even a [Cylon.js-supported Makey Button functionality](https://cylonjs.com/documentation/drivers/makey-button/) inspired by the MaKey MaKey board, so you can use the popular Cylon robotics framework for your experiments with Arduino or Raspberry Pi. Connecting the boards and using them may look like this: +There's even a [Cylon.js-supported Makey Button functionality](https://cylonjs.com/documentation/drivers/makey-button/) inspired by the Makey Makey board, so you can use the popular Cylon robotics framework for your experiments with Arduino or Raspberry Pi. Connecting the boards and using them may look like this: ```js const Cylon = require("cylon"); diff --git a/files/en-us/games/techniques/tilemaps/index.md b/files/en-us/games/techniques/tilemaps/index.md index d96511c9995b60c..456185408c7f465 100644 --- a/files/en-us/games/techniques/tilemaps/index.md +++ b/files/en-us/games/techniques/tilemaps/index.md @@ -133,4 +133,4 @@ In fast games that might still not be enough. An alternative method would be to - [Demos and source code](https://mozdevs.github.io/gamedev-js-tiles/) - [Grid parts and relationships](https://www.redblobgames.com/grids/parts/) by Amit Patel (May 2021) - - [Isometric graphics in videogames](https://en.wikipedia.org/wiki/Isometric_graphics_in_video_games_and_pixel_art) (Wikipedia) + - [Isometric graphics in video games](https://en.wikipedia.org/wiki/Isometric_graphics_in_video_games_and_pixel_art) (Wikipedia) diff --git a/files/en-us/games/techniques/tilemaps/square_tilemaps_implementation_colon__scrolling_maps/index.md b/files/en-us/games/techniques/tilemaps/square_tilemaps_implementation_colon__scrolling_maps/index.md index ddbee59cf44ac30..f4e19f9d4010054 100644 --- a/files/en-us/games/techniques/tilemaps/square_tilemaps_implementation_colon__scrolling_maps/index.md +++ b/files/en-us/games/techniques/tilemaps/square_tilemaps_implementation_colon__scrolling_maps/index.md @@ -19,7 +19,7 @@ Regardless of the type of camera, we would always need information regarding its - `x` and `y`: The current position of the camera. In this implementation, we are assuming that `(x,y)` points to the top left corner of visible portion of the map. - `width` and `height`: The size of the camera's viewport. -- `maxX` and `maxY`: The limit for the camera's position — The lower limit will nearly always be (0,0), and in this case the upper limit is equal to the size of the world minus the size of the camera's viewport. +- `maxX` and `maxY`: The limit for the camera's position — The lower limit will nearly always be `(0,0)`, and in this case the upper limit is equal to the size of the world minus the size of the camera's viewport. ## Rendering the map diff --git a/files/en-us/games/tutorials/2d_breakout_game_phaser/index.md b/files/en-us/games/tutorials/2d_breakout_game_phaser/index.md index 1dff3c1ff633907..502a79ed08d6799 100644 --- a/files/en-us/games/tutorials/2d_breakout_game_phaser/index.md +++ b/files/en-us/games/tutorials/2d_breakout_game_phaser/index.md @@ -12,7 +12,7 @@ In this step-by-step tutorial, we create a simple mobile **MDN Breakout** game w Every step has editable, live samples available to play with, so you can see what the intermediate stages should look like. You will learn the basics of using the Phaser framework to implement fundamental game mechanics like rendering and moving images, collision detection, control mechanisms, framework-specific helper functions, animations and tweens, and winning and losing states. -To get the most out of this series of articles you should already have basic to intermediate [JavaScript](/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics) knowledge. After working through this tutorial, you should be able to build your own simple Web games with Phaser. +To get the most out of this series of articles you should already have basic to intermediate [JavaScript](/en-US/docs/Learn_web_development/Getting_started/Your_first_website/Adding_interactivity) knowledge. After working through this tutorial, you should be able to build your own simple Web games with Phaser. ![Gameplay screen from the game MDN Breakout created with Phaser where you can use your paddle to bounce the ball and destroy the brick field, with keeping the points and lives.](mdn-breakout-phaser.png) @@ -28,7 +28,7 @@ All the lessons — and the different versions of the [MDN Breakout game](https: 6. [Bounce off the walls](/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser/Bounce_off_the_walls) 7. [Player paddle and controls](/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser/Player_paddle_and_controls) 8. [Game over](/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser/Game_over) -9. [Build the brickfield](/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser/Build_the_brick_field) +9. [Build the brick field](/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser/Build_the_brick_field) 10. [Collision detection](/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser/Collision_detection) 11. [The score](/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser/The_score) 12. [Win the game](/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser/Win_the_game) diff --git a/files/en-us/games/tutorials/2d_breakout_game_phaser/load_the_assets_and_print_them_on_screen/index.md b/files/en-us/games/tutorials/2d_breakout_game_phaser/load_the_assets_and_print_them_on_screen/index.md index 244b152ded1cd5f..1c3b4a0d825f82c 100644 --- a/files/en-us/games/tutorials/2d_breakout_game_phaser/load_the_assets_and_print_them_on_screen/index.md +++ b/files/en-us/games/tutorials/2d_breakout_game_phaser/load_the_assets_and_print_them_on_screen/index.md @@ -6,7 +6,7 @@ page-type: guide {{GamesSidebar}} -{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Scaling", "Games/Workflows/2D_Breakout_game_Phaser/Move the ball")}} +{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Scaling", "Games/Workflows/2D_Breakout_game_Phaser/Move_the_ball")}} This is the **3rd step** out of 16 in the [Gamedev Phaser tutorial](/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser). You can find the source code as it should look after completing this lesson at [Gamedev-Phaser-Content-Kit/demos/lesson03.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson03.html). @@ -58,4 +58,4 @@ You can check the finished code for this lesson for yourself in the live demo be Printing out the ball was easy; next, we'll try [moving the ball](/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser/Move_the_ball) on screen. -{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Scaling", "Games/Workflows/2D_Breakout_game_Phaser/Move the ball")}} +{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Scaling", "Games/Workflows/2D_Breakout_game_Phaser/Move_the_ball")}} diff --git a/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.md b/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.md index 0c090e4d3732821..ff75aae02ffde30 100644 --- a/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.md +++ b/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.md @@ -132,7 +132,7 @@ ctx.closePath(); ctx.beginPath(); ctx.rect(160, 10, 100, 40); -ctx.strokeStyle = "rgba(0, 0, 255, 0.5)"; +ctx.strokeStyle = "rgb(0 0 255 / 0.5)"; ctx.stroke(); ctx.closePath(); ``` diff --git a/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.md b/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.md index ac89b7750016d0a..784579b62e6c891 100644 --- a/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.md +++ b/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.md @@ -67,7 +67,7 @@ drawLives(); ## Improving rendering with requestAnimationFrame() -Now let's work on something that is not connected to the game mechanics, but to the way it is being rendered. {{domxref("window.requestAnimationFrame", "requestAnimationFrame")}} helps the browser render the game better than the fixed frame rate we currently have implemented using {{domxref("setInterval()")}}. Replace the following line: +Now let's work on something that is not connected to the game mechanics, but to the way it is being rendered. {{domxref("Window.requestAnimationFrame", "requestAnimationFrame()")}} helps the browser render the game better than the fixed frame rate we currently have implemented using {{domxref("Window.setInterval", "setInterval()")}}. Replace the following line: ```js interval = setInterval(draw, 10); diff --git a/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/index.md b/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/index.md index 2e1957ad5353e35..b751409e3563482 100644 --- a/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/index.md +++ b/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/index.md @@ -12,7 +12,7 @@ In this step-by-step tutorial we create an **MDN Breakout** game written entirel Every step has editable, live samples available to play with so you can see what the intermediate stages should look like. You will learn the basics of using the {{htmlelement("canvas")}} element to implement fundamental game mechanics like rendering and moving images, collision detection, control mechanisms, and winning and losing states. -To get the most out of this series of articles you should already have basic to intermediate [JavaScript](/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics) knowledge. After working through this tutorial you should be able to build your own Web games. +To get the most out of this series of articles you should already have basic to intermediate [JavaScript](/en-US/docs/Learn_web_development/Getting_started/Your_first_website/Adding_interactivity) knowledge. After working through this tutorial you should be able to build your own Web games. ![Gameplay screen from the game MDN Breakout where you can use your paddle to bounce the ball and destroy the brick field, with keeping the score and lives.](mdn-breakout-gameplay.png) diff --git a/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.md b/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.md index 39bd8f562782367..ba224eac8fdfd62 100644 --- a/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.md +++ b/files/en-us/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.md @@ -15,7 +15,7 @@ You already know how to draw a ball from working through the previous article, s ## Defining a drawing loop To keep constantly updating the canvas drawing on each frame, we need to define a drawing function that will run over and over again, with a different set of variable values each time to change sprite positions, etc. You can run a function over and over again using a JavaScript timing function. -Later on in the tutorial, we'll see how {{domxref("window.requestAnimationFrame()", "requestAnimationFrame()")}} helps with drawing, but we'll start with {{domxref("setInterval()")}} at first to create some looping logic. +Later on in the tutorial, we'll see how {{domxref("Window.requestAnimationFrame", "requestAnimationFrame()")}} helps with drawing, but we'll start with {{domxref("Window.setInterval", "setInterval()")}} at first to create some looping logic. Delete all the JavaScript you currently have inside your HTML file except for the first two lines, and add the following below them. The `draw()` function will be executed within `setInterval` every 10 milliseconds: diff --git a/files/en-us/games/tutorials/html5_gamedev_phaser_device_orientation/index.md b/files/en-us/games/tutorials/html5_gamedev_phaser_device_orientation/index.md index 050b19aba30ebe6..9c3107f91442f32 100644 --- a/files/en-us/games/tutorials/html5_gamedev_phaser_device_orientation/index.md +++ b/files/en-us/games/tutorials/html5_gamedev_phaser_device_orientation/index.md @@ -28,7 +28,7 @@ You can open the index file in your favorite browser to launch the game and try - `img`: All the images that we will use in the game. - `src`: The JavaScript files with all the source code of the game defined inside. -- `audio:` The sound files used in the game. +- `audio`: The sound files used in the game. ## Setting up the Canvas diff --git a/files/en-us/glossary/accessibility/index.md b/files/en-us/glossary/accessibility/index.md index 984c1616e8174be..fb80e5200248cb8 100644 --- a/files/en-us/glossary/accessibility/index.md +++ b/files/en-us/glossary/accessibility/index.md @@ -15,7 +15,7 @@ Web accessibility is formally defined and discussed at the {{Glossary("W3C")}} t ## See also - [Accessibility](/en-US/docs/Web/Accessibility) -- [Learn accessibility](/en-US/docs/Learn/Accessibility) +- [Learn accessibility](/en-US/docs/Learn_web_development/Core/Accessibility) - [ARIA](/en-US/docs/Web/Accessibility/ARIA) - [Web accessibility](https://en.wikipedia.org/wiki/Web_accessibility) on Wikipedia - [Web Accessibility Initiative (WAI)](https://www.w3.org/WAI/) on W3C diff --git a/files/en-us/glossary/accessibility_tree/index.md b/files/en-us/glossary/accessibility_tree/index.md index 0877589313e4a65..e52b64c59c2a74d 100644 --- a/files/en-us/glossary/accessibility_tree/index.md +++ b/files/en-us/glossary/accessibility_tree/index.md @@ -28,7 +28,7 @@ While still in draft form within the Web Incubator Community Group as of April 2 ## See also - [Accessibility](/en-US/docs/Web/Accessibility) -- [Learn accessibility](/en-US/docs/Learn/Accessibility) +- [Learn accessibility](/en-US/docs/Learn_web_development/Core/Accessibility) - [Web accessibility](https://en.wikipedia.org/wiki/Web_accessibility) on Wikipedia - [Web Accessibility In Mind](https://webaim.org/) - [ARIA](/en-US/docs/Web/Accessibility/ARIA) diff --git a/files/en-us/glossary/accessible_description/index.md b/files/en-us/glossary/accessible_description/index.md index 78ec0529f72299c..cca7a93980d19fb 100644 --- a/files/en-us/glossary/accessible_description/index.md +++ b/files/en-us/glossary/accessible_description/index.md @@ -30,7 +30,7 @@ For HTML elements, if an element doesn't have an accessible description, the des - {{htmlelement("input")}} buttons (with type attribute `button`, `submit` or `reset`) are described by their `value` attribute's value. - In SVG, the content of the [``](/en-US/docs/Web/SVG/Element/desc) element, if present, otherwise, the text contained in descendant text container elements (i.e. [``](/en-US/docs/Web/SVG/Element/text)), if they are not already used for the {{glossary("accessible name")}} -4. If none of the above provide a description, the [`title`](/en-US/docs/Web/HTML/Global_attributes#title) attribute is used, if the `title` is not the {{glossary("accessible name")}} for that element. +4. If none of the above provide a description, the [`title`](/en-US/docs/Web/HTML/Global_attributes/title) attribute is used, if the `title` is not the {{glossary("accessible name")}} for that element. 5. If none of the above defines an accessible description, the accessible description is empty. @@ -40,7 +40,7 @@ The steps for defining accessible description in HTML are defined in the [HTML-A - [Accessible Name and Description Computation 1.2 (accname)](https://w3c.github.io/accname/#mapping_additional_nd_description) - [Accessibility](/en-US/docs/Web/Accessibility) -- [Learn accessibility](/en-US/docs/Learn/Accessibility) +- [Learn accessibility](/en-US/docs/Learn_web_development/Core/Accessibility) - [Web accessibility](https://en.wikipedia.org/wiki/Web_accessibility) on Wikipedia - [Web Accessibility In Mind](https://webaim.org/) - [ARIA](/en-US/docs/Web/Accessibility/ARIA) diff --git a/files/en-us/glossary/accessible_name/index.md b/files/en-us/glossary/accessible_name/index.md index d573dcb58d1eb39..a958f138a2c367a 100644 --- a/files/en-us/glossary/accessible_name/index.md +++ b/files/en-us/glossary/accessible_name/index.md @@ -18,7 +18,7 @@ Other elements get their accessible name from the content of associated elements For some elements, the accessible name comes from the element's attributes; for example, the `alt` attribute in the case of {{HTMLElement("img")}}. Given `banana`, the image's accessible name is "banana." -To create an association between visible content and an element or multiple text nodes and an element, the [`aria-labeledby`](/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-labelledby) attribute can be used. If there is no visible text to associate with a UI element needing an accessible name, the [`aria-label`](/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label) attribute can be used. Names should not be added to elements marking up inline text, like {{HTMLElement("code")}}, {{HTMLElement("del")}}, and {{HTMLElement("mark")}}. +To create an association between visible content and an element or multiple text nodes and an element, the [`aria-labelledby`](/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-labelledby) attribute can be used. If there is no visible text to associate with a UI element needing an accessible name, the [`aria-label`](/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label) attribute can be used. Names should not be added to elements marking up inline text, like {{HTMLElement("code")}}, {{HTMLElement("del")}}, and {{HTMLElement("mark")}}. Many elements, such as sections of textual content, don't need an accessible name. All controls should have an accessible name. All images that convey information and aren't purely presentational do too. @@ -30,7 +30,7 @@ Assistive technologies provide users with the accessibility name property, which - [ARIA attribute](/en-US/docs/Web/Accessibility/ARIA/Attributes) - [Accessible Name and Description Computation 1.2 (accname)](https://w3c.github.io/accname/#mapping_additional_nd_description) - [Accessibility](/en-US/docs/Web/Accessibility) -- [Learn accessibility](/en-US/docs/Learn/Accessibility) +- [Learn accessibility](/en-US/docs/Learn_web_development/Core/Accessibility) - [Web accessibility](https://en.wikipedia.org/wiki/Web_accessibility) on Wikipedia - [Web Accessibility In Mind](https://webaim.org/) - [ARIA](/en-US/docs/Web/Accessibility/ARIA) diff --git a/files/en-us/glossary/advance_measure/index.md b/files/en-us/glossary/advance_measure/index.md index df8cb8b44c56eb0..3f27431b9bece7a 100644 --- a/files/en-us/glossary/advance_measure/index.md +++ b/files/en-us/glossary/advance_measure/index.md @@ -14,5 +14,5 @@ The _advance measure_ of unit `ch` is either the width or height of character "0 ## See also - {{cssxref("<length>")}} -- [Learn: CSS values and units](/en-US/docs/Learn/CSS/Building_blocks/Values_and_units) +- [Learn: CSS values and units](/en-US/docs/Learn_web_development/Core/Styling_basics/Values_and_units) - [TextMetrics API](/en-US/docs/Web/API/TextMetrics) diff --git a/files/en-us/glossary/ajax/index.md b/files/en-us/glossary/ajax/index.md index 7236ca55772d496..84d83c1a51595cf 100644 --- a/files/en-us/glossary/ajax/index.md +++ b/files/en-us/glossary/ajax/index.md @@ -16,7 +16,7 @@ This technique is so common in modern web development that the specific term "Aj ## See also -- [Fetching data from the server](/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data) +- [Learn: Making network requests with JavaScript](/en-US/docs/Learn_web_development/Core/Scripting/Network_requests) - [Fetch API](/en-US/docs/Web/API/Fetch_API) - Related glossary terms: - {{Glossary("SPA", "Single-page application")}} diff --git a/files/en-us/glossary/algorithm/index.md b/files/en-us/glossary/algorithm/index.md index c6e83fb4b9d0e9a..8b481fb7569d04e 100644 --- a/files/en-us/glossary/algorithm/index.md +++ b/files/en-us/glossary/algorithm/index.md @@ -12,7 +12,7 @@ In other words, an algorithm is a means of describing a way to solve a problem s For example: -- A cooking recipe is a simple algorithm for humans. +- A cooking recipe is an algorithm for humans. - A sorting algorithm is often used in computer programming to explain to a machine how to sort data. Common algorithms are Pathfinding algorithms such as the optimization [Traveling Salesman Problem](https://optimization.cbe.cornell.edu/index.php?title=Traveling_salesman_problem), [Tree Traversal algorithms](https://brilliant.org/wiki/traversals/), and so on. diff --git a/files/en-us/glossary/alpha/index.md b/files/en-us/glossary/alpha/index.md index a977201ce7405ff..b576ef16ba896fe 100644 --- a/files/en-us/glossary/alpha/index.md +++ b/files/en-us/glossary/alpha/index.md @@ -17,7 +17,7 @@ As you can see, the color without an alpha channel completely blocks the backgro ## See also - [CSS colors](/en-US/docs/Web/CSS/CSS_colors) -- [CSS values and units introduction](/en-US/docs/Learn/CSS/Building_blocks/Values_and_units) +- [Learn: Values and units](/en-US/docs/Learn_web_development/Core/Styling_basics/Values_and_units) - [Image file type and format guide](/en-US/docs/Web/Media/Formats/Image_types) - [Alpha compositing](https://en.wikipedia.org/wiki/Alpha_compositing) on Wikipedia - [RGBA color model](https://en.wikipedia.org/wiki/RGBA_color_model) on Wikipedia diff --git a/files/en-us/glossary/application_context/index.md b/files/en-us/glossary/application_context/index.md index 1156f35a3b40078..a536ec6935c2ab2 100644 --- a/files/en-us/glossary/application_context/index.md +++ b/files/en-us/glossary/application_context/index.md @@ -1,18 +1,30 @@ --- -title: Application Context +title: Application context slug: Glossary/Application_context page-type: glossary-definition --- {{GlossarySidebar}} -An **application context** is a top-level {{glossary("browsing context")}} that has a [manifest](/en-US/docs/Web/Manifest) applied to it. +**Application context** refers to the top-level {{glossary("browsing context")}} of a [web application](/en-US/docs/Web/Progressive_web_apps). +It determines how an app's browsing context, such as a tab or a window, is presented and behaves. -If an application context is created as a result of the user agent being asked to navigate to a deep link, the user agent must immediately navigate to the deep link with replacement enabled. Otherwise, when the application context is created, the user agent must immediately navigate to the start URL with replacement enabled. +Web developers define the application context in the [web app's manifest file](/en-US/docs/Web/Manifest). +They use the [`scope`](/en-US/docs/Web/Manifest/Reference/scope) member in the manifest to specify the set of URLs that are considered part of the application context and to which the manifest applies. -Please note that the start URL is not necessarily the value of the start_url member: the user or user agent could have changed it when the application was added to home-screen or otherwise bookmarked. +The manifest is applied after the application context is created but before navigation begins to either a start URL or a deep link. +A **start URL** is the initial page of the web app. +A **deep link** is a URL that directs users to a specific page within the web app, bypassing the home page. +The application context ensures that the app's defined behavior and presentation are maintained within its scope. + +When an application context is created, browsers must immediately navigate to a start URL or a deep link. +This navigation replaces the current entry in the browsing history. +If the application context is created to navigate to a deep link, the browser navigates directly to that deep link; otherwise, it navigates to the start URL. + +Note that the start URL is not necessarily the value of the [`start_url`](/en-US/docs/Web/Manifest/Reference/start_url) member in the manifest. Browsers may ignore the specified `start_url` or may allow users to change its value when adding the web app to their device's home screen or bookmarking it. ## See also +- [`scope`](/en-US/docs/Web/Manifest/Reference/scope) +- [Web app manifests](/en-US/docs/Web/Manifest) - [Progressive web apps (PWA)](/en-US/docs/Web/Progressive_web_apps) -- [`scope`](/en-US/docs/Web/Manifest/scope) diff --git a/files/en-us/glossary/aria/index.md b/files/en-us/glossary/aria/index.md index 1b5c13a2aade362..3801c52615b01d0 100644 --- a/files/en-us/glossary/aria/index.md +++ b/files/en-us/glossary/aria/index.md @@ -17,7 +17,7 @@ The specification, for example, allows you to add the attribute `role="alert"` t - [Accessible Rich Internet Applications (WAI-ARIA)](https://w3c.github.io/aria/) - [ARIA Authoring Practices Guide (APG)](https://www.w3.org/WAI/ARIA/apg/) - [Accessibility](/en-US/docs/Web/Accessibility) -- [Learn accessibility](/en-US/docs/Learn/Accessibility) +- [Learn: Accessibility](/en-US/docs/Learn_web_development/Core/Accessibility) - Related glossary terms - {{Glossary("Accessibility")}} - {{Glossary("WAI")}} diff --git a/files/en-us/glossary/aspect_ratio/index.md b/files/en-us/glossary/aspect_ratio/index.md index c292b90ccdf8da4..d79062177906315 100644 --- a/files/en-us/glossary/aspect_ratio/index.md +++ b/files/en-us/glossary/aspect_ratio/index.md @@ -6,7 +6,7 @@ page-type: glossary-definition {{GlossarySidebar}} -An **aspect ratio** is the proportional relationship between an element or {{glossary("viewport")}}'s width and height, and is represented as a ratio or two numbers. +An **aspect ratio** is the proportional relationship between an element or {{glossary("viewport")}}'s width and height. It is represented as a {{cssxref("ratio")}} of two numbers. Having an aspect ratio, whether it's an inherent aspect ratio like with images and videos or if it's extrinsically set, maintains the intended proportions of an element. You can also query an element or viewport's aspect, which is useful in developing flexible components and layouts. diff --git a/files/en-us/glossary/asynchronous/index.md b/files/en-us/glossary/asynchronous/index.md index 9293338584b836a..31b4ae55111b302 100644 --- a/files/en-us/glossary/asynchronous/index.md +++ b/files/en-us/glossary/asynchronous/index.md @@ -16,16 +16,16 @@ Asynchronous communication is a method of exchanging messages in which the sendi Email is a type of asynchronous human communication. A sender sends an email. The recipient reads the email and responds to it (or not) at their convenience, not necessarily right away. All parties can continue to send and receive messages at any time. Emails don't have to be scheduled in a particular sequence. -In asynchronous software, making a request, such as to a server, does not block other processes while waiting for the response. The software can continue performing other tasks. For example, in [promise-based APIs](/en-US/docs/Learn/JavaScript/Asynchronous/Implementing_a_promise-based_API), {{JSxRef("Promise")}} objects are created for long operations. After the operation is complete, the promise is handled. With promises, the software doesn't have to wait for the operation to finish. +In asynchronous software, making a request, such as to a server, does not block other processes while waiting for the response. The software can continue performing other tasks. For example, in [promise-based APIs](/en-US/docs/Learn_web_development/Extensions/Async_JS/Implementing_a_promise-based_API), {{JSxRef("Promise")}} objects are created for long operations. After the operation is complete, the promise is handled. With promises, the software doesn't have to wait for the operation to finish. ## In software design Asynchronous software design expands upon the concept by building code that allows a program to ask that a task be performed alongside the original task (or tasks), without stopping to wait for the task to complete. When the secondary task is completed, the original task is notified using an agreed-upon mechanism so that it knows the work is done, and that the result, if any, is available. -There are a number of programming techniques for implementing asynchronous software. See the article [Asynchronous JavaScript](/en-US/docs/Learn/JavaScript/Asynchronous) for an introduction to them. +There are a number of programming techniques for implementing asynchronous software. See the article [Asynchronous JavaScript](/en-US/docs/Learn_web_development/Extensions/Async_JS) for an introduction to them. ## See also -- [Fetching data from the server](/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data) (Learning Area) +- [Learn: Making network requests with JavaScript](/en-US/docs/Learn_web_development/Core/Scripting/Network_requests) (Learning Area) - Related glossary terms: - {{glossary("Synchronous")}} diff --git a/files/en-us/glossary/authenticator/index.md b/files/en-us/glossary/authenticator/index.md index 1b60707bfe247dc..9e3dc94dead546b 100644 --- a/files/en-us/glossary/authenticator/index.md +++ b/files/en-us/glossary/authenticator/index.md @@ -8,7 +8,7 @@ page-type: glossary-definition An **authenticator** is an entity that can perform the cryptographic operations needed to register and authenticate users, and securely store the cryptographic keys used in these operations. -An authenticator might be implemented in hardware or software. It may be integrated into the device, like the [Touch ID](https://en.wikipedia.org/wiki/Touch_ID) system in Apple devices or the [Windows Hello](https://en.wikipedia.org/wiki/Windows_10#System_security) system, or it might be a removable module like a [Yubikey](https://en.wikipedia.org/wiki/YubiKey). +An authenticator might be implemented in hardware or software. It may be integrated into the device, like the [Touch ID](https://en.wikipedia.org/wiki/Touch_ID) system in Apple devices or the [Windows Hello](https://en.wikipedia.org/wiki/Windows_10#System_security) system, or it might be a removable module like a [YubiKey](https://en.wikipedia.org/wiki/YubiKey). The [Web Authentication API](/en-US/docs/Web/API/Web_Authentication_API) makes authenticators available to websites as part of the [Credential Management API](/en-US/docs/Web/API/Credential_Management_API). This enables websites to use authenticators to generate {{glossary("credential", "credentials")}} based on {{glossary("public-key cryptography")}}, which can then be used to sign users into websites. diff --git a/files/en-us/glossary/base64/index.md b/files/en-us/glossary/base64/index.md index da1403c3a89fc4e..ef8abd1b9a8eeec 100644 --- a/files/en-us/glossary/base64/index.md +++ b/files/en-us/glossary/base64/index.md @@ -28,9 +28,21 @@ Each Base64 digit represents 6 bits of data. So, three 8-bit bytes of the input This means that the Base64 version of a string or file is typically roughly a third larger than its source (the exact size increase depends on various factors, such as the absolute length of the string, its length modulo 3, and whether padding characters are used). +## Last chunk + +The base64 string can be partitioned into chunks of 4 characters, where the last chunk may have fewer than 4 characters. The last chunk may be padded with `=` characters so it's exactly 4 characters long. Excluding padding characters, the last chunk may be one of the following: + +- 2 characters: encodes 12 bits representing 1 byte (8 bits) of data +- 3 characters: encodes 18 bits representing 2 bytes (16 bits) of data +- 4 characters: encodes 24 bits representing 3 bytes (24 bits) of data + +In the first two cases, the characters may have 4 or 2 extra trailing bits that don't represent any data. In this case, [RFC 4648](https://datatracker.ietf.org/doc/html/rfc4648#section-3.5) requires encoders to set these bits to zero and decoders to optionally throw an error if they are not zero. For example, if the encoded data is a single byte `0b01010101`, then it needs two characters `0b010101` (`V`) and `0b010000` (`Q`), where the second character has 4 trailing bits set to zero. Decoding `VR==` (where the second character represents `0b010001`) technically results in the same byte `0b01010101`, but the decoder may throw an error due to the trailing bits not being zero. + ## JavaScript support -Browsers natively provide two JavaScript functions for decoding and encoding Base64 strings: +The {{jsxref("Uint8Array")}} class provides the {{jsxref("Uint8Array.fromBase64()")}}, {{jsxref("Uint8Array.prototype.toBase64()")}}, and {{jsxref("Uint8Array.prototype.setFromBase64()")}} methods for conversion to/from base64 strings. + +Browsers also natively provide two JavaScript functions for decoding and encoding Base64 strings: - {{domxref("Window.btoa()")}} (also {{domxref("WorkerGlobalScope.btoa()", "available in workers", "", "nocode")}}): creates a Base64-encoded ASCII string from a string of binary data ("btoa" should be read as "binary to ASCII"). - {{domxref("Window.atob()")}} (also {{domxref("WorkerGlobalScope.atob()", "available in workers", "", "nocode")}}): decodes a Base64-encoded string ("atob" should be read as "ASCII to binary"). @@ -40,62 +52,12 @@ Browsers natively provide two JavaScript functions for decoding and encoding Bas > > However, the byte-to-code-point correspondence only reliably holds true for code points up to `0x7f`. Furthermore, code points over `0xff` will cause `btoa` to throw an error due to exceeding the maximum value for 1 byte. The next section details how to work around this limitation when encoding arbitrary Unicode text. -## The "Unicode Problem" - -Since `btoa` interprets the code points of its input string as byte values, calling `btoa` on a string will cause a "Character Out Of Range" exception if a character's code point exceeds `0xff`. For use cases where you need to encode arbitrary Unicode text, it is necessary to first convert the string to its constituent bytes in {{glossary("UTF-8")}}, and then encode the bytes. - -The simplest solution is to use `TextEncoder` and `TextDecoder` to convert between UTF-8 and single-byte representations of the string: - -```js -function base64ToBytes(base64) { - const binString = atob(base64); - return Uint8Array.from(binString, (m) => m.codePointAt(0)); -} - -function bytesToBase64(bytes) { - const binString = Array.from(bytes, (byte) => - String.fromCodePoint(byte), - ).join(""); - return btoa(binString); -} - -// Usage -bytesToBase64(new TextEncoder().encode("a Ā 𐀀 文 🦄")); // "YSDEgCDwkICAIOaWhyDwn6aE" -new TextDecoder().decode(base64ToBytes("YSDEgCDwkICAIOaWhyDwn6aE")); // "a Ā 𐀀 文 🦄" -``` - -## Converting arbitrary binary data - -The `bytesToBase64` and `base64ToBytes` functions in the previous section can be used directly to convert between Base64 strings and [`Uint8Array`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)s. - -For better performance, asynchronous conversion between base64 data URLs is possible natively within the web platform via the [`FileReader`](/en-US/docs/Web/API/FileReader) and [`fetch`](/en-US/docs/Web/API/Fetch_API) APIs: - -```js -async function bytesToBase64DataUrl(bytes, type = "application/octet-stream") { - return await new Promise((resolve, reject) => { - const reader = Object.assign(new FileReader(), { - onload: () => resolve(reader.result), - onerror: () => reject(reader.error), - }); - reader.readAsDataURL(new File([bytes], "", { type })); - }); -} - -async function dataUrlToBytes(dataUrl) { - const res = await fetch(dataUrl); - return new Uint8Array(await res.arrayBuffer()); -} - -// Usage -await bytesToBase64DataUrl(new Uint8Array([0, 1, 2])); // "data:application/octet-stream;base64,AAEC" -await dataUrlToBytes("data:application/octet-stream;base64,AAEC"); // Uint8Array [0, 1, 2] -``` - ## See Also - JavaScript APIs: - {{domxref("Window.atob()")}} (also {{domxref("WorkerGlobalScope.atob()", "available in workers", "", "nocode")}}) - {{domxref("Window.btoa()")}} (also {{domxref("WorkerGlobalScope.btoa()", "available in workers", "", "nocode")}}) + - {{jsxref("Uint8Array")}} - [Data URLs](/en-US/docs/Web/URI/Schemes/data) - [Base64](https://en.wikipedia.org/wiki/Base64) on Wikipedia - Base64 Algorithm described in [RFC 4648](https://datatracker.ietf.org/doc/html/rfc4648) diff --git a/files/en-us/glossary/baseline/compatibility/index.md b/files/en-us/glossary/baseline/compatibility/index.md index 4b4c72f9e88d453..2c239a4c5012700 100644 --- a/files/en-us/glossary/baseline/compatibility/index.md +++ b/files/en-us/glossary/baseline/compatibility/index.md @@ -18,7 +18,7 @@ Baseline considers support in the following browsers: - Mozilla Firefox (Android) - Mozilla Firefox (desktop) -Baseline is a summary of browser support. It is not a substitute for accessibility, usability, performance, security, or other testing. Baseline may not tell if you if a feature works with: +Baseline is a summary of browser support. It is not a substitute for accessibility, usability, performance, security, or other testing. Baseline may not tell you if a feature works with: - Older devices and browser releases - Browsers not covered by the Baseline definition, such as operating system web views @@ -40,7 +40,7 @@ Features listed with **limited availability** are _not_ yet available in all bro ## See also -- [Cross browser testing](/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing) +- [Testing](/en-US/docs/Learn_web_development/Extensions/Testing) - [web-platform-dx/web-features repository](https://github.com/web-platform-dx/web-features) - [W3C WebDX Community Group](https://www.w3.org/community/webdx/) - [mdn/browser-compat-data repository](https://github.com/mdn/browser-compat-data) diff --git a/files/en-us/glossary/baseline/typography/index.md b/files/en-us/glossary/baseline/typography/index.md index 768a5d34f0cd3a7..64b22390066d86e 100644 --- a/files/en-us/glossary/baseline/typography/index.md +++ b/files/en-us/glossary/baseline/typography/index.md @@ -6,11 +6,14 @@ page-type: glossary-definition {{GlossarySidebar}} -The **baseline** is a term used in European and West Asian typography meaning an imaginary line upon which the most characters of a font rest. +A **baseline** is an imaginary line along the inline axis of a line box along which individual glyphs of text are aligned. Baselines guide the design of glyphs in a font and the alignment of glyphs from different fonts or font sizes when typesetting. -East Asian scripts have no baseline; each glyph sits in a square box, with neither ascenders nor descenders. When mixed with scripts with a low baseline, East Asian characters should be set so that the bottom of the character is between the baseline and the descender height. +The **alphabetic baseline** is the value of the CSS `baseline` keyword. The bottom of most alphabetic glyphs typically align with the alphabetic baseline; most characters of European and West Asian fonts rest _on top_ of the alphabetic baseline. + +Other writing systems have different baselines. For example, Tibetan and similar unicameral scripts with a strong but not absolute top edge are aligned to the bottom of a "hanging" baseline. East Asian scripts have no baseline; each glyph sits in a square box, with neither ascenders nor descenders. When mixed with scripts with a low baseline, East Asian characters should be set so that the bottom of the character is between the baseline and the descender height. ## See also -- [CSS box alignment](/en-US/docs/Web/CSS/CSS_box_alignment#types_of_alignment) +- [CSS box alignment](/en-US/docs/Web/CSS/CSS_box_alignment/Box_alignment#types_of_alignment) +- [CSS inline layout](/en-US/docs/Web/CSS/CSS_inline_layout) module - [Baseline (Typography)]() on Wikipedia diff --git a/files/en-us/glossary/bezier_curve/index.md b/files/en-us/glossary/bezier_curve/index.md index e55ced39c9327b7..633dccabe8d1681 100644 --- a/files/en-us/glossary/bezier_curve/index.md +++ b/files/en-us/glossary/bezier_curve/index.md @@ -17,5 +17,5 @@ To draw a quadratic Bézier curve, two imaginary lines are drawn, one from P tag) +slug: Glossary/blink_element +page-type: glossary-definition +--- + +{{GlossarySidebar}} + +The **`` element** (blink tag) is an obsolete HTML feature no longer supported by web browsers and no longer documented on MDN. It was used to make text content blink on and off (flash) continually. + +## Brief history + +In the early days of the web (the early- to mid-90s), there were not many features available for styling web pages. The [CSS](/en-US/docs/Web/CSS) specification (version 1) was first released in 1996 and not adopted consistently by browsers until much later. Before CSS, browsers experimented with several features to make particular text sections stand out and grab the user's attention. The `` element was one of these, introduced in early versions of [Netscape Navigator](/en-US/docs/Glossary/Netscape_Navigator); [Internet Explorer's](/en-US/docs/Glossary/Microsoft_Internet_Explorer) {{htmlelement("marquee")}} element was another. + +The `` element was apparently created after a conversation in a bar in Mountain View between Netscape engineer [Lou Montulli](https://en.wikipedia.org/wiki/Lou_Montulli) and colleagues. When he went into the office the next morning, he found that one of his fellow engineers had stayed up all night and implemented it ([read the story here](https://web.archive.org/web/20220331020029/http://www.montulli.org/theoriginofthe%3Cblink%3Etag)). + +While initially popular, `` became much maligned because of overuse; many people found it annoying. More importantly, it degrades readability and can be particularly problematic for users with visual impairments or [cognitive disorders](/en-US/docs/Web/Accessibility/Cognitive_accessibility) such as epilepsy or ADHD. It can be disorienting or, in the worst cases, even [trigger seizures](/en-US/docs/Web/Accessibility/Seizure_disorders). + +`` was never properly specified and never achieved significant cross-browser support. It can be considered a piece of web history. + +## Syntax + +The `` element was used like this: + +```html example-bad +In ancient browsers, I may have blinked +``` + +### Alternatives + +- The CSS {{cssxref("text-decoration-line")}} property has a `blink` value that should have the same effect, but most modern browsers ignore it. +- The JavaScript {{jsxref("String.blink()")}} method wraps a text string in `` tags but, as discussed earlier, this element is no longer supported anywhere. +- [CSS animations](/en-US/docs/Web/CSS/CSS_animations) could still be used to create blinking text. However, you should avoid blinking text on web pages for the reasons discussed above. + +## See also + +- [Blink element](https://en.wikipedia.org/wiki/Blink_element) on Wikipedia +- [WCAG 2.2.2: Pause, Stop, Hide](https://www.w3.org/WAI/WCAG21/Understanding/pause-stop-hide) +- [WCAG 2.3.1: Three Flashes or Below Threshold](https://www.w3.org/WAI/WCAG21/Understanding/three-flashes-or-below-threshold) diff --git a/files/en-us/glossary/boolean/html/index.md b/files/en-us/glossary/boolean/html/index.md index e296811a3dc4506..06577fcf0b8c0de 100644 --- a/files/en-us/glossary/boolean/html/index.md +++ b/files/en-us/glossary/boolean/html/index.md @@ -2,18 +2,17 @@ title: Boolean attribute (HTML) slug: Glossary/Boolean/HTML page-type: glossary-definition -spec-urls: https://html.spec.whatwg.org/#boolean-attributes --- {{GlossarySidebar}} -A **boolean attribute** in {{Glossary("HTML")}} is an {{glossary("attribute")}} that represents `true` or `false` values. If an HTML tag contains a boolean attribute - no matter the value of that attribute - the attribute is set to `true` on that element. If an HTML tag does not contain the attribute, the attribute is set to `false`. +A **boolean attribute** in {{Glossary("HTML")}} is an {{glossary("attribute")}} that represents `true` or `false` values. If an HTML tag contains a boolean attribute — no matter the value of that attribute — the attribute is set to `true` on that element. If an HTML tag does not contain the attribute, the attribute is set to `false`. -If the attribute is present, it can have one of the following values: +If the attribute is present, it can have one of the following forms: -- no value at all, e.g. `attribute` -- the empty string, e.g. `attribute=""` -- attribute's name itself, with no leading or trailing whitespace, e.g. `attribute="attribute"` +- the attribute name alone; e.g., `attribute`, meaning its implicit value is the empty string +- the attribute with a value of the empty string; e.g., `attribute=""` +- the attribute with a value of the attribute's name itself, with no leading or trailing whitespace and case ignored; e.g., `attribute="attribute"`, `attribute="ATTRIBUTE"` > [!NOTE] > The strings "true" and "false" are invalid values. To set the attribute to `false`, the attribute should be omitted altogether. Though modern browsers treat _any_ string value as `true`, you should not rely on that behavior. @@ -25,6 +24,7 @@ Here's an example of a HTML boolean attribute `checked`: + diff --git a/files/en-us/glossary/browsing_context/index.md b/files/en-us/glossary/browsing_context/index.md index 101647f3b8df7f7..54aebd029d36220 100644 --- a/files/en-us/glossary/browsing_context/index.md +++ b/files/en-us/glossary/browsing_context/index.md @@ -6,11 +6,19 @@ page-type: glossary-definition {{GlossarySidebar}} -A **browsing context** is an environment in which a browser displays a {{domxref("Document")}}. In modern browsers, it usually is a _tab_, but can be a _window_ or even only parts of a page, like a _frame_ or an _iframe_. +A **browsing context** is an environment in which a browser displays a {{domxref("Document")}}. +In modern browsers, it usually is a _tab_, but it can be a _window_, a _popup_, a [web application](/en-US/docs/Web/Progressive_web_apps), or even a part of a page such as a _frame_ or an _iframe_. Each browsing context has an origin (that of the active document) and an ordered history of previously displayed documents. +Communication and resource sharing between browsing contexts is constrained, in particular between cross-origin contexts. +For example, a {{domxref("BroadcastChannel")}} can only be opened and used to communicate between same origin-contexts. -Communication between browsing contexts is severely constrained. Between browsing contexts of the same origin, a {{domxref("BroadcastChannel")}} can be opened and used. +A browsing context may be part of a **browsing context group**, which is a set of **browsing contexts** that share common context like history, cookies, storage mechanisms and so on. +The browsing contexts within a group retain references to each other and can therefore inspect each other's global objects and post each other messages. + +By default a document opened from a browser context group is opened in the same group whether or not it is cross-origin or same-origin. +The {{httpheader("Cross-Origin-Opener-Policy")}} can be used to control whether the document is instead opened in its own new browsing context group and {{domxref("Window.crossOriginIsolated","cross-origin isolated","","no code")}} from other contexts (in particular cross-origin contexts). +The can mitigate the risk of cross-origin attacks and the side-channel attacks referred to as [XS-Leaks](https://xsleaks.dev/). ## See also diff --git a/files/en-us/glossary/bun/index.md b/files/en-us/glossary/bun/index.md new file mode 100644 index 000000000000000..36dfd2c0b2875fd --- /dev/null +++ b/files/en-us/glossary/bun/index.md @@ -0,0 +1,21 @@ +--- +title: Bun +slug: Glossary/Bun +page-type: glossary-definition +--- + +{{GlossarySidebar}} + +**Bun** is a fast and modern {{Glossary("JavaScript")}} runtime environment designed to prioritize performance and developer tooling. + +Unlike [Node.js](https://nodejs.org/) and [Deno](https://deno.com/), Bun is built on Apple's [JavaScriptCore](https://trac.webkit.org/wiki/JavaScriptCore). Notable features of Bun include: + +- Drop-in Node.js replacement: almost all Node.js programs can run using Bun-equivalent commands. +- State-of-the-art JavaScript execution speed in most real-world scenarios. +- Native support for JavaScript syntax extensions like JSX and TypeScript. +- Global cache for managing package installations to minimize disk usage. +- Built-in bundler, transpiler, [Jest](https://jestjs.io/) compatible test-runner, package manager, and more built-in utilities that web developers may find useful. + +## See also + +- [Bun website](https://bun.sh/) diff --git a/files/en-us/glossary/callback_function/index.md b/files/en-us/glossary/callback_function/index.md index 7ebac881898888e..6af86203ffcf21f 100644 --- a/files/en-us/glossary/callback_function/index.md +++ b/files/en-us/glossary/callback_function/index.md @@ -26,7 +26,7 @@ console.log(value); If `doSomething` calls the callback synchronously, then the last statement would log `2` because `value = 2` is synchronously executed; otherwise, if the callback is asynchronous, the last statement would log `1` because `value = 2` is only executed after the `console.log` statement. -Examples of synchronous callbacks include the callbacks passed to {{jsxref("Array.prototype.map()")}}, {{jsxref("Array.prototype.forEach()")}}, etc. Examples of asynchronous callbacks include the callbacks passed to [`setTimeout()`](/en-US/docs/Web/API/setTimeout) and {{jsxref("Promise.prototype.then()")}}. +Examples of synchronous callbacks include the callbacks passed to {{jsxref("Array.prototype.map()")}}, {{jsxref("Array.prototype.forEach()")}}, etc. Examples of asynchronous callbacks include the callbacks passed to {{domxref("Window.setTimeout", "setTimeout()")}} and {{jsxref("Promise.prototype.then()")}}. The [Using promises](/en-US/docs/Web/JavaScript/Guide/Using_promises#timing) guide has more information on the timing of asynchronous callbacks. diff --git a/files/en-us/glossary/caret/index.md b/files/en-us/glossary/caret/index.md index 763f7882e200d65..ed449abbe4bf7e5 100644 --- a/files/en-us/glossary/caret/index.md +++ b/files/en-us/glossary/caret/index.md @@ -10,7 +10,7 @@ A **caret** (sometimes called a "text cursor") is an indicator displayed on the Most user interfaces represent the caret using a thin vertical line or a character-sized box that flashes, but this can vary. This point in the text is called the **insertion point**. The word "caret" differentiates the text insertion point from the mouse cursor. -On the web, a caret is used to represent the insertion point in {{HTMLElement("input")}} and {{HTMLElement("textarea")}} elements, as well as any elements whose [`contenteditable`](/en-US/docs/Web/HTML/Global_attributes#contenteditable) attribute is set, thereby allowing the contents of the element to be edited by the user. +On the web, a caret is used to represent the insertion point in {{HTMLElement("input")}} and {{HTMLElement("textarea")}} elements, as well as any elements whose [`contenteditable`](/en-US/docs/Web/HTML/Global_attributes/contenteditable) attribute is set, thereby allowing the contents of the element to be edited by the user. ## See also @@ -31,4 +31,4 @@ These elements provide text entry fields or boxes and therefore make use of the - [``](/en-US/docs/Web/HTML/Element/input/number), [``](/en-US/docs/Web/HTML/Element/input/range) - [``](/en-US/docs/Web/HTML/Element/input/email), [``](/en-US/docs/Web/HTML/Element/input/tel), and [``](/en-US/docs/Web/HTML/Element/input/url) - {{HTMLElement("textarea")}} -- Any element with its [`contenteditable`](/en-US/docs/Web/HTML/Global_attributes#contenteditable) attribute set +- Any element with its [`contenteditable`](/en-US/docs/Web/HTML/Global_attributes/contenteditable) attribute set diff --git a/files/en-us/glossary/character_reference/index.md b/files/en-us/glossary/character_reference/index.md index 072822ed0459923..26e40214fa3f89c 100644 --- a/files/en-us/glossary/character_reference/index.md +++ b/files/en-us/glossary/character_reference/index.md @@ -6,7 +6,7 @@ page-type: glossary-definition {{GlossarySidebar}} -An {{glossary("HTML")}} **character reference** is a formatted pattern of characters that is used to represent another character in the rendered web page. +An {{glossary("HTML")}} **character reference** is an {{glossary("escape character", "escape sequence")}} of {{glossary("character", "characters")}} that is used to represent another character in the rendered web page. Character references are used as replacements for characters that are reserved in HTML, such as the less-than (`<`) and greater-than (`>`) symbols used by the HTML parser to identify element {{Glossary('tag','tags')}}, or `"` or `'` within attributes, which may be enclosed by those characters. They can also be used for invisible characters that would otherwise be impossible to type, including non-breaking spaces, control characters like left-to-right and right-to-left marks, and for characters that are hard to type on a standard keyboard. @@ -21,7 +21,7 @@ There are three types of character references: - **Decimal numeric character references** - - : These references start with `&#`, followed by one or more ASCII digits representing the base-ten integer that corresponds to the character's Unicode code point, and ending with `;`. + - : These references start with `&#`, followed by one or more ASCII digits representing the base-ten integer that corresponds to the character's {{glossary("Unicode")}} {{glossary("code point")}}, and ending with `;`. For example, the decimal character reference for `<` is `<`, because the Unicode code point for the symbol is `U+0003C`, and `3C` hexadecimal is 60 in decimal. - **Hexadecimal numeric character reference** @@ -50,3 +50,11 @@ A very small subset of useful named character references along with their unicod | ° | `°` | U+000B0 | The full list of HTML named character references [can found in the HTML specification here](https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references). + +## See also + +- Related glossary terms: + - {{glossary("Character")}} + - {{glossary("Escape character")}} + - {{glossary("Code point")}} + - {{glossary("Unicode")}} diff --git a/files/en-us/glossary/class/index.md b/files/en-us/glossary/class/index.md index 8a44813224ca953..318db895801055b 100644 --- a/files/en-us/glossary/class/index.md +++ b/files/en-us/glossary/class/index.md @@ -10,7 +10,7 @@ In {{glossary("OOP","object-oriented programming")}}, a **class** defines an {{g ## See also -- [Classes in JavaScript](/en-US/docs/Learn/JavaScript/Objects/Classes_in_JavaScript) +- [Classes in JavaScript](/en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Classes_in_JavaScript) - [Inheritance and the prototype chain](/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain) - [Class-based programming](https://en.wikipedia.org/wiki/Class-based_programming) on Wikipedia - [Object-oriented programming](https://en.wikipedia.org/wiki/Object-oriented_programming) on Wikipedia diff --git a/files/en-us/glossary/clickjacking/index.md b/files/en-us/glossary/clickjacking/index.md deleted file mode 100644 index 825a62f045bf449..000000000000000 --- a/files/en-us/glossary/clickjacking/index.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Clickjacking -slug: Glossary/Clickjacking -page-type: glossary-definition ---- - -{{GlossarySidebar}} - -**Clickjacking** is an interface-based attack that tricks website users into unwittingly clicking on malicious links. In clickjacking, the attackers embed their malicious links into buttons or legitimate pages in a website. In an infected {{glossary("Site")}}, whenever a user clicks on a legitimate link, the attacker gets the confidential information of that user, which ultimately compromises the user's privacy on the Internet. - -Clickjacking can be prevented by implementing a [Content Security Policy (frame-ancestors)](/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors) and implementing [Set-Cookie attributes](/en-US/docs/Web/HTTP/Headers/Set-Cookie#attributes). - -## See also - -- [Web security: clickjacking protection](/en-US/docs/Web/Security/Practical_implementation_guides/Clickjacking) -- [Clickjacking](https://en.wikipedia.org/wiki/Clickjacking) on Wikipedia -- [Clickjacking](https://owasp.org/www-community/attacks/Clickjacking) on OWASP diff --git a/files/en-us/glossary/cloud/index.md b/files/en-us/glossary/cloud/index.md new file mode 100644 index 000000000000000..04bdc36da012248 --- /dev/null +++ b/files/en-us/glossary/cloud/index.md @@ -0,0 +1,21 @@ +--- +title: Cloud +slug: Glossary/Cloud +page-type: glossary-definition +--- + +{{GlossarySidebar}} + +The **Cloud** refers to servers located worldwide that are accessed over the Internet, and the software and databases that run on those servers. + +Instead of storing data or running programs on a local computer or server, users can access cloud resources to perform tasks: this is known as {{glossary("Cloud computing")}}. + +Key features of the cloud include: + +- Remote Access: Data and services are accessed remotely. +- Scalability: Resources can be scaled up or down based on demand. +- Availability: Services and data are typically accessible from anywhere with internet access. + +## See also + +- [What is the Cloud?](https://www.cloudflare.com/en-gb/learning/cloud/what-is-the-cloud/) on Cloudflare diff --git a/files/en-us/glossary/cloud_computing/index.md b/files/en-us/glossary/cloud_computing/index.md new file mode 100644 index 000000000000000..5d818aaabb552f3 --- /dev/null +++ b/files/en-us/glossary/cloud_computing/index.md @@ -0,0 +1,27 @@ +--- +title: Cloud computing +slug: Glossary/Cloud_computing +page-type: glossary-definition +--- + +{{GlossarySidebar}} + +**Cloud computing** refers to the on-demand delivery of a wide range of computing services such as storage, databases, networking, analytics, and intelligence via the Internet — also known as **cloud services**. + +Cloud services are infrastructure, platforms, or software made available to users via the internet, hosted by third-party providers such as Google (Google Cloud Platform), Amazon AWS (Amazon Web Services), and Microsoft (Azure). Users can access cloud services through a _pay-as-you-go_ pricing model, ensuring they only pay for what they use, and without requiring any complex software set up on their own computers. This model enables faster innovation, flexible scalability, and significant cost savings. + +The three main types of cloud computing are Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). Each type of cloud computing provides different levels of control, flexibility, and management. + +- Infrastructure as a Service + - : IaaS provides virtualized computing resources over the internet, including servers, storage, and networking, allowing users to manage their infrastructure. This gives users a high level of flexibility and control over the resources. Companies using IaaS can scale their server infrastructure rapidly without owning physical servers. Examples include Amazon Web Services (AWS EC2), Microsoft Azure Virtual Machines, and Google Compute Engine (GCE). +- Platform as a Service + - : PaaS provides a platform allowing customers to develop, run, and manage applications without worrying about the underlying infrastructure such as servers, storage, and networking. PaaS allows developers to focus on writing code and application logic, without managing servers or operating systems. Examples include Google App Engine, Microsoft Azure App Service, Heroku, and AWS Elastic Beanstalk. +- Software as a Service + - : SaaS delivers software applications over the internet, which users can access via a web browser. The provider manages all the underlying infrastructure, platform, and data. Businesses using SaaS don't need to install or manage software locally. Instead, they can access software such as email, CRM, and collaboration tools directly from a web browser. Examples include Google Workspace, Microsoft 365, Slack, GitHub, and ChatGPT. + +## See also + +- [Cloud Computing](https://en.wikipedia.org/wiki/Cloud_computing) on Wikipedia +- [What is Cloud Computing?](https://cloud.google.com/learn/what-is-cloud-computing?hl=en) on Google Cloud +- [Cloud Service Provider](https://cloud.google.com/learn/what-is-a-cloud-service-provider?hl=en) on Google Cloud +- [NIST Definition of Cloud Computing](https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication800-145.pdf) diff --git a/files/en-us/glossary/cls/index.md b/files/en-us/glossary/cls/index.md index fa305c7672e896d..9a5d310b7a33460 100644 --- a/files/en-us/glossary/cls/index.md +++ b/files/en-us/glossary/cls/index.md @@ -6,7 +6,7 @@ page-type: glossary-definition {{GlossarySidebar}} -**Cumulative Layout Shift (CLS)** is a usability metric for websites, designed by Google as one of the [Core Web Vital](https://web.dev/explore/learn-core-web-vitals) metrics. +**Cumulative Layout Shift (CLS)** is a usability metric for websites, designed by Google as one of the [Core Web Vital](https://web.dev/articles/vitals) metrics. It measures the extent to which users encounter unexpected layout shifts, in which elements of the page are moved in an unexpected way: that is, that are not the result of a user action like pressing a button or part of an animation. diff --git a/files/en-us/glossary/code_splitting/index.md b/files/en-us/glossary/code_splitting/index.md index 7130e19663206ef..efc1be9a291d6b4 100644 --- a/files/en-us/glossary/code_splitting/index.md +++ b/files/en-us/glossary/code_splitting/index.md @@ -10,7 +10,7 @@ page-type: glossary-definition This allows an application to load only the code it actually needs at a given point in time, and load other bundles on demand. This approach is used to improve application performance, especially on initial load. -Code splitting is a feature supported by bundlers like [Webpack](https://webpack.js.org/) and [Browserify](https://browserify.org/) which can create multiple bundles that can be dynamically loaded at runtime. +Code splitting is a feature supported by bundlers like [webpack](https://webpack.js.org/) and [Browserify](https://browserify.org/) which can create multiple bundles that can be dynamically loaded at runtime. ## See also diff --git a/files/en-us/glossary/color_space/index.md b/files/en-us/glossary/color_space/index.md index 64f8cbf17ece040..eacfb57ecb0c9c7 100644 --- a/files/en-us/glossary/color_space/index.md +++ b/files/en-us/glossary/color_space/index.md @@ -40,7 +40,7 @@ The `rgb()` color function is not the only color function that can represent the - `display-p3` color space - - : Defined by Apple, the **Display P3** color space combines the DCI-P3 color gamut, the D65 whitepoint, and sRGB gamma curve. It is a wide gamut space typical of current wide-gamut monitors, enabling more vibrant greens and reds than the sRGB color gamut. The `display-p3` is based on `r`, `g`, and `b`, with in-gamut values ranging from `0` to `1`. The whitepoint is D65. + - : Defined by Apple, the [**Display P3**](https://www.color.org/chardata/rgb/DisplayP3.xalter), color space combines the DCI-P3 color gamut, the D65 whitepoint, and sRGB gamma curve. It is a wide gamut space typical of current wide-gamut monitors, enabling more vibrant greens and reds than the sRGB color gamut. The `display-p3` is based on `r`, `g`, and `b`, with in-gamut values ranging from `0` to `1`. The whitepoint is D65. - `a98-rgb` color space diff --git a/files/en-us/glossary/compile/index.md b/files/en-us/glossary/compile/index.md index a5f3e17081c0183..68e311202917679 100644 --- a/files/en-us/glossary/compile/index.md +++ b/files/en-us/glossary/compile/index.md @@ -10,7 +10,7 @@ page-type: glossary-definition Typically, a compiler transforms code written in a higher-level language such as [C++](https://en.wikipedia.org/wiki/C++), [Rust](), or [Java]() into executable (runnable) code — so-called **binary code** or **machine code**. [WebAssembly](/en-US/docs/WebAssembly), for example, is a form of executable binary code that [can be compiled from code written in C++, Rust, C#, Go, Swift, and several other languages](https://webassembly.org/getting-started/developers-guide/) and run on any web page, with most features supported in modern browsers (see [browser compatibility table](/en-US/docs/WebAssembly#browser_compatibility)). -Most compilers perform either ahead-of-time (AOT) compilation or just-in-time (JIT) compilation. +Most compilers perform either ahead-of-time (AOT) compilation or {{glossary("Just In Time Compilation", "just-in-time (JIT)")}} compilation. The GNU `gcc` compiler is one well-known example of an AOT compiler. AOT compilers are typically invoked from the command line in a shell environment (from within a terminal or console) or within an {{Glossary("IDE")}}. @@ -22,3 +22,5 @@ Compilers may also translate among higher-level languages — for example, from - [Compiler](https://en.wikipedia.org/wiki/Compiler) on Wikipedia - [WebAssembly](/en-US/docs/WebAssembly) +- Related glossary terms: + - {{glossary("Just In Time Compilation", "Just-In-Time (JIT)")}} diff --git a/files/en-us/glossary/conditional/index.md b/files/en-us/glossary/conditional/index.md index c15152a4d9907b7..a7e5a98579ec78b 100644 --- a/files/en-us/glossary/conditional/index.md +++ b/files/en-us/glossary/conditional/index.md @@ -14,6 +14,6 @@ An instruction or a set of instructions is executed if a specific condition is f - Related glossary terms: - {{glossary("Control flow")}} -- [Making decisions in your code — conditionals](/en-US/docs/Learn/JavaScript/Building_blocks/conditionals) +- [Learn: Making decisions in your code — conditionals](/en-US/docs/Learn_web_development/Core/Scripting/Conditionals) - [Control flow and error handling in JavaScript](/en-US/docs/Web/JavaScript/Guide/Control_flow_and_error_handling) - [Conditional]() on Wikipedia diff --git a/files/en-us/glossary/constructor/index.md b/files/en-us/glossary/constructor/index.md index b4e1c74557801ce..69e1cdd1870d304 100644 --- a/files/en-us/glossary/constructor/index.md +++ b/files/en-us/glossary/constructor/index.md @@ -31,6 +31,6 @@ const defaultReference = new Default(); ## See also -- [Classes and constructors in JavaScript](/en-US/docs/Learn/JavaScript/Objects/Classes_in_JavaScript#classes_and_constructors) +- [Classes and constructors in JavaScript](/en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects/Classes_in_JavaScript#classes_and_constructors) - [`new` operator in JavaScript](/en-US/docs/Web/JavaScript/Reference/Operators/new) - [Constructor](https://en.wikipedia.org/wiki/Constructor_%28object-oriented_programming%29) on Wikipedia diff --git a/files/en-us/glossary/csp/index.md b/files/en-us/glossary/csp/index.md index 16c6f0c23f8799c..cdcde736beff1ac 100644 --- a/files/en-us/glossary/csp/index.md +++ b/files/en-us/glossary/csp/index.md @@ -6,7 +6,7 @@ page-type: glossary-definition {{GlossarySidebar}} -A **CSP** ([Content Security Policy](/en-US/docs/Web/HTTP/CSP)) is used to detect and mitigate certain types of website related attacks like {{Glossary("Cross-site_scripting")}}, {{Glossary("clickjacking")}} and data injections. +A **CSP** ([Content Security Policy](/en-US/docs/Web/HTTP/CSP)) is used to detect and mitigate certain types of website related attacks like {{Glossary("Cross-site_scripting")}}, [clickjacking](/en-US/docs/Web/Security/Attacks/Clickjacking) and data injections. The implementation is based on an {{Glossary("HTTP")}} header called {{HTTPHeader("Content-Security-Policy")}}. diff --git a/files/en-us/glossary/csr/index.md b/files/en-us/glossary/csr/index.md new file mode 100644 index 000000000000000..3a4900c3847a6e9 --- /dev/null +++ b/files/en-us/glossary/csr/index.md @@ -0,0 +1,46 @@ +--- +title: Client-side rendering (CSR) +slug: Glossary/CSR +page-type: glossary-definition +--- + +{{GlossarySidebar}} + +**Client-side rendering** (CSR) refers to the practice of generating HTML content using JavaScript in the browser. CSR is opposed to {{glossary("SSR", "server-side rendering")}}, where the server generates the HTML content. Both techniques are not mutually exclusive and can be used together in the same application. + +A pure CSR app may return the following HTML content: + +```html + + + + My App + + + +
+ + + +``` + +Then, the actual page content is generated by JavaScript in `bundle.js`, using [DOM manipulation](/en-US/docs/Web/API/Document_Object_Model). + +Benefits of CSR include: + +- Interactivity: any page update, including route transitions, do not require a full page reload. This makes the app feel faster and more responsive. +- Performance: the server only needs to send the initial HTML content and JavaScript assets. Subsequent page updates can be fetched from an API, which can be faster than fetching a full HTML page, and causes less load on the server. + +Both SSR and CSR have their performance tradeoffs, and a mix of SSR and CSR can be used to combine the benefits of both techniques. For example, the server can generate a page skeleton with empty placeholders, and the client can fetch additional data and update the page as needed. + +Note that {{glossary("SPA", "single-page applications")}} do not require the site to be CSR. Modern frameworks, such as [React](/en-US/docs/Learn_web_development/Core/Frameworks_libraries/React_getting_started), [Vue](/en-US/docs/Learn_web_development/Core/Frameworks_libraries/Vue_getting_started), and [Svelte](/en-US/docs/Learn_web_development/Core/Frameworks_libraries/Svelte_getting_started), can be used to build SPAs with SSR capabilities. + +## See also + +- [Introduction to client-side frameworks > server-side rendering](/en-US/docs/Learn_web_development/Core/Frameworks_libraries/Introduction#server-side_rendering) +- [Client-side rendering](https://en.wikipedia.org/wiki/Client-side_rendering) on Wikipedia +- {{glossary("SSR", "Server-side rendering")}} +- {{glossary("SSG", "Static site generator")}} +- {{glossary("SPA", "Single-page application")}} diff --git a/files/en-us/glossary/css/index.md b/files/en-us/glossary/css/index.md index f6144d702714302..ddb4bd9d35bc1ce 100644 --- a/files/en-us/glossary/css/index.md +++ b/files/en-us/glossary/css/index.md @@ -29,7 +29,7 @@ p { ## See also -- [Learn CSS](/en-US/docs/Learn/CSS) +- [Learn CSS](/en-US/docs/Learn_web_development/Core/Styling_basics) - [The CSS documentation](/en-US/docs/Web/CSS) - [CSS](https://en.wikipedia.org/wiki/CSS) on Wikipedia - [The CSS Working Group current work](https://www.w3.org/Style/CSS/current-work) diff --git a/files/en-us/glossary/css_preprocessor/index.md b/files/en-us/glossary/css_preprocessor/index.md index ae5642b82ec3709..28e6e0ba8c5a555 100644 --- a/files/en-us/glossary/css_preprocessor/index.md +++ b/files/en-us/glossary/css_preprocessor/index.md @@ -19,7 +19,6 @@ To use a CSS preprocessor, you must install a CSS compiler on your web {{Glossar - [Sass](https://sass-lang.com/) - [LESS](https://lesscss.org/) - [Stylus](https://stylus-lang.com/) - - [PostCSS](https://postcss.org/) - Related glossary terms: - {{Glossary("CSS")}} diff --git a/files/en-us/glossary/css_selector/index.md b/files/en-us/glossary/css_selector/index.md index 770ec5517fde42e..a9741c444874a73 100644 --- a/files/en-us/glossary/css_selector/index.md +++ b/files/en-us/glossary/css_selector/index.md @@ -60,7 +60,7 @@ The resulting page content is styled like this: ## See also -- [Learn more about CSS selectors](/en-US/docs/Learn/CSS/Building_blocks/Selectors) in our introduction to CSS. +- [Learn more about CSS selectors](/en-US/docs/Learn_web_development/Core/Styling_basics/Basic_selectors) in our introduction to CSS. - Basic selectors - [Type selectors](/en-US/docs/Web/CSS/Type_selectors) `elementname` diff --git a/files/en-us/glossary/deep_copy/index.md b/files/en-us/glossary/deep_copy/index.md index 297ea42bc2fdd67..49d900eb4bdfbee 100644 --- a/files/en-us/glossary/deep_copy/index.md +++ b/files/en-us/glossary/deep_copy/index.md @@ -48,10 +48,11 @@ console.log(ingredientsList[1].list); However, while the object in the code above is simple enough to be {{Glossary("serialization", "serializable")}}, many JavaScript objects are not serializable at all — for example, [functions](/en-US/docs/Web/JavaScript/Guide/Functions) (with closures), [Symbols](/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol), objects that represent HTML elements in the [HTML DOM API](/en-US/docs/Web/API/HTML_DOM_API), recursive data, and many other cases. Calling `JSON.stringify()` to serialize the objects in those cases will fail. So there's no way to make deep copies of such objects. -The web API [`structuredClone()`](/en-US/docs/Web/API/structuredClone) also creates deep copies and has the advantage of allowing [transferable objects](/en-US/docs/Web/API/Web_Workers_API/Transferable_objects) in the source to be _transferred_ to the new copy, rather than just cloned. It also handles more data types, such as `Error`. But note that `structuredClone()` isn't a feature of the JavaScript language itself — instead it's a feature of browsers and other JavaScript hosts that implement web APIs. And calling `structuredClone()` to clone a non-serializable object will fail in the same way that calling `JSON.stringify()` to serialize it will fail. +The web API {{DOMxRef("Window.structuredClone", "structuredClone()")}} also creates deep copies and has the advantage of allowing [transferable objects](/en-US/docs/Web/API/Web_Workers_API/Transferable_objects) in the source to be _transferred_ to the new copy, rather than just cloned. It also handles more data types, such as `Error`. But note that `structuredClone()` isn't a feature of the JavaScript language itself — instead it's a feature of browsers and other JavaScript hosts that implement web APIs. And calling `structuredClone()` to clone a non-serializable object will fail in the same way that calling `JSON.stringify()` to serialize it will fail. ## See also - Related glossary terms: - {{glossary("Shallow copy")}} -- [`window.structuredClone()`](/en-US/docs/Web/API/structuredClone) +- {{DOMxRef("Window.structuredClone()")}} +- {{DOMxRef("WorkerGlobalScope.structuredClone()")}} diff --git a/files/en-us/glossary/denial_of_service/index.md b/files/en-us/glossary/denial_of_service/index.md index fe1680d7a32e110..3580df901b868ea 100644 --- a/files/en-us/glossary/denial_of_service/index.md +++ b/files/en-us/glossary/denial_of_service/index.md @@ -1,11 +1,30 @@ --- -title: Denial of Service +title: Denial of Service (DoS) slug: Glossary/Denial_of_Service page-type: glossary-definition --- {{GlossarySidebar}} -**DoS** (Denial of Service) is a category of network attack that consumes available server resources, typically by flooding the server with requests. The server is then sluggish or unavailable for legitimate users. +**Denial of Service** (DoS) is a category of network attack that consumes available {{Glossary("server")}} resources, typically by flooding the server with requests. The server is then sluggish or unavailable for legitimate users. -See {{glossary("DOS attack")}} for more information. +Computers have limited resources, for example computation power or memory. When these are exhausted, the program can freeze or crash, making it unavailable. A DoS attack consists of various techniques to exhaust these resources and make a server or a network unavailable to legitimate users, or at least make the server perform sluggishly. + +There are also {{Glossary("Distributed Denial of Service", "Distributed Denial of Service (DDoS)")}} attacks in which a multitude of servers are used to exhaust the computing capacity of an attacked computer. + +### Types of DoS attack + +DoS attacks are more of a category than a particular kind of attack. Here is a non-exhaustive list of DoS attack types: + +- bandwidth attack +- service request flood +- SYN flooding attack +- ICMP flood attack +- peer-to-peer attack +- permanent DoS attack +- application level flood attack + +## See also + +- [Denial-of-service attack](https://en.wikipedia.org/wiki/Denial-of-service_attack) on Wikipedia +- [Denial of Service](https://owasp.org/www-community/attacks/Denial_of_Service) on OWASP diff --git a/files/en-us/glossary/distributed_denial_of_service/index.md b/files/en-us/glossary/distributed_denial_of_service/index.md index 0f0c4e956a81690..52de7654870a895 100644 --- a/files/en-us/glossary/distributed_denial_of_service/index.md +++ b/files/en-us/glossary/distributed_denial_of_service/index.md @@ -1,14 +1,14 @@ --- -title: Distributed Denial of Service +title: Distributed Denial of Service (DDoS) slug: Glossary/Distributed_Denial_of_Service page-type: glossary-definition --- {{GlossarySidebar}} -A **Distributed Denial-of-Service** (DDoS) is an attack in which many compromised systems are made to attack a single target, in order to swamp server resources and block legitimate users. +**Distributed Denial-of-Service** (DDoS) is a type of {{Glossary("Denial of Service", "DoS")}} attack in which many compromised systems are made to attack a single target, in order to swamp server resources and block legitimate users. -Normally many persons, using many bots, attack high-profile Web {{glossary("server","servers")}} like banks or credit-card payment gateways. DDoS concerns computer networks and CPU resource management. +Normally many persons, using many bots, attack high-profile Web {{Glossary("server", "servers")}} like banks or credit-card payment gateways. DDoS concerns computer networks and CPU resource management. In a typical DDoS attack, the assailant begins by exploiting a vulnerability in one computer system and making it the DDoS master. The attack master, also known as the botmaster, identifies and infects other vulnerable systems with malware. Eventually, the assailant instructs the controlled machines to launch an attack against a specified target. @@ -27,4 +27,4 @@ The United States Computer Emergency Readiness Team (US-CERT) defines symptoms o ## See also -- [Denial-of-service attack](https://en.wikipedia.org/wiki/Denial-of-service_attack) on Wikipedia +- [Distributed DoS attack](https://en.wikipedia.org/wiki/Denial-of-service_attack#Distributed_DoS) on Wikipedia diff --git a/files/en-us/glossary/dns/index.md b/files/en-us/glossary/dns/index.md index c18279070f14ea3..65aa68a5ecc9a61 100644 --- a/files/en-us/glossary/dns/index.md +++ b/files/en-us/glossary/dns/index.md @@ -12,5 +12,5 @@ The most prominent function of DNS is the translation of human-friendly domain n ## See also -- [Understanding domain names](/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_domain_name) +- [Understanding domain names](/en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_domain_name) - [Domain Name System](https://en.wikipedia.org/wiki/Domain_Name_System) on Wikipedia diff --git a/files/en-us/glossary/domain_name/index.md b/files/en-us/glossary/domain_name/index.md index 4c46005cd091138..01628c61688044b 100644 --- a/files/en-us/glossary/domain_name/index.md +++ b/files/en-us/glossary/domain_name/index.md @@ -11,4 +11,4 @@ A **domain name** is a website's address on the {{Glossary("Internet")}}. Domain ## See also - [Domain name](https://en.wikipedia.org/wiki/Domain_name) on Wikipedia -- [Understanding domain names](/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_domain_name) +- [Understanding domain names](/en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_domain_name) diff --git a/files/en-us/glossary/dos_attack/index.md b/files/en-us/glossary/dos_attack/index.md deleted file mode 100644 index 9515e6399b8869d..000000000000000 --- a/files/en-us/glossary/dos_attack/index.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: DoS attack -slug: Glossary/DOS_attack -page-type: glossary-definition ---- - -{{GlossarySidebar}} - -**Denial of Service (DoS)** is a network attack that prevents legitimate use of {{glossary("server")}} resources by flooding the server with requests. - -Computers have limited resources, for example computation power or memory. When these are exhausted, the program can freeze or crash, making it unavailable. A DoS attack consists of various techniques to exhaust these resources and make a server or a network unavailable to legitimate users, or at least make the server perform sluggishly. - -There are also Distributed Denial of Service (DDoS) Attacks in which a multitude of servers are used to exhaust the computing capacity of an attacked computer. - -### Types of DoS attack - -DoS attacks are more of a category than a particular kind of attack. Here is a non-exhaustive list of DoS attack types: - -- bandwidth attack -- service request flood -- SYN flooding attack -- ICMP flood attack -- peer-to-peer attack -- permanent DoS attack -- application level flood attack - -## See also - -- [Denial-of-service attack](https://en.wikipedia.org/wiki/Denial-of-service_attack) on Wikipedia -- [Denial-of-service on OWASP](https://owasp.org/www-community/attacks/Denial_of_Service) -- Related glossary terms: - - {{Glossary("Distributed Denial of Service","DDoS")}} diff --git a/files/en-us/glossary/effective_connection_type/index.md b/files/en-us/glossary/effective_connection_type/index.md index 7a2011090111b84..8750bf1f4240527 100644 --- a/files/en-us/glossary/effective_connection_type/index.md +++ b/files/en-us/glossary/effective_connection_type/index.md @@ -8,7 +8,7 @@ page-type: glossary-definition **Effective connection type** (ECT) refers to the measured network performance, returning a cellular connection type, like 3G, even if the actual connection is tethered broadband or Wi-Fi, based on the time between the browser requesting a page and effective type of the connection. -The values of '`slow-2g`', '`2g`', '`3g`', and '`4g`' are determined using observed round-trip times and downlink values. +The values of `slow-2g`, `2g`, `3g`, and `4g` are determined using observed round-trip times and downlink values. | ECT | Minimum {{Glossary("Round Trip Time", "RTT")}} | Maximum downlink | Explanation | | --------- | ---------------------------------------------- | ---------------- | -------------------------------------------------------------------------------------------------------- | diff --git a/files/en-us/glossary/element/index.md b/files/en-us/glossary/element/index.md index 730c87104006ecc..d74050b2a190d82 100644 --- a/files/en-us/glossary/element/index.md +++ b/files/en-us/glossary/element/index.md @@ -14,6 +14,6 @@ Elements and {{glossary("tag", "tags")}} are _not_ the same things. Tags begin o ## See also -- [Getting started with HTML](/en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started) +- [Basic HTML Syntax](/en-US/docs/Learn_web_development/Core/Structuring_content/Basic_HTML_syntax) - [Defining custom elements](/en-US/docs/Web/API/Web_components/Using_custom_elements) - The {{domxref("Element")}} interface, representing an element in the DOM. diff --git a/files/en-us/glossary/engine/javascript/index.md b/files/en-us/glossary/engine/javascript/index.md index 7d19851fe7c6b7a..cf49b0d53991494 100644 --- a/files/en-us/glossary/engine/javascript/index.md +++ b/files/en-us/glossary/engine/javascript/index.md @@ -12,9 +12,16 @@ In a browser, the JavaScript engine operates together with the rendering engine Do not confuse JavaScript engines with {{glossary("engine/rendering", "rendering engines")}}, which are also crucial parts of browsers. +Common JavaScript engines include: + +- [V8](https://v8.dev/) +- [SpiderMonkey](https://spidermonkey.dev/) +- [JavaScriptCore](https://developer.apple.com/documentation/javascriptcore) + ## See also - [JavaScript engine](https://en.wikipedia.org/wiki/JavaScript_engine) on Wikipedia +- [JavaScript implementations](/en-US/docs/Web/JavaScript/JavaScript_technologies_overview#javascript_implementations) - Related glossary terms: - {{glossary("Engine")}} - {{glossary("JavaScript")}} diff --git a/files/en-us/glossary/entity_header/index.md b/files/en-us/glossary/entity_header/index.md index dc5698d0773e74c..d8d80d70fd26478 100644 --- a/files/en-us/glossary/entity_header/index.md +++ b/files/en-us/glossary/entity_header/index.md @@ -14,7 +14,7 @@ An entity header is an {{glossary("HTTP_header", "HTTP header")}} that describes In the following example, {{HTTPHeader("Content-Length")}} is an entity header, while {{HTTPHeader("Host")}} and {{HTTPHeader("User-Agent")}} are requests headers: ```http -POST /myform.html HTTP/1.1 +POST /my-form.html HTTP/1.1 Host: developer.mozilla.org User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0 Content-Length: 128 diff --git a/files/en-us/glossary/escape_character/index.md b/files/en-us/glossary/escape_character/index.md new file mode 100644 index 000000000000000..a2073c3ca7372de --- /dev/null +++ b/files/en-us/glossary/escape_character/index.md @@ -0,0 +1,23 @@ +--- +title: Escape character +slug: Glossary/Escape_character +page-type: glossary-definition +--- + +{{GlossarySidebar}} + +An **escape character** is a {{glossary("character")}} that causes one or more characters that follow it to be interpreted differently. This forms an **escape sequence**, which is often used to represent a character that has an alternative meaning when printed literally, such as the quote character in a string literal. Escape sequences can have other usages too, especially in [regular expressions](/en-US/docs/Web/JavaScript/Reference/Regular_expressions#escape_sequences). + +- In JavaScript [regexes](/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Character_escape), [string literals](/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#string_literals), and [identifiers](/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers), we can use the backslash (`\`) to escape characters like `\'`, `\"`, `\u0026`, etc. +- In CSS identifiers, we can use the backslash (`\`) to escape characters like `\\`, `\n`, `\26`, etc. See [escape characters](/en-US/docs/Web/CSS/ident#escaping_characters) for more information. +- In HTML text content and attribute values, we can use {{glossary("character reference", "character references")}} like `<`, `<`, or `<`. +- In {{glossary("URL", "URLs")}}, we can use the percent sign (`%`) to escape characters like `%20`, `%3C`, `%3E`, etc. + +## See also + +- Related glossary terms: + - {{glossary("Character")}} + - {{glossary("Character reference")}} + - {{glossary("Code point")}} +- [Escape character](https://en.wikipedia.org/wiki/Escape_character) on Wikipedia +- [Escape sequence](https://en.wikipedia.org/wiki/Escape_sequence) on Wikipedia diff --git a/files/en-us/glossary/falsy/index.md b/files/en-us/glossary/falsy/index.md index 220cbfd7449fdee..f8c80f3ed761ebb 100644 --- a/files/en-us/glossary/falsy/index.md +++ b/files/en-us/glossary/falsy/index.md @@ -6,6 +6,8 @@ page-type: glossary-definition {{GlossarySidebar}} + + A **falsy** (sometimes written **falsey**) value is a value that is considered false when encountered in a {{Glossary("Boolean")}} context. {{Glossary("JavaScript")}} uses {{Glossary("Type_Conversion", "type conversion")}} to coerce any value to a Boolean in contexts that require it, such as {{Glossary("Conditional", "conditionals")}} and {{Glossary("Loop", "loops")}}. diff --git a/files/en-us/glossary/fetch_metadata_request_header/index.md b/files/en-us/glossary/fetch_metadata_request_header/index.md index 916af11fa2b5dc5..a0790b55248a064 100644 --- a/files/en-us/glossary/fetch_metadata_request_header/index.md +++ b/files/en-us/glossary/fetch_metadata_request_header/index.md @@ -8,7 +8,7 @@ page-type: glossary-definition A **fetch metadata request header** is an {{Glossary("Request header", "HTTP request header")}} that provides additional information about the context from which the request originated. This allows the server to make decisions about whether a request should be allowed based on where the request came from and how the resource will be used. -With this information a server can implement a resource isolation policy, allowing external sites to request only those resources that are intended for sharing, and that are used appropriately. This approach can help mitigate common cross-site web vulnerabilities such as {{Glossary("CSRF")}}, Cross-site Script Inclusion('XSSI'), timing attacks, and cross-origin information leaks. +With this information a server can implement a resource isolation policy, allowing external sites to request only those resources that are intended for sharing, and that are used appropriately. This approach can help mitigate common cross-site web vulnerabilities such as {{Glossary("CSRF")}}, Cross-site Script Inclusion (XSSI), timing attacks, and cross-origin information leaks. These headers are prefixed with `Sec-`, and hence have {{Glossary("Forbidden header name", "forbidden header names")}}. As such, they cannot be modified from JavaScript. diff --git a/files/en-us/glossary/first_contentful_paint/index.md b/files/en-us/glossary/first_contentful_paint/index.md index 7405963182a24f0..dfd3ebedc3000c6 100644 --- a/files/en-us/glossary/first_contentful_paint/index.md +++ b/files/en-us/glossary/first_contentful_paint/index.md @@ -1,12 +1,12 @@ --- -title: First contentful paint +title: First Contentful Paint (FCP) slug: Glossary/First_contentful_paint page-type: glossary-definition --- {{GlossarySidebar}} -**First Contentful Paint** (FCP) is when the browser renders the first bit of content from the DOM, providing the first feedback to the user that the page is actually loading. The question "Is it happening?" is "yes" when the first contentful paint completes. +**First Contentful Paint** (FCP) is when the browser renders the first content from the DOM, providing feedback to the user that the page is loading. Completing the first contentful paint answers the question "Is it happening?" _The First Contentful Paint_ timestamp is when the browser first rendered any text, image (including background images), video, canvas that had been drawn into, or non-empty SVG. This excludes any content of iframes, but includes text with pending webfonts. This is the first time users could start consuming page content. @@ -14,7 +14,7 @@ _The First Contentful Paint_ timestamp is when the browser first rendered any te - [`PerformancePaintTiming`](/en-US/docs/Web/API/PerformancePaintTiming) - Related glossary terms: - - {{Glossary("First paint")}} - - {{Glossary("Largest contentful paint")}} - - {{Glossary("First meaningful paint")}} + - {{Glossary("First Paint")}} + - {{Glossary("Largest Contentful Paint")}} + - {{Glossary("First Meaningful Paint")}} - [First Contentful Paint](https://web.dev/articles/fcp) at web.dev diff --git a/files/en-us/glossary/first_input_delay/index.md b/files/en-us/glossary/first_input_delay/index.md index 7270846166c54ae..f33c07e38c0da04 100644 --- a/files/en-us/glossary/first_input_delay/index.md +++ b/files/en-us/glossary/first_input_delay/index.md @@ -1,12 +1,17 @@ --- -title: First input delay +title: First Input Delay (FID) slug: Glossary/First_input_delay page-type: glossary-definition +status: + - deprecated --- {{GlossarySidebar}} -**First input delay** (FID) measures the time from when a user first interacts with your site (i.e. when they click a link, tap on a button, or use a custom, JavaScript-powered control) to the time when the browser is actually able to respond to that interaction. +**First input delay** (FID) measures the time from when a user first interacts with your site (for example, when they click a link, tap on a button, or use a custom, JavaScript-powered control) to the time when the browser is actually able to respond to that interaction. + +> [!WARNING] +> FID was designed by Google as one of the [Core Web Vital](https://web.dev/articles/vitals) metrics but was replaced by {{Glossary("Interaction to Next Paint")}} (INP) [in May 2024](https://web.dev/blog/inp-cwv-launch). It is the length of time, in milliseconds, between the first user interaction on a web page and the browser's response to that interaction. Scrolling and zooming are not included in this metric. @@ -14,5 +19,4 @@ The time between when content is painted to the page and when all the functional ## See also -- [requestIdleCallback](/en-US/docs/Web/API/Window/requestIdleCallback) -- [lazy loading](/en-US/docs/Web/Performance/Lazy_loading) +- [Interaction to Next Paint is officially a Core Web Vital](https://web.dev/blog/inp-cwv-launch) on web.dev (2024) diff --git a/files/en-us/glossary/first_meaningful_paint/index.md b/files/en-us/glossary/first_meaningful_paint/index.md index c8b5f96daf3771a..89628a765c585e7 100644 --- a/files/en-us/glossary/first_meaningful_paint/index.md +++ b/files/en-us/glossary/first_meaningful_paint/index.md @@ -1,5 +1,5 @@ --- -title: First Meaningful Paint +title: First Meaningful Paint (FMP) slug: Glossary/First_meaningful_paint page-type: glossary-definition --- @@ -16,5 +16,5 @@ FMP is very sensitive to small differences in the page load. This can lead to in ## See also - Related glossary terms: - - {{Glossary("First contentful paint")}} - - {{Glossary("Largest contentful paint")}} + - {{Glossary("First Contentful Paint")}} + - {{Glossary("Largest Contentful Paint")}} diff --git a/files/en-us/glossary/first_paint/index.md b/files/en-us/glossary/first_paint/index.md index d3e4d520c33a9dc..aebd80f083fb073 100644 --- a/files/en-us/glossary/first_paint/index.md +++ b/files/en-us/glossary/first_paint/index.md @@ -1,5 +1,5 @@ --- -title: First paint +title: First Paint (FP) slug: Glossary/First_paint page-type: glossary-definition --- @@ -12,6 +12,6 @@ page-type: glossary-definition - [`PerformancePaintTiming`](/en-US/docs/Web/API/PerformancePaintTiming) - Related glossary terms: - - {{Glossary("First contentful paint")}} - - {{Glossary("Largest contentful paint")}} - - {{Glossary("First meaningful paint")}} + - {{Glossary("First Contentful Paint")}} + - {{Glossary("Largest Contentful Paint")}} + - {{Glossary("First Meaningful Paint")}} diff --git a/files/en-us/glossary/forbidden_header_name/index.md b/files/en-us/glossary/forbidden_header_name/index.md index 526fe1b42b5ca57..f92b9255f3f71e5 100644 --- a/files/en-us/glossary/forbidden_header_name/index.md +++ b/files/en-us/glossary/forbidden_header_name/index.md @@ -8,11 +8,20 @@ page-type: glossary-definition A **forbidden header name** is the name of any [HTTP header](/en-US/docs/Web/HTTP/Headers) that cannot be modified programmatically; specifically, an HTTP **request** header name (in contrast with a {{Glossary("Forbidden response header name")}}). -Modifying such headers is forbidden because the user agent retains full control over them. Names starting with `Sec-` are reserved for creating new headers safe from {{glossary("API","APIs")}} that grant developers control over headers, such as {{domxref("Window/fetch", "fetch()")}}. - +Modifying such headers is forbidden because the user agent retains full control over them. +For example, the {{HTTPHeader("Date")}} header is a forbidden header name, so this code cannot set the message `Date` field: + +```js example-bad +fetch("https://httpbin.org/get", { + headers: { + Date: new Date().toUTCString(), + }, +}); +``` + +Names starting with `Sec-` are reserved for creating new headers safe from {{glossary("API","APIs")}} that grant developers control over headers, such as {{domxref("Window/fetch", "fetch()")}}. Forbidden header names start with `Proxy-` or `Sec-`, or are one of the following names: -- {{HTTPHeader("Accept-Charset")}} - {{HTTPHeader("Accept-Encoding")}} - {{HTTPHeader("Access-Control-Request-Headers")}} - {{HTTPHeader("Access-Control-Request-Method")}} @@ -26,8 +35,8 @@ Forbidden header names start with `Proxy-` or `Sec-`, or are one of the followin - {{HTTPHeader("Keep-Alive")}} - {{HTTPHeader("Origin")}} - {{HTTPHeader("Permissions-Policy")}} -- `Proxy-` -- `Sec-` +- `Proxy-` headers +- `Sec-` headers - {{HTTPHeader("Referer")}} - {{HTTPHeader("TE")}} - {{HTTPHeader("Trailer")}} diff --git a/files/en-us/glossary/ftp/index.md b/files/en-us/glossary/ftp/index.md index a1e7760c368178b..077ab6d55f599ad 100644 --- a/files/en-us/glossary/ftp/index.md +++ b/files/en-us/glossary/ftp/index.md @@ -12,5 +12,5 @@ For many years it was the defacto standard way of transferring files, but as it ## See also -- [Beginner's guide to uploading files via FTP](/en-US/docs/Learn/Common_questions/Tools_and_setup/Upload_files_to_a_web_server) +- [Beginner's guide to uploading files via FTP](/en-US/docs/Learn_web_development/Howto/Tools_and_setup/Upload_files_to_a_web_server) - [FTP](https://en.wikipedia.org/wiki/File_Transfer_Protocol) on Wikipedia diff --git a/files/en-us/glossary/function/index.md b/files/en-us/glossary/function/index.md index 42b0db4f84b1654..47759a56beb1a8b 100644 --- a/files/en-us/glossary/function/index.md +++ b/files/en-us/glossary/function/index.md @@ -65,7 +65,7 @@ function loop(x) { // Arrow function const loop2 = (x) => { if (x >= 10) return; - loop(x + 1); + loop2(x + 1); }; ``` diff --git a/files/en-us/glossary/gamut/index.md b/files/en-us/glossary/gamut/index.md index 07b8eab3f45998b..f0c2384d2a7b75c 100644 --- a/files/en-us/glossary/gamut/index.md +++ b/files/en-us/glossary/gamut/index.md @@ -12,7 +12,7 @@ No display or printer can represent the whole range of colors that a human eye c Traditionally, in web development, the only gamut used was _[sRGB](https://en.wikipedia.org/wiki/SRGB)_ (Standard Red-Green-Blue), where each color is described using three bytes, one for each primary color. However, "wide-color" monitors and professional printers support a wider range of colors, that can't be represented using this gamut. -Since 2021, browsers have started to provide functionality for other gamuts, like _[P3](https://en.wikipedia.org/wiki/DCI-P3)_, widely used in the movie industry, and _[rec2020](https://en.wikipedia.org/wiki/Rec._2020)_. +Since 2021, browsers have started to provide functionality for other gamuts, like _[Display-P3](/en-US/docs/Glossary/Color_space#display-p3)_, widely used in the movie industry, and _[rec2020](/en-US/docs/Glossary/Color_space#rec2020)_. Developers can define different sets of colors for devices supporting larger gamuts using the [`color-gamut`](/en-US/docs/Web/CSS/@media/color-gamut) [media feature](/en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries). They can describe colors outside the RGB gamut using specific CSS functions like [`lch()`](/en-US/docs/Web/CSS/color_value/lch) for the LCH cylindrical coordinate system, or [`lab()`](/en-US/docs/Web/CSS/color_value/lab) for the Lab coordinate system. diff --git a/files/en-us/glossary/google_chrome/index.md b/files/en-us/glossary/google_chrome/index.md index 8de6d95b3453efe..68effab268a1e90 100644 --- a/files/en-us/glossary/google_chrome/index.md +++ b/files/en-us/glossary/google_chrome/index.md @@ -6,7 +6,9 @@ page-type: glossary-definition {{GlossarySidebar}} -Google Chrome is a free Web {{glossary("browser")}} developed by Google. It's based on the [Chromium](https://www.chromium.org/) open source project. Some key differences are described on [BrowserStack](https://www.browserstack.com/guide/difference-between-chrome-and-chromium#toc5). Chrome supports its own layout called {{glossary("Blink")}}. Note that the iOS version of Chrome uses that platform's WebView, not Blink. +Google Chrome is a free Web {{glossary("browser")}} developed by Google, based on the [Chromium](https://www.chromium.org/) open source project. Some key differences are described in BrowserStack's [Chrome vs Chromium: Core Differences](https://www.browserstack.com/guide/difference-between-chrome-and-chromium) guide. + +Chromium also has its own layout engine called {{glossary("Blink")}}; note however that the iOS version of Chrome uses that platform's WebView rather than Blink, due to platform restrictions. ## See also diff --git a/files/en-us/glossary/graceful_degradation/index.md b/files/en-us/glossary/graceful_degradation/index.md index 9753551a894a741..c05044b17000733 100644 --- a/files/en-us/glossary/graceful_degradation/index.md +++ b/files/en-us/glossary/graceful_degradation/index.md @@ -8,15 +8,14 @@ page-type: glossary-definition **Graceful degradation** is a design philosophy that centers around trying to build a modern website/application that will work in the newest browsers, but falls back to an experience that while not as good still delivers essential content and functionality in older browsers. -{{Glossary("Polyfill","Polyfills")}} can be used to build in missing features with JavaScript, but acceptable alternatives to features like styling and layout should be provided where possible, for example by using the CSS cascade, or HTML fallback behavior. Some good examples can be found in [Handling common HTML and CSS problems](/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/HTML_and_CSS). +{{Glossary("Polyfill","Polyfills")}} can be used to build in missing features with JavaScript, but acceptable alternatives to features like styling and layout should be provided where possible, for example by using the CSS cascade, or HTML fallback behavior. It is a useful technique that allows Web developers to focus on developing the best possible websites, given that those websites are accessed by multiple unknown user-agents. {{Glossary("Progressive enhancement")}} is related but different — often seen as going in the opposite direction to graceful degradation. In reality both approaches are valid and can often complement one another. ## See also - [Graceful degradation](https://en.wikipedia.org/wiki/Graceful_degradation) on Wikipedia -- [Handling common HTML and CSS problems](/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/HTML_and_CSS) -- [Implementing feature detection](/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Feature_detection) +- [Implementing feature detection](/en-US/docs/Learn_web_development/Extensions/Testing/Feature_detection) - Related glossary terms: - {{Glossary("Polyfill")}} - {{Glossary("Progressive enhancement")}} diff --git a/files/en-us/glossary/guaranteed_invalid_value/index.md b/files/en-us/glossary/guaranteed_invalid_value/index.md new file mode 100644 index 000000000000000..4dee2664c7cbc73 --- /dev/null +++ b/files/en-us/glossary/guaranteed_invalid_value/index.md @@ -0,0 +1,17 @@ +--- +title: Guaranteed-invalid value +slug: Glossary/guaranteed_invalid_value +page-type: glossary-definition +--- + +{{GlossarySidebar}} + +In CSS the guaranteed-invalid value is {{CSSXref("initial")}}. + +When a [custom property](/en-US/docs/Web/CSS/--*)'s value is the guaranteed-invalid value, the {{CSSXref("var")}} function cannot use it for substitution. Attempting to do so makes the declaration _invalid at computed-value time_, unless a valid fallback is specified. + +## See also + +- CSS {{CSSXref("initial")}} +- CSS {{CSSXref("var")}} +- [CSS Custom Properties for Cascading Variables Module Level 1 Specification](https://www.w3.org/TR/css-variables-1/#guaranteed-invalid) diff --git a/files/en-us/glossary/head/index.md b/files/en-us/glossary/head/index.md index f50feb70ece766c..4fca48ef5736f2d 100644 --- a/files/en-us/glossary/head/index.md +++ b/files/en-us/glossary/head/index.md @@ -11,4 +11,4 @@ The **Head** is the part of an {{glossary("HTML")}} document that contains {{glo ## See also - {{htmlelement("head")}} element reference on MDN -- [The HTML \](/en-US/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML) on the MDN Learning Area +- [What's in the head? Webpage metadata](/en-US/docs/Learn_web_development/Core/Structuring_content/Webpage_metadata) on the MDN Learning Area diff --git a/files/en-us/glossary/head_of_line_blocking/index.md b/files/en-us/glossary/head_of_line_blocking/index.md new file mode 100644 index 000000000000000..dd4cb948a1218b4 --- /dev/null +++ b/files/en-us/glossary/head_of_line_blocking/index.md @@ -0,0 +1,19 @@ +--- +title: Head-of-line blocking +slug: Glossary/Head_of_line_blocking +page-type: glossary-definition +--- + +{{GlossarySidebar}} + +In computer networking, **head-of-line blocking** (_HOL blocking_) refers to a performance bottleneck that occurs when a queue of packets is held up by the first packet in the queue, even though other packets in the queue could be processed. + +In HTTP/1.1, HOL blocking can occur when a client sends multiple requests to a {{glossary("server")}} without waiting for the responses. The server processes the requests in order, but if the response to the first request is delayed, the responses to subsequent requests are also delayed. HTTP/2 addresses this issue through request multiplexing, eliminating HOL blocking in the application layer, but it still exists at the transport ({{glossary("TCP")}}) layer. + +## See also + +- Related glossary terms + - {{glossary("HTTP")}}, {{glossary("HTTP 2", "HTTP/2")}} + - {{glossary("TCP")}} +- [Populating the page: how browsers work](/en-US/docs/Web/Performance/How_browsers_work) +- [Head-of-line blocking](https://en.wikipedia.org/wiki/Head-of-line_blocking) on Wikipedia diff --git a/files/en-us/glossary/html/index.md b/files/en-us/glossary/html/index.md index cc3685f2e083b30..7b26474cc60a1da 100644 --- a/files/en-us/glossary/html/index.md +++ b/files/en-us/glossary/html/index.md @@ -27,7 +27,7 @@ An HTML file is normally saved with an `.htm` or `.html` extension, served by a ## See also - [HTML](https://en.wikipedia.org/wiki/HTML) on Wikipedia -- [Our HTML tutorial](/en-US/docs/Learn/HTML) +- [Our HTML tutorial](/en-US/docs/Learn_web_development/Core/Structuring_content) - [The web course on codecademy.com](https://www.codecademy.com/learn/learn-html) - [The HTML documentation on MDN](/en-US/docs/Web/HTML) - [The HTML specification](https://html.spec.whatwg.org/multipage/) diff --git a/files/en-us/glossary/html5/index.md b/files/en-us/glossary/html5/index.md index fbf7c403243f043..2e96fc776bfc20f 100644 --- a/files/en-us/glossary/html5/index.md +++ b/files/en-us/glossary/html5/index.md @@ -18,5 +18,5 @@ Any modern site should use the [HTML doctype](/en-US/docs/MDN/Writing_guidelines ## See also - [our HTML documentation](/en-US/docs/Web/HTML) -- [HTML beginner's learning guides](/en-US/docs/Learn/HTML) +- [HTML beginner's learning guides](/en-US/docs/Learn_web_development/Core/Structuring_content) - [Web APIs](/en-US/docs/Web/API) diff --git a/files/en-us/glossary/html_color_codes/index.md b/files/en-us/glossary/html_color_codes/index.md new file mode 100644 index 000000000000000..db07c5dc42546f9 --- /dev/null +++ b/files/en-us/glossary/html_color_codes/index.md @@ -0,0 +1,28 @@ +--- +title: HTML color codes +slug: Glossary/html_color_codes +page-type: glossary-definition +--- + +{{GlossarySidebar}} + +**HTML color codes** is a _defacto_ general term used to describe the earliest-available methods for specifying colors on web pages. This includes HTML color names such as `black`, `purple`, and `aqua`, and hexadecimal notations such as `#000000`, `#800080`, and `#00ffff`. These were originally defined in HTML specifications — see for example the [HTML 3.2 color definitions](https://www.w3.org/TR/2018/SPSD-html32-20180315/#colors) of the original 16 HTML colors. + +It is no longer accurate to refer to colors on the web as "HTML color codes" or "HTML color names". Colors are now specified in the [CSS color module](/en-US/docs/Web/CSS/CSS_colors), and generally known as CSS colors or web colors. + +## See also + +### General knowledge + +[Web colors](https://en.wikipedia.org/wiki/Web_colors) on Wikipedia + +### Technical reference + +To look up web colors on MDN, see our CSS {{cssxref("<color>")}} values reference documentation, or more specifically: + +- Color names: {{cssxref("<named-color>")}}. +- Hexadecimal notations: {{cssxref("<hex-color>")}}. +- Color functions: + - [sRGB](/en-US/docs/Glossary/Color_space#rgb_color_spaces) color space: {{CSSXref("color_value/hsl", "hsl()")}}, {{CSSXref("color_value/hwb", "hwb()")}}, and {{CSSXref("color_value/rgb", "rgb()")}}. + - [CIELAB](/en-US/docs/Glossary/Color_space#cielab_color_spaces) color space: {{CSSXref("color_value/lab", "lab()")}} and {{CSSXref("color_value/lch", "lch()")}}, {{CSSXref("color_value/oklab", "oklab()")}}, and {{CSSXref("color_value/oklch", "oklch()")}}. + - Other color spaces: {{CSSXref("color_value/color", "color()")}}. diff --git a/files/en-us/glossary/http_2/index.md b/files/en-us/glossary/http_2/index.md index 3e236e22f68157c..7446d8dc907a269 100644 --- a/files/en-us/glossary/http_2/index.md +++ b/files/en-us/glossary/http_2/index.md @@ -6,16 +6,23 @@ page-type: glossary-definition {{GlossarySidebar}} -**HTTP/2** is a major revision of the [HTTP network protocol](/en-US/docs/Web/HTTP/Basics_of_HTTP). +**HTTP/2** is a major revision of the [HTTP network protocol](/en-US/docs/Web/HTTP). -The primary goals for HTTP/2 are to reduce {{glossary("latency")}} by enabling full request and response multiplexing, minimize protocol overhead via efficient compression of HTTP header fields, and add support for request prioritization and server push. +The primary goals for HTTP/2 are to reduce {{glossary("latency")}} and {{glossary("head of line blocking", "head-of-line blocking")}} by enabling full request and response multiplexing, minimize protocol overhead via efficient compression of HTTP header fields (HPACK), and support for request prioritization. -HTTP/2 does not modify the application semantics of HTTP in any way. All the core concepts found in HTTP 1.1, such as HTTP methods, status codes, URIs, and header fields, remain in place. Instead, HTTP/2 modifies how the data is formatted (framed) and transported between the client and server, both of which manage the entire process, and hides application complexity within the new framing layer. As a result, all existing applications can be delivered without modification. +HTTP/2 also introduced a mechanism called Server Push, which allowed a server to send resources to a client in anticipation that the client would need them very soon. +Server Push proved tricky to implement in practice, and has been removed from most major browser engines. +It has been replaced by alternative methods such as [`rel="preload"`](/en-US/docs/Web/HTML/Attributes/rel/preload) and {{HTTPStatus("103", "103 Early hints")}}. + +HTTP/2 does not modify the semantics of HTTP, meaning the core concepts found in HTTP/1.1, such as methods, status codes, URIs, and header fields, remain the same. +Instead, HTTP/2 modifies how the data is formatted (framed) and transported between the client and server, both of which manage the entire process, and hides protocol complexity within a framing layer. +As a result, all existing applications can be delivered over the protocol without modification. ## See also - [HTTP on MDN](/en-US/docs/Web/HTTP) -- [HTTP/2](https://en.wikipedia.org/wiki/HTTP/2) on Wikipedia - Related glossary terms: - {{glossary("HTTP")}} - {{glossary("Latency")}} +- {{RFC("7540", "Server Push", "8.2")}} +- [HTTP/2](https://en.wikipedia.org/wiki/HTTP/2) on Wikipedia diff --git a/files/en-us/glossary/http_3/index.md b/files/en-us/glossary/http_3/index.md index 2ab88ddb4422629..634a074fc61a1d1 100644 --- a/files/en-us/glossary/http_3/index.md +++ b/files/en-us/glossary/http_3/index.md @@ -6,13 +6,13 @@ page-type: glossary-definition {{GlossarySidebar}} -**HTTP/3** is the upcoming major revision of the [HTTP network protocol](/en-US/docs/Web/HTTP/Basics_of_HTTP), succeeding {{glossary("HTTP 2", "HTTP/2")}}. +**HTTP/3** is a major revision of the [HTTP network protocol](/en-US/docs/Web/HTTP), succeeding {{glossary("HTTP 2", "HTTP/2")}}. -The major point of HTTP/3 is that it uses a new {{glossary("UDP")}} protocol named QUIC, instead of {{glossary("TCP")}}. +The most notable difference in HTTP/3 is that it uses a protocol named QUIC over {{glossary("UDP")}} instead of {{glossary("TCP")}}. ## See also -- [HTTP on MDN](/en-US/docs/Web/HTTP) +- [HTTP documentation](/en-US/docs/Web/HTTP) - [HTTP/3](https://en.wikipedia.org/wiki/HTTP/3) on Wikipedia - Related glossary terms: - {{glossary("HTTP")}} diff --git a/files/en-us/glossary/hyperlink/index.md b/files/en-us/glossary/hyperlink/index.md index 35cdbf6a614f1f1..f19ba2fae3b816b 100644 --- a/files/en-us/glossary/hyperlink/index.md +++ b/files/en-us/glossary/hyperlink/index.md @@ -11,7 +11,7 @@ Hyperlinks connect webpages or data items to one another. In HTML, {{HTMLElement ## See also - [Hyperlink](https://en.wikipedia.org/wiki/Hyperlink) on Wikipedia -- The [Hyperlink](/en-US/docs/Learn/HTML/Introduction_to_HTML/Creating_hyperlinks) guide on MDN +- [Creating links](/en-US/docs/Learn_web_development/Core/Structuring_content/Creating_links) - [Links in HTML Documents - W3C](https://www.w3.org/TR/1999/REC-html401-19991224/struct/links.html) - [HTML a - hyperlink - W3C](https://w3c.github.io/html-reference/a.html) - [`` on MDN](/en-US/docs/Web/HTML/Element/a) diff --git a/files/en-us/glossary/iife/index.md b/files/en-us/glossary/iife/index.md index 51ec1142139f450..990fb2eeaa78b9c 100644 --- a/files/en-us/glossary/iife/index.md +++ b/files/en-us/glossary/iife/index.md @@ -6,155 +6,43 @@ page-type: glossary-definition {{GlossarySidebar}} -An **IIFE** (Immediately Invoked Function Expression) is a {{glossary("JavaScript")}} {{glossary("function")}} that runs as soon as it is defined. -The name IIFE is promoted by Ben Alman in [his blog](https://web.archive.org/web/20171201033208/http://benalman.com/news/2010/11/immediately-invoked-function-expression/#iife). +An **IIFE** (Immediately Invoked Function Expression) is an idiom in which a {{glossary("JavaScript")}} {{glossary("function")}} runs as soon as it is defined. It is also known as a _self-executing anonymous function_. The name IIFE is promoted by Ben Alman in [his blog](https://web.archive.org/web/20171201033208/http://benalman.com/news/2010/11/immediately-invoked-function-expression/#iife). ```js +// standard IIFE (function () { - // … + // statements… })(); +// arrow function variant (() => { - // … + // statements… })(); +// async IIFE (async () => { - // … + // statements… })(); ``` -It is a design pattern which is also known as a {{glossary("Self-Executing Anonymous Function")}} and contains two major parts: +It contains two major parts: -1. The first is the anonymous function with lexical scope enclosed within the [grouping operator](/en-US/docs/Web/JavaScript/Reference/Operators/Grouping) `()`. This prevents accessing variables within the IIFE idiom as well as polluting the global scope. -2. The second part creates the immediately invoked function expression `()` through which the JavaScript engine will directly interpret the function. +1. A [function _expression_](/en-US/docs/Web/JavaScript/Reference/Operators/function). This usually needs to be [enclosed in parentheses](/en-US/docs/Web/JavaScript/Reference/Operators/Grouping) in order to be parsed correctly. +2. Immediately _calling_ the function expression. Arguments may be provided, though IIFEs without arguments are more common. -## Use cases +IIFEs are a common pattern used to execute arbitrarily many statements in their own scope (and possibly return a value), in a location that requires a single expression. They are similar to, but much more powerful than, the [comma operator](/en-US/docs/Web/JavaScript/Reference/Operators/Comma_operator), which can only execute multiple expressions and, therefore, does not provide a way to use local variables or control flow statements. -### Avoid polluting the global namespace +Use cases of IIFEs include: -Because our application could include many functions and global variables from different source files, it's -important to limit the number of global variables. If we have some initiation code that we don't need to use -again, we could use the IIFE pattern. As we will not reuse the code again, using IIFE in this case is better than -using a function declaration or a function expression. +- Avoiding polluting the global namespace by creating a new {{glossary("scope")}}. +- Creating a new async context to use {{jsxref("Operators/await", "await")}} in a non-async context. +- Computing values with complex logic, such as using multiple statements as a single expression. -```js -(() => { - // some initiation code - let firstVariable; - let secondVariable; -})(); - -// firstVariable and secondVariable will be discarded after the function is executed. -``` - -### Execute an async function - -An [`async`](/en-US/docs/Web/JavaScript/Reference/Operators/async_function) IIFE allows you to use [`await`](/en-US/docs/Web/JavaScript/Reference/Operators/await) and [`for-await`](/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of) even in older browsers and JavaScript runtimes that have no [top-level await](/en-US/docs/Web/JavaScript/Reference/Operators/await#top_level_await): - -```js -const getFileStream = async (url) => { - // implementation -}; - -(async () => { - const stream = await getFileStream("https://domain.name/path/file.ext"); - for await (const chunk of stream) { - console.log({ chunk }); - } -})(); -``` - -### The module pattern - -We would also use IIFE to create private and public variables and methods. For a more sophisticated use of the module -pattern and other use of IIFE, you could see the book Learning JavaScript Design Patterns by Addy Osmani. - -```js -const makeWithdraw = (balance) => - ((copyBalance) => { - let balance = copyBalance; // This variable is private - const doBadThings = () => { - console.log("I will do bad things with your money"); - }; - doBadThings(); - return { - withdraw(amount) { - if (balance >= amount) { - balance -= amount; - return balance; - } - return "Insufficient money"; - }, - }; - })(balance); - -const firstAccount = makeWithdraw(100); // "I will do bad things with your money" -console.log(firstAccount.balance); // undefined -console.log(firstAccount.withdraw(20)); // 80 -console.log(firstAccount.withdraw(30)); // 50 -console.log(firstAccount.doBadThings); // undefined; this method is private -const secondAccount = makeWithdraw(20); // "I will do bad things with your money" -console.log(secondAccount.withdraw(30)); // "Insufficient money" -console.log(secondAccount.withdraw(20)); // 0 -``` - -### For loop with var before ES6 - -We could see the following use of IIFE in some old code, before the introduction of the statements **let** and **const** -in **ES6** and the block scope. With the statement **var**, we have only function scopes and the global scope. -Suppose we want to create 2 buttons with the texts Button 0 and Button 1 and when we click -them, we would like them to alert 0 and 1. The following code doesn't work: - -```js -for (var i = 0; i < 2; i++) { - const button = document.createElement("button"); - button.innerText = `Button ${i}`; - button.onclick = function () { - console.log(i); - }; - document.body.appendChild(button); -} -console.log(i); // 2 -``` - -When clicked, both Button 0 and Button 1 alert 2 because `i` is global, -with the last value 2. To fix this problem before ES6, we could use the IIFE pattern: - -```js -for (var i = 0; i < 2; i++) { - const button = document.createElement("button"); - button.innerText = `Button ${i}`; - button.onclick = (function (copyOfI) { - return function () { - console.log(copyOfI); - }; - })(i); - document.body.appendChild(button); -} -console.log(i); // 2 -``` - -When clicked, Buttons 0 and 1 alert 0 and 1. -The variable `i` is globally defined. -Using the statement **let**, we could simply do: - -```js -for (let i = 0; i < 2; i++) { - const button = document.createElement("button"); - button.innerText = `Button ${i}`; - button.onclick = function () { - console.log(i); - }; - document.body.appendChild(button); -} -console.log(i); // Uncaught ReferenceError: i is not defined. -``` - -When clicked, these buttons alert 0 and 1. +For code examples, see the [`function` expression](/en-US/docs/Web/JavaScript/Reference/Operators/function) and [`async function` expression](/en-US/docs/Web/JavaScript/Reference/Operators/async_function) reference pages. ## See also - [IIFE](https://en.wikipedia.org/wiki/Immediately-invoked_function_expression) (Wikipedia) +- [Comma operator](/en-US/docs/Web/JavaScript/Reference/Operators/Comma_operator) - Related glossary terms: - {{Glossary("Function")}} - - {{Glossary("Self-Executing Anonymous Function")}} diff --git a/files/en-us/glossary/ink_overflow/index.md b/files/en-us/glossary/ink_overflow/index.md index 4f9c846339b19c1..19f19e23c3a12b2 100644 --- a/files/en-us/glossary/ink_overflow/index.md +++ b/files/en-us/glossary/ink_overflow/index.md @@ -10,7 +10,7 @@ The **ink overflow** of a box refers to the part of the box and its contents tha Ink overflow is the overflow of painting effects such as [box shadows](/en-US/docs/Web/CSS/box-shadow), [border images](/en-US/docs/Web/CSS/CSS_backgrounds_and_borders), [text decoration](/en-US/docs/Web/CSS/CSS_text_decoration), [outlines](/en-US/docs/Web/CSS/outline), etc. that do not affect layout or otherwise extend the scrollable overflow area. Ink overflow is also the overhanging of glyphs, such as ascenders and descenders extending outside the em box. -As [replaced elements](/en-US/docs/Web/CSS/Replaced_element) always establish an independent [formatting context](/en-US/docs/Web/CSS/CSS_flow_layout/Introduction_to_formatting_contexts), any overflow of replaced content is always ink overflow (as opposed to [scrollable overflow](/en-US/docs/Learn/CSS/Building_blocks/Overflowing_content)). +As [replaced elements](/en-US/docs/Web/CSS/Replaced_element) always establish an independent [formatting context](/en-US/docs/Web/CSS/CSS_flow_layout/Introduction_to_formatting_contexts), any overflow of replaced content is always ink overflow (as opposed to [scrollable overflow](/en-US/docs/Learn_web_development/Core/Styling_basics/Overflow)). ## See also diff --git a/files/en-us/glossary/interaction_to_next_paint/index.md b/files/en-us/glossary/interaction_to_next_paint/index.md new file mode 100644 index 000000000000000..a40d5578b0ff421 --- /dev/null +++ b/files/en-us/glossary/interaction_to_next_paint/index.md @@ -0,0 +1,28 @@ +--- +title: Interaction to Next Paint (INP) +slug: Glossary/Interaction_to_next_paint +page-type: glossary-definition +--- + +{{GlossarySidebar}} + +**Interaction to Next Paint** (INP) measures the responsiveness of a website to user interactions (for example, when they click a link, tap on a button, or use a custom, JavaScript-powered control). + +INP was designed by Google as one of the [Core Web Vital](https://web.dev/articles/vitals) metrics, replacing {{Glossary("First Input Delay")}} (FID) in May 2024. There are two key differences between FID and INP that make INP a more reliable measure of a page's responsiveness: + +- FID measures only the first user interaction, whereas INP considers all user interactions. +- FID only measures the input delay of the interaction, whereas INP measures for a longer period: beginning at the input delay, followed by the time it takes to process event handlers, and the browser's presentation time until the browser has painted the next frame. + +INP measures the worst length of time (minus some outliers), in milliseconds, between the user interaction on a web page and the next frame presentation after that interaction is processed. Scrolling and zooming are not included in this metric. INP is calculated using the [Event Timing API](/en-US/docs/Web/API/PerformanceEventTiming). Asynchronous operations such as network fetches or file reads usually do not delay INP as painting can occur while such operations are handled. + +All eligible interactions throughout the page lifetime are considered. For highly interactive pages of 50 or more interactions, the 98th percentile is used to exclude some extreme outliers that are not reflective of overall page responsiveness. + +The longer the delay, the worse the user experience. The [Long Animation Frames API](/en-US/docs/Web/API/Performance_API/Long_animation_frame_timing) can help identify causes of high INP. + +## See also + +- [Long animation frame timing](/en-US/docs/Web/API/Performance_API/Long_animation_frame_timing) +- [PerformanceEventTiming](/en-US/docs/Web/API/PerformanceEventTiming) +- [INP](https://web.dev/articles/inp) on web.dev (2023) +- [Optimizing INP](https://web.dev/articles/optimizing-inp) on web.dev (2023) +- [Interaction to Next Paint is officially a Core Web Vital](https://web.dev/blog/inp-cwv-launch) on web.dev (2024) diff --git a/files/en-us/glossary/internet/index.md b/files/en-us/glossary/internet/index.md index 1a0cf76e03fe645..095e5bf480fadbc 100644 --- a/files/en-us/glossary/internet/index.md +++ b/files/en-us/glossary/internet/index.md @@ -10,4 +10,4 @@ The Internet is a worldwide network of networks that uses the Internet protocol ## See also -- [How the Internet works](/en-US/docs/Learn/Common_questions/Web_mechanics/How_does_the_Internet_work) (introduction for beginners) +- [How the Internet works](/en-US/docs/Learn_web_development/Howto/Web_mechanics/How_does_the_Internet_work) (introduction for beginners) diff --git a/files/en-us/glossary/intrinsic_size/index.md b/files/en-us/glossary/intrinsic_size/index.md index 90e6be3785bb3a7..4568d2714989f52 100644 --- a/files/en-us/glossary/intrinsic_size/index.md +++ b/files/en-us/glossary/intrinsic_size/index.md @@ -6,7 +6,7 @@ page-type: glossary-definition {{GlossarySidebar}} -In CSS, the _intrinsic size_ of an element is the size it would be based purely on its content without taking into account the effects of the context it appears in. For example, the sizing applied by CSS [box model](/en-US/docs/Learn/CSS/Building_blocks/The_box_model) properties. An element's intrinsic sizes are represented by its {{cssxref("min-content")}} and {{cssxref("max-content")}} sizes. +In CSS, the _intrinsic size_ of an element is the size it would be based purely on its content without taking into account the effects of the context it appears in. For example, the sizing applied by CSS [box model](/en-US/docs/Learn_web_development/Core/Styling_basics/Box_model) properties. An element's intrinsic sizes are represented by its {{cssxref("min-content")}} and {{cssxref("max-content")}} sizes. Inline elements are sized intrinsically: [sizing](/en-US/docs/Web/CSS/CSS_box_sizing) and [box](/en-US/docs/Web/CSS/CSS_box_model) properties including {{cssxref("height")}}, {{cssxref("width")}}, {{cssxref("block-size")}}, {{cssxref("inline-size")}}, and {{cssxref("padding-block")}} and {{cssxref("margin-block")}} have no impact on them ( though {{cssxref("margin-inline")}} and {{cssxref("padding-inline")}} do). @@ -64,6 +64,8 @@ The opposite of _intrinsic size_ is **_extrinsic size_**, which is based on the ## See also - CSS {{cssxref("min-content")}}, {{cssxref("max-content")}}, and {{cssxref("fit-content")}} property values. -- CSS {{cssxref("aspect-ratio")}} property +- {{cssxref("interpolate-size")}} +- {{cssxref("aspect-ratio")}} +- {{cssxref("calc-size()")}} - [CSS box sizing](/en-US/docs/Web/CSS/CSS_box_sizing) module - [CSS sizing specification: intrinsic sizes](https://www.w3.org/TR/css-sizing-3/#intrinsic-sizes) diff --git a/files/en-us/glossary/isp/index.md b/files/en-us/glossary/isp/index.md index 59fafb8d446046d..cb21cb48a4b668b 100644 --- a/files/en-us/glossary/isp/index.md +++ b/files/en-us/glossary/isp/index.md @@ -10,5 +10,5 @@ An ISP (Internet Service Provider) sells Internet access, and sometimes email, w ## See also -- [How the Internet works](/en-US/docs/Learn/Common_questions/Web_mechanics/How_does_the_Internet_work) (explanation for beginners) +- [How the Internet works](/en-US/docs/Learn_web_development/Howto/Web_mechanics/How_does_the_Internet_work) (explanation for beginners) - [Internet service provider](https://en.wikipedia.org/wiki/Internet_service_provider) on Wikipedia diff --git a/files/en-us/glossary/javascript/index.md b/files/en-us/glossary/javascript/index.md index 63cfa9f84c78da6..7cadd825af71bd1 100644 --- a/files/en-us/glossary/javascript/index.md +++ b/files/en-us/glossary/javascript/index.md @@ -6,7 +6,7 @@ page-type: glossary-definition {{GlossarySidebar}} -JavaScript (or "JS") is a programming language used most often for dynamic client-side scripts on webpages, but it is also often used on the {{Glossary("Server","server")}}-side, using a runtime such as [Node.js](https://nodejs.org/en). +JavaScript (or "JS") is a programming language used most often for dynamic client-side scripts on webpages, but it is also often used on the {{Glossary("Server","server")}}-side, using a runtime such as {{Glossary("Node.js")}}, {{Glossary("Deno")}}, and [Bun](https://bun.sh/). JavaScript **should not** be confused with the [Java programming language](). Although _"Java"_ and _"JavaScript"_ are trademarks (or registered trademarks) of Oracle in the U.S. and other countries, the two programming languages are significantly different in their syntax, semantics, and use cases. diff --git a/files/en-us/glossary/json/index.md b/files/en-us/glossary/json/index.md index 3fec3eacff89081..cd5c3d933562bb6 100644 --- a/files/en-us/glossary/json/index.md +++ b/files/en-us/glossary/json/index.md @@ -12,5 +12,5 @@ JSON can represent numbers, booleans, strings, `null`, arrays (ordered sequences ## See also +- [JSON](/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) - [JSON](https://en.wikipedia.org/wiki/JSON) on Wikipedia -- [JSON](/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) on MDN diff --git a/files/en-us/glossary/just_in_time_compilation/index.md b/files/en-us/glossary/just_in_time_compilation/index.md new file mode 100644 index 000000000000000..4281497be7ad367 --- /dev/null +++ b/files/en-us/glossary/just_in_time_compilation/index.md @@ -0,0 +1,19 @@ +--- +title: Just-In-Time Compilation (JIT) +slug: Glossary/Just_In_Time_Compilation +page-type: glossary-definition +--- + +{{GlossarySidebar}} + +**JIT** (_Just-In-Time Compilation_) is a {{glossary("compile", "compilation")}} process in which code is translated from an intermediate representation or a higher-level language (e.g., {{glossary("JavaScript")}} or Java bytecode) into machine code _at runtime_, rather than prior to execution. This approach combines the benefits of both interpretation and ahead-of-time (AOT) compilation. + +JIT compilers typically continuously analyze the code as it is executed, identifying parts of the code that are executed frequently (hot spots). If the speedup gains outweigh the compilation overhead, then the JIT compilers will compile those parts into machine code. The compiled code is then executed directly by the processor, which can result in significant performance improvements. + +JIT is commonly used in modern {{glossary("browser", "web browsers")}} to optimize the performance of JavaScript code. + +## See also + +- [Just-In-Time Compilation](https://en.wikipedia.org/wiki/Just-in-time_compilation) on Wikipedia +- Related glossary terms: + - {{glossary("compile")}} diff --git a/files/en-us/glossary/largest_contentful_paint/index.md b/files/en-us/glossary/largest_contentful_paint/index.md index d62ebf5714e5d18..4f7822537eea273 100644 --- a/files/en-us/glossary/largest_contentful_paint/index.md +++ b/files/en-us/glossary/largest_contentful_paint/index.md @@ -1,5 +1,5 @@ --- -title: Largest contentful paint +title: Largest Contentful Paint (LCP) slug: Glossary/Largest_contentful_paint page-type: glossary-definition --- @@ -20,5 +20,5 @@ The following elements are considered when determining the LCP: - [`LargestContentfulPaint`](/en-US/docs/Web/API/LargestContentfulPaint) - Related glossary terms: - - {{Glossary("First contentful paint")}} - - {{Glossary("First paint")}} + - {{Glossary("First Contentful Paint")}} + - {{Glossary("First Paint")}} diff --git a/files/en-us/glossary/literal/index.md b/files/en-us/glossary/literal/index.md index 6036bd56bd64b67..6e53b526ff8777c 100644 --- a/files/en-us/glossary/literal/index.md +++ b/files/en-us/glossary/literal/index.md @@ -36,7 +36,7 @@ The following are examples of string literals: An object literal is a list of zero or more pairs of property names and associated values of an object, enclosed in curly braces (`{}`). -The following is an example of an object literal. The first element of the `car` object defines a property, `myCar`, and assigns to it a new string, "`Toyota`"; the second element, the `getCar` property, is immediately assigned the result of invoking the function `carTypes('Honda')`; the third element, the `special` property, uses an existing variable (`sales`). +The following is an example of an object literal. The first element of the `car` object defines a property, `myCar`, and assigns to it a new string, `"Toyota"`; the second element, the `getCar` property, is immediately assigned the result of invoking the function `carTypes('Honda')`; the third element, the `special` property, uses an existing variable (`sales`). ```js const sales = "BMW"; diff --git a/files/en-us/glossary/lossy_compression/index.md b/files/en-us/glossary/lossy_compression/index.md index c413b75b47a6605..004f1997b50971f 100644 --- a/files/en-us/glossary/lossy_compression/index.md +++ b/files/en-us/glossary/lossy_compression/index.md @@ -8,7 +8,7 @@ page-type: glossary-definition **Lossy compression**, or irreversible compression, is a data-compression method that uses inexact approximations and partial-data discarding to represent content. In simpler terms: lossy compression causes data from the initial file to be lost, possibly causing degradation in quality. The process of such compression is irreversible; once lossy compression of the content has been performed, the content cannot be restored to its original state. Therefore, content that has undergone lossy compression should generally not be further edited. -Lossy compression is widely used in image formats such as {{glossary("JPEG")}}, {{glossary("WebP")}}, and audio and video formats such as [MP3, MP4, H.264 and others](/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types). +Lossy compression is widely used in image formats such as {{glossary("JPEG")}}, {{glossary("WebP")}}, and audio and video formats such as [MP3, MP4, H.264 and others](/en-US/docs/Web/HTTP/MIME_types/Common_types). Compression methods such as {{glossary("WebP")}} are capable of [both lossy and lossless compression](https://developers.google.com/speed/webp/docs/compression) depending on the compression level or the options you want to use during encoding. ![Lossy compression image](2019-11-18.png) diff --git a/files/en-us/glossary/ltr/index.md b/files/en-us/glossary/ltr/index.md index c45504363a82e3b..e1b9ce9aebe4b57 100644 --- a/files/en-us/glossary/ltr/index.md +++ b/files/en-us/glossary/ltr/index.md @@ -20,8 +20,8 @@ The opposite of LTR, {{Glossary("RTL")}} (Right To Left) is used in other common - {{Glossary("RTL")}} - {{Glossary("BiDi")}} - [HTML global attributes](/en-US/docs/Web/HTML/Global_attributes) - - [dir](/en-US/docs/Web/HTML/Global_attributes#dir) - - [lang](/en-US/docs/Web/HTML/Global_attributes#lang) + - [dir](/en-US/docs/Web/HTML/Global_attributes/dir) + - [lang](/en-US/docs/Web/HTML/Global_attributes/lang) - [CSS](/en-US/docs/Web/CSS) - {{cssxref(":dir")}} - {{cssxref("direction")}} diff --git a/files/en-us/glossary/main_thread/index.md b/files/en-us/glossary/main_thread/index.md index bf3769c30b2b88a..7dd266b94869c77 100644 --- a/files/en-us/glossary/main_thread/index.md +++ b/files/en-us/glossary/main_thread/index.md @@ -12,7 +12,7 @@ Unless intentionally using a [web worker](/en-US/docs/Web/API/Web_Workers_API/Us ## See also -- [Asynchronous JavaScript](/en-US/docs/Learn/JavaScript/Asynchronous) +- [Asynchronous JavaScript](/en-US/docs/Learn_web_development/Extensions/Async_JS) - [Web worker API](/en-US/docs/Web/API/Web_Workers_API) - [Service worker API](/en-US/docs/Web/API/Service_Worker_API) - Related glossary terms: diff --git a/files/en-us/glossary/media/audio-visual_presentation/index.md b/files/en-us/glossary/media/audio-visual_presentation/index.md index 83a331af55cf322..2100dc6ba080b3c 100644 --- a/files/en-us/glossary/media/audio-visual_presentation/index.md +++ b/files/en-us/glossary/media/audio-visual_presentation/index.md @@ -16,5 +16,4 @@ Media content can be recorded, played back, presented, and at times interacted w - [Multimedia](https://en.wikipedia.org/wiki/Multimedia) on Wikipedia - [Web media technologies](/en-US/docs/Web/Media): a guide to all the ways media can be used in web content -- [Multimedia and Embedding](/en-US/docs/Learn/HTML/Multimedia_and_embedding) in the MDN learning area - {{HTMLElement("audio")}} and {{HTMLElement("video")}} elements, used to present media in {{Glossary("HTML")}} documents diff --git a/files/en-us/glossary/media/css/index.md b/files/en-us/glossary/media/css/index.md index 0f0f7677e871de8..e897855d5e3a3e7 100644 --- a/files/en-us/glossary/media/css/index.md +++ b/files/en-us/glossary/media/css/index.md @@ -16,5 +16,5 @@ CSS offers several features that allow you to tweak your document's styles—or - [Using media queries](/en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries) - [Media queries](/en-US/docs/Web/CSS/CSS_media_queries) -- {{cssxref("@media")}} [at-rule](/en-US/docs/Web/CSS/At-rule): Conditionally apply part of a [stylesheet](/en-US/docs/Learn/CSS/First_steps/How_CSS_works#applying_css_to_the_dom), based on the result of a media query. +- {{cssxref("@media")}} [at-rule](/en-US/docs/Web/CSS/At-rule): Conditionally apply part of a CSS stylesheet, based on the result of a media query. - {{domxref("Window.matchMedia()")}}: Test the viewing device against a media query diff --git a/files/en-us/glossary/metadata/index.md b/files/en-us/glossary/metadata/index.md index 7749cbc9c8ac1c1..490eaa40b81491c 100644 --- a/files/en-us/glossary/metadata/index.md +++ b/files/en-us/glossary/metadata/index.md @@ -10,6 +10,6 @@ page-type: glossary-definition ## See also -- [Learn: metadata](/en-US/docs/Learn/HTML/Introduction_to_HTML/The_head_metadata_in_HTML#metadata_the_meta_element) +- [Learn: metadata](/en-US/docs/Learn_web_development/Core/Structuring_content/Webpage_metadata#metadata_the_meta_element) - [metadata](https://en.wikipedia.org/wiki/Metadata) on Wikipedia - The {{htmlelement("meta")}} element on MDN diff --git a/files/en-us/glossary/mime_type/index.md b/files/en-us/glossary/mime_type/index.md index 2006f51e3da7e25..bfc33c966d44ac2 100644 --- a/files/en-us/glossary/mime_type/index.md +++ b/files/en-us/glossary/mime_type/index.md @@ -15,7 +15,7 @@ The name originates from the {{glossary("mime","MIME")}} standard originally use - [Internet media type](https://en.wikipedia.org/wiki/Internet_media_type) on Wikipedia - [List of MIME types](https://www.iana.org/assignments/media-types/media-types.xhtml) -- [Properly Configuring Server MIME Types](/en-US/docs/Learn/Server-side/Configuring_server_MIME_types) -- Details information about the usage of [MIME Types](/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) in a Web context. -- [Incomplete list of MIME types](/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types) +- [Properly Configuring Server MIME Types](/en-US/docs/Learn_web_development/Extensions/Server-side/Configuring_server_MIME_types) +- Details information about the usage of [MIME Types](/en-US/docs/Web/HTTP/MIME_types) in a Web context. +- [Incomplete list of MIME types](/en-US/docs/Web/HTTP/MIME_types/Common_types) - [MediaRecorder.mimeType](/en-US/docs/Web/API/MediaRecorder/mimeType) diff --git a/files/en-us/glossary/oop/index.md b/files/en-us/glossary/oop/index.md index a1c4f3e5c162153..cd2f0c1d8a93126 100644 --- a/files/en-us/glossary/oop/index.md +++ b/files/en-us/glossary/oop/index.md @@ -13,5 +13,5 @@ page-type: glossary-definition ## See also - [Object-oriented programming](https://en.wikipedia.org/wiki/Object-oriented_programming) on Wikipedia -- [Introduction to object-oriented JavaScript](/en-US/docs/Learn/JavaScript/Objects) +- [Introduction to object-oriented JavaScript](/en-US/docs/Learn_web_development/Extensions/Advanced_JavaScript_objects) - [Inheritance and the prototype chain](/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain) diff --git a/files/en-us/glossary/page_load_time/index.md b/files/en-us/glossary/page_load_time/index.md index 7a56ad16b4b2b03..9ae8ce6cd31ab18 100644 --- a/files/en-us/glossary/page_load_time/index.md +++ b/files/en-us/glossary/page_load_time/index.md @@ -11,7 +11,7 @@ page-type: glossary-definition ```js let time = performance.timing; -let pageloadtime = time.loadEventStart - time.navigationStart; +let pageloadTime = time.loadEventStart - time.navigationStart; ``` While page load time 'sounds' like the perfect web performance metric, it isn't. Load times can vary greatly between users depending on device capabilities, network conditions, and, to a lesser extent, distance from the server. The development environment, where page load time is measured, is likely an optimal experience, not reflective of your users' reality. In addition, web performance isn't just about when the load event happens. It's also about {{Glossary("perceived performance")}}, responsiveness, {{Glossary("jank")}} and jitter. diff --git a/files/en-us/glossary/parse/index.md b/files/en-us/glossary/parse/index.md index 01d6d29d7d09767..1bbca05872b7c11 100644 --- a/files/en-us/glossary/parse/index.md +++ b/files/en-us/glossary/parse/index.md @@ -8,7 +8,7 @@ page-type: glossary-definition Parsing means analyzing and converting a program into an internal format that a runtime environment can actually run, for example the {{glossary("JavaScript")}} engine inside browsers. -The [browser parses HTML](/en-US/docs/Learn/HTML) into a {{glossary('DOM')}} tree. HTML parsing involves [tokenization](/en-US/docs/Web/API/DOMTokenList) and tree construction. HTML tokens include start and end tags, as well as attribute names and values. If the document is well-formed, parsing it is straightforward and faster. The parser parses tokenized input into the document, building up the document tree. +The [browser parses HTML](/en-US/docs/Learn_web_development/Core/Structuring_content) into a {{glossary('DOM')}} tree. HTML parsing involves [tokenization](/en-US/docs/Web/API/DOMTokenList) and tree construction. HTML tokens include start and end tags, as well as attribute names and values. If the document is well-formed, parsing it is straightforward and faster. The parser parses tokenized input into the document, building up the document tree. When the HTML parser finds non-blocking resources, such as an image, the browser will request those resources and continue parsing. Parsing can continue when a CSS file is encountered, but ` -``` - -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", "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 9a675c368cb8687..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__advanced_styling/index.md +++ /dev/null @@ -1,67 +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 18b3da4523573a8..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__basic_controls/index.md +++ /dev/null @@ -1,63 +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 9d19cdc05f89216..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__form_structure/index.md +++ /dev/null @@ -1,28 +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 ef5a76b70d001e1..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__form_validation/index.md +++ /dev/null @@ -1,56 +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 1e30e7a9a400faa..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__html5_controls/index.md +++ /dev/null @@ -1,47 +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 fa07d9b916a5e37..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__other_controls/index.md +++ /dev/null @@ -1,63 +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 41ca2fd5e73fdd0..000000000000000 --- a/files/en-us/learn/forms/test_your_skills_colon__styling_basics/index.md +++ /dev/null @@ -1,26 +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 4e222420d969731..000000000000000 --- a/files/en-us/learn/forms/ui_pseudo-classes/index.md +++ /dev/null @@ -1,637 +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 [`