From 7bc404ab229e050bec28c03779be3d9ad1c79f36 Mon Sep 17 00:00:00 2001
From: Andi Pieper
Date: Wed, 11 Dec 2024 23:47:22 +0100
Subject: [PATCH 1/2] auto-fix links for zh-cn
---
.../index.md | 48 +++++++++----------
.../game_distribution/index.md | 8 ++--
.../game_monetization/index.md | 10 ++--
.../publishing_games/game_promotion/index.md | 10 ++--
files/zh-cn/games/publishing_games/index.md | 2 +-
.../3d_on_the_web/basic_theory/index.md | 2 +-
.../index.md | 6 +--
.../3d_on_the_web/glsl_shaders/index.md | 8 ++--
.../techniques/controls_gamepad_api/index.md | 2 +-
.../animations_and_tweens/index.md | 4 +-
.../bounce_off_the_walls/index.md | 4 +-
.../build_the_brick_field/index.md | 4 +-
.../2d_breakout_game_phaser/buttons/index.md | 4 +-
.../collision_detection/index.md | 6 +--
.../extra_lives/index.md | 6 +--
.../game_over/index.md | 4 +-
.../2d_breakout_game_phaser/index.md | 38 +++++++--------
.../initialize_the_framework/index.md | 4 +-
.../index.md | 4 +-
.../move_the_ball/index.md | 4 +-
.../2d_breakout_game_phaser/physics/index.md | 4 +-
.../player_paddle_and_controls/index.md | 4 +-
.../randomizing_gameplay/index.md | 4 +-
.../2d_breakout_game_phaser/scaling/index.md | 4 +-
.../the_score/index.md | 4 +-
.../win_the_game/index.md | 4 +-
.../bounce_off_the_walls/index.md | 4 +-
.../build_the_brick_field/index.md | 4 +-
.../collision_detection/index.md | 4 +-
.../create_the_canvas_and_draw_on_it/index.md | 4 +-
.../finishing_up/index.md | 6 +--
.../game_over/index.md | 4 +-
.../2d_breakout_game_pure_javascript/index.md | 24 +++++-----
.../mouse_controls/index.md | 4 +-
.../move_the_ball/index.md | 4 +-
.../paddle_and_keyboard_controls/index.md | 4 +-
.../track_the_score_and_win/index.md | 4 +-
files/zh-cn/glossary/dns/index.md | 2 +-
files/zh-cn/glossary/endianness/index.md | 4 +-
files/zh-cn/glossary/internet/index.md | 2 +-
files/zh-cn/glossary/isp/index.md | 2 +-
files/zh-cn/glossary/javascript/index.md | 2 +-
files/zh-cn/glossary/server/index.md | 2 +-
files/zh-cn/glossary/site/index.md | 2 +-
.../glossary/time_to_first_byte/index.md | 2 +-
files/zh-cn/glossary/type_coercion/index.md | 2 +-
files/zh-cn/glossary/viewport/index.md | 2 +-
.../accessibility/css_and_javascript/index.md | 20 ++++----
files/zh-cn/learn/accessibility/html/index.md | 22 ++++-----
.../learn/accessibility/multimedia/index.md | 16 +++----
.../accessibility/wai-aria_basics/index.md | 30 ++++++------
.../what_is_accessibility/index.md | 8 ++--
.../design_and_accessibility/index.md | 10 ++--
.../index.md | 6 +--
.../how_much_does_it_cost/index.md | 6 +--
.../common_questions/tools_and_setup/index.md | 16 +++----
.../upload_files_to_a_web_server/index.md | 2 +-
.../what_are_browser_developer_tools/index.md | 2 +-
.../common_questions/web_mechanics/index.md | 12 ++---
.../advanced_styling_effects/index.md | 8 ++--
.../building_blocks/debugging_css/index.md | 20 ++++----
.../fundamental_css_comprehension/index.md | 2 +-
.../index.md | 4 +-
.../images_media_form_elements/index.md | 8 ++--
.../sizing_items_in_css/index.md | 2 +-
.../learn/css/css_layout/flexbox/index.md | 8 ++--
.../zh-cn/learn/css/css_layout/grids/index.md | 6 +--
files/zh-cn/learn/css/css_layout/index.md | 4 +-
.../css/css_layout/introduction/index.md | 2 +-
.../css_layout/legacy_layout_methods/index.md | 14 +++---
.../css/css_layout/media_queries/index.md | 4 +-
.../practical_positioning_examples/index.md | 6 +--
.../css/css_layout/responsive_design/index.md | 10 ++--
files/zh-cn/learn/css/index.md | 2 +-
.../css/styling_text/fundamentals/index.md | 20 ++++----
files/zh-cn/learn/css/styling_text/index.md | 4 +-
.../css/styling_text/styling_lists/index.md | 6 +--
.../typesetting_a_homepage/index.md | 2 +-
.../learn/css/styling_text/web_fonts/index.md | 10 ++--
.../forms/basic_native_form_controls/index.md | 16 +++----
.../learn/forms/form_validation/index.md | 16 +++----
.../learn/forms/html5_input_types/index.md | 10 ++--
.../html_forms_in_legacy_browsers/index.md | 2 +-
files/zh-cn/learn/forms/index.md | 2 +-
.../learn/forms/other_form_controls/index.md | 2 +-
.../sending_and_retrieving_form_data/index.md | 14 +++---
.../learn/forms/your_first_form/index.md | 2 +-
.../html_basics/index.md | 4 +-
.../installing_basic_software/index.md | 2 +-
.../add_a_hit_map_on_top_of_an_image/index.md | 6 +--
.../author_fast-loading_html_pages/index.md | 2 +-
.../html/howto/use_data_attributes/index.md | 2 +-
.../debugging_html/index.md | 2 +-
.../document_and_website_structure/index.md | 10 ++--
.../index.md | 8 ++--
.../html/multimedia_and_embedding/index.md | 2 +-
files/zh-cn/learn/index.md | 2 +-
.../asynchronous/introducing_workers/index.md | 2 +-
.../javascript/asynchronous/promises/index.md | 2 +-
.../build_your_own_function/index.md | 4 +-
.../building_blocks/functions/index.md | 4 +-
.../building_blocks/looping_code/index.md | 14 +++---
.../building_blocks/return_values/index.md | 6 +--
.../fetching_data/index.md | 2 +-
.../third_party_apis/index.md | 4 +-
.../video_and_audio_apis/index.md | 2 +-
.../first_steps/a_first_splash/index.md | 8 ++--
.../javascript/first_steps/arrays/index.md | 6 +--
.../learn/javascript/first_steps/index.md | 2 +-
.../javascript/first_steps/math/index.md | 6 +--
.../useful_string_methods/index.md | 2 +-
.../javascript/first_steps/variables/index.md | 2 +-
.../first_steps/what_went_wrong/index.md | 4 +-
files/zh-cn/learn/javascript/howto/index.md | 2 +-
.../learn/javascript/objects/basics/index.md | 2 +-
files/zh-cn/learn/javascript/objects/index.md | 6 +--
.../objects/object_building_practice/index.md | 4 +-
.../learn/learning_and_getting_help/index.md | 2 +-
.../learn/performance/javascript/index.md | 2 +-
.../measuring_performance/index.md | 2 +-
.../perceived_performance/index.md | 2 +-
.../web_performance_basics/index.md | 6 +--
.../configuring_server_mime_types/index.md | 16 +++----
.../server-side/django/deployment/index.md | 2 +-
.../django/development_environment/index.md | 4 +-
.../django/django_assessment_blog/index.md | 2 +-
.../learn/server-side/django/forms/index.md | 8 ++--
.../server-side/django/home_page/index.md | 2 +-
files/zh-cn/learn/server-side/django/index.md | 2 +-
.../server-side/django/introduction/index.md | 2 +-
.../django/web_application_security/index.md | 6 +--
.../express_nodejs/deployment/index.md | 6 +--
.../development_environment/index.md | 2 +-
.../genre_detail_page/index.md | 2 +-
.../locallibrary_base_template/index.md | 2 +-
.../server-side/express_nodejs/forms/index.md | 4 +-
.../learn/server-side/express_nodejs/index.md | 2 +-
.../express_nodejs/mongoose/index.md | 4 +-
.../express_nodejs/skeleton_website/index.md | 2 +-
.../client-server_overview/index.md | 2 +-
.../learn/server-side/first_steps/index.md | 14 +++---
.../first_steps/introduction/index.md | 4 +-
.../first_steps/website_security/index.md | 4 +-
.../react_todo_list_beginning/index.md | 2 +-
.../vue_methods_events_models/index.md | 4 +-
.../feature_detection/index.md | 2 +-
.../html_and_css/index.md | 8 ++--
.../introduction/index.md | 4 +-
.../cross_browser_testing/javascript/index.md | 4 +-
.../your_own_automation_environment/index.md | 2 +-
.../command_line/index.md | 4 +-
.../introducing_complete_toolchain/index.md | 2 +-
files/zh-cn/mdn/community/index.md | 4 +-
.../howto/write_an_api_reference/index.md | 2 +-
.../write_an_api_reference/sidebars/index.md | 2 +-
.../page_structures/macros/other/index.md | 2 +-
.../writing_style_guide/index.md | 2 +-
files/zh-cn/mozilla/add-ons/index.md | 4 +-
.../add_a_button_to_the_toolbar/index.md | 4 +-
.../anatomy_of_a_webextension/index.md | 10 ++--
.../webextensions/api/browseraction/index.md | 2 +-
.../webextensions/api/contentscripts/index.md | 2 +-
.../api/downloads/download/index.md | 2 +-
.../webextensions/api/history/index.md | 12 ++---
.../add-ons/webextensions/api/i18n/index.md | 4 +-
.../add-ons/webextensions/api/index.md | 4 +-
.../add-ons/webextensions/api/menus/index.md | 2 +-
.../add-ons/webextensions/api/proxy/index.md | 4 +-
.../api/runtime/connectnative/index.md | 2 +-
.../webextensions/api/runtime/index.md | 2 +-
.../api/runtime/openoptionspage/index.md | 2 +-
.../api/runtime/sendnativemessage/index.md | 2 +-
.../webextensions/api/storage/index.md | 6 +--
.../add-ons/webextensions/api/tabs/index.md | 6 +--
.../webextensions/api/webrequest/index.md | 2 +-
.../api/webrequest/requestfilter/index.md | 2 +-
.../build_a_cross_browser_extension/index.md | 10 ++--
.../webextensions/content_scripts/index.md | 12 ++---
.../content_security_policy/index.md | 10 ++--
.../extending_the_developer_tools/index.md | 8 ++--
.../implement_a_settings_page/index.md | 4 +-
.../mozilla/add-ons/webextensions/index.md | 2 +-
.../interact_with_the_clipboard/index.md | 2 +-
.../intercept_http_requests/index.md | 4 +-
.../manifest.json/background/index.md | 2 +-
.../manifest.json/browser_action/index.md | 6 +--
.../manifest.json/default_locale/index.md | 2 +-
.../manifest.json/developer/index.md | 2 +-
.../manifest.json/homepage_url/index.md | 4 +-
.../webextensions/manifest.json/name/index.md | 2 +-
.../manifest.json/permissions/index.md | 10 ++--
.../manifest.json/short_name/index.md | 2 +-
.../web_accessible_resources/index.md | 2 +-
.../webextensions/match_patterns/index.md | 2 +-
.../webextensions/modify_a_web_page/index.md | 8 ++--
.../webextensions/native_messaging/index.md | 8 ++--
.../user_interface/browser_styles/index.md | 2 +-
.../webextensions/user_interface/index.md | 4 +-
.../user_interface/page_actions/index.md | 2 +-
.../user_interface/toolbar_button/index.md | 8 ++--
.../your_first_webextension/index.md | 30 ++++++------
.../your_second_webextension/index.md | 16 +++----
.../1.5/using_firefox_1.5_caching/index.md | 4 +-
.../mozilla/firefox/releases/14/index.md | 8 ++--
.../mozilla/firefox/releases/18/index.md | 12 ++---
.../mozilla/firefox/releases/19/index.md | 6 +--
.../mozilla/firefox/releases/20/index.md | 12 ++---
.../mozilla/firefox/releases/21/index.md | 4 +-
.../mozilla/firefox/releases/22/index.md | 8 ++--
.../mozilla/firefox/releases/24/index.md | 4 +-
.../mozilla/firefox/releases/26/index.md | 2 +-
.../releases/3/site_compatibility/index.md | 2 +-
.../releases/3/updating_extensions/index.md | 4 +-
.../mozilla/firefox/releases/32/index.md | 24 +++++-----
.../mozilla/firefox/releases/41/index.md | 22 ++++-----
.../mozilla/firefox/releases/59/index.md | 10 ++--
.../mozilla/firefox/releases/65/index.md | 4 +-
.../aria/roles/listbox_role/index.md | 6 +--
.../aria/roles/listitem_role/index.md | 2 +-
files/zh-cn/web/accessibility/index.md | 4 +-
.../mobile_accessibility_checklist/index.md | 4 +-
.../web/api/abortcontroller/abort/index.md | 4 +-
.../abortcontroller/abortcontroller/index.md | 2 +-
files/zh-cn/web/api/abortcontroller/index.md | 4 +-
.../web/api/abortcontroller/signal/index.md | 2 +-
files/zh-cn/web/api/abortsignal/index.md | 2 +-
.../zh-cn/web/api/ambientlightsensor/index.md | 2 +-
.../web/api/analysernode/fftsize/index.md | 6 +--
.../analysernode/frequencybincount/index.md | 4 +-
.../getbytefrequencydata/index.md | 2 +-
.../getbytetimedomaindata/index.md | 2 +-
.../getfloatfrequencydata/index.md | 4 +-
files/zh-cn/web/api/analysernode/index.md | 2 +-
.../smoothingtimeconstant/index.md | 4 +-
.../web/api/audiobuffersourcenode/index.md | 4 +-
.../api/audiobuffersourcenode/start/index.md | 2 +-
.../zh-cn/web/api/audiocontext/close/index.md | 4 +-
.../createmediaelementsource/index.md | 4 +-
.../createmediastreamsource/index.md | 2 +-
files/zh-cn/web/api/audiocontext/index.md | 2 +-
.../web/api/audiocontext/resume/index.md | 2 +-
.../web/api/audiocontext/suspend/index.md | 4 +-
.../web/api/audiodestinationnode/index.md | 2 +-
.../maxchannelcount/index.md | 4 +-
files/zh-cn/web/api/audiolistener/index.md | 4 +-
.../zh-cn/web/api/audionode/connect/index.md | 8 ++--
.../audioscheduledsourcenode/stop/index.md | 2 +-
.../web/api/audioworkletprocessor/index.md | 2 +-
.../createbiquadfilter/index.md | 4 +-
.../baseaudiocontext/createbuffer/index.md | 6 +--
.../createbuffersource/index.md | 4 +-
.../createchannelmerger/index.md | 2 +-
.../createchannelsplitter/index.md | 2 +-
.../baseaudiocontext/createconvolver/index.md | 2 +-
.../api/baseaudiocontext/createdelay/index.md | 2 +-
.../createoscillator/index.md | 4 +-
.../createperiodicwave/index.md | 2 +-
.../createwaveshaper/index.md | 6 +--
.../api/baseaudiocontext/currenttime/index.md | 2 +-
.../baseaudiocontext/decodeaudiodata/index.md | 4 +-
.../api/baseaudiocontext/destination/index.md | 2 +-
.../api/baseaudiocontext/listener/index.md | 2 +-
.../api/baseaudiocontext/samplerate/index.md | 2 +-
.../web/api/baseaudiocontext/state/index.md | 2 +-
.../statechange_event/index.md | 4 +-
.../zh-cn/web/api/beforeunloadevent/index.md | 2 +-
files/zh-cn/web/api/biquadfilternode/index.md | 2 +-
files/zh-cn/web/api/cache/add/index.md | 2 +-
files/zh-cn/web/api/cache/addall/index.md | 2 +-
files/zh-cn/web/api/cache/delete/index.md | 2 +-
files/zh-cn/web/api/cache/index.md | 2 +-
files/zh-cn/web/api/cache/keys/index.md | 2 +-
files/zh-cn/web/api/cache/match/index.md | 2 +-
files/zh-cn/web/api/cache/matchall/index.md | 2 +-
files/zh-cn/web/api/cache/put/index.md | 2 +-
.../web/api/cachestorage/delete/index.md | 2 +-
files/zh-cn/web/api/cachestorage/has/index.md | 2 +-
files/zh-cn/web/api/cachestorage/index.md | 2 +-
.../zh-cn/web/api/cachestorage/keys/index.md | 2 +-
.../zh-cn/web/api/cachestorage/match/index.md | 2 +-
.../zh-cn/web/api/cachestorage/open/index.md | 2 +-
.../manipulating_video_using_canvas/index.md | 6 +--
.../tutorial/advanced_animations/index.md | 6 +--
.../canvas_api/tutorial/basic_usage/index.md | 2 +-
.../tutorial/drawing_shapes/index.md | 4 +-
.../canvas_api/tutorial/drawing_text/index.md | 4 +-
.../api/canvas_api/tutorial/finale/index.md | 6 +--
.../web/api/canvas_api/tutorial/index.md | 6 +--
.../tutorial/optimizing_canvas/index.md | 2 +-
.../pixel_manipulation_with_canvas/index.md | 2 +-
.../tutorial/transformations/index.md | 2 +-
.../canvas_api/tutorial/using_images/index.md | 4 +-
.../miterlimit/index.md | 2 +-
.../zh-cn/web/api/channelmergernode/index.md | 2 +-
files/zh-cn/web/api/characterdata/index.md | 2 +-
files/zh-cn/web/api/client/index.md | 2 +-
files/zh-cn/web/api/clients/index.md | 4 +-
.../zh-cn/web/api/clients/openwindow/index.md | 2 +-
files/zh-cn/web/api/compositionevent/index.md | 4 +-
.../web/api/console/assert_static/index.md | 2 +-
.../web/api/console/dirxml_static/index.md | 2 +-
.../web/api/console/error_static/index.md | 2 +-
.../web/api/console/groupend_static/index.md | 4 +-
.../web/api/console/info_static/index.md | 4 +-
.../web/api/console/profile_static/index.md | 2 +-
.../web/api/console/timeend_static/index.md | 4 +-
.../web/api/console/timelog_static/index.md | 4 +-
.../web/api/console/timestamp_static/index.md | 4 +-
.../web/api/console/trace_static/index.md | 2 +-
.../web/api/console/warn_static/index.md | 2 +-
files/zh-cn/web/api/console_api/index.md | 10 ++--
files/zh-cn/web/api/convolvernode/index.md | 2 +-
.../api/credential_management_api/index.md | 2 +-
.../index.md | 6 +--
.../index.md | 6 +--
files/zh-cn/web/api/cssconditionrule/index.md | 4 +-
files/zh-cn/web/api/cssgroupingrule/index.md | 4 +-
files/zh-cn/web/api/cssmediarule/index.md | 2 +-
files/zh-cn/web/api/cssrule/csstext/index.md | 4 +-
files/zh-cn/web/api/cssrule/index.md | 2 +-
.../web/api/cssstyledeclaration/index.md | 2 +-
.../api/cssstylerule/selectortext/index.md | 4 +-
.../zh-cn/web/api/cssstylerule/style/index.md | 2 +-
.../web/api/cssstylesheet/deleterule/index.md | 4 +-
.../web/api/cssstylesheet/insertrule/index.md | 4 +-
.../api/customevent/initcustomevent/index.md | 2 +-
files/zh-cn/web/api/datatransfer/index.md | 2 +-
.../webkitgetasentry/index.md | 6 +--
.../api/dedicatedworkerglobalscope/index.md | 6 +--
.../detecting_device_orientation/index.md | 16 +++----
.../devicemotionevent/acceleration/index.md | 4 +-
.../accelerationincludinggravity/index.md | 4 +-
.../zh-cn/web/api/devicemotionevent/index.md | 4 +-
.../api/devicemotionevent/interval/index.md | 4 +-
.../devicemotionevent/rotationrate/index.md | 4 +-
.../deviceorientationevent/absolute/index.md | 4 +-
.../api/deviceorientationevent/alpha/index.md | 4 +-
.../api/deviceorientationevent/beta/index.md | 4 +-
.../api/deviceorientationevent/gamma/index.md | 4 +-
.../web/api/deviceorientationevent/index.md | 4 +-
files/zh-cn/web/api/document/cookie/index.md | 38 +++++++--------
.../web/api/document/createcomment/index.md | 2 +-
.../document/createdocumentfragment/index.md | 4 +-
.../web/api/document/createelementns/index.md | 6 +--
.../zh-cn/web/api/document/evaluate/index.md | 6 +--
.../web/api/document/execcommand/index.md | 2 +-
files/zh-cn/web/api/document/fgcolor/index.md | 4 +-
files/zh-cn/web/api/document/forms/index.md | 4 +-
.../document/getelementsbytagname/index.md | 4 +-
.../document/getelementsbytagnamens/index.md | 10 ++--
files/zh-cn/web/api/document/images/index.md | 2 +-
.../web/api/document/implementation/index.md | 4 +-
.../web/api/document/importnode/index.md | 6 +--
files/zh-cn/web/api/document/index.md | 4 +-
.../zh-cn/web/api/document/linkcolor/index.md | 6 +--
files/zh-cn/web/api/document/plugins/index.md | 2 +-
.../document/preferredstylesheetset/index.md | 2 +-
.../api/document/queryselectorall/index.md | 6 +--
.../web/api/document/releasecapture/index.md | 2 +-
.../zh-cn/web/api/domexception/code/index.md | 2 +-
.../web/api/domhighrestimestamp/index.md | 2 +-
.../createhtmldocument/index.md | 6 +--
files/zh-cn/web/api/domparser/index.md | 4 +-
files/zh-cn/web/api/domstringlist/index.md | 4 +-
.../web/api/dragevent/dragevent/index.md | 2 +-
.../web/api/dynamicscompressornode/index.md | 12 ++---
.../api/element/animationstart_event/index.md | 4 +-
.../zh-cn/web/api/element/blur_event/index.md | 4 +-
.../web/api/element/dblclick_event/index.md | 8 ++--
.../web/api/element/focusout_event/index.md | 4 +-
.../web/api/element/getattribute/index.md | 6 +--
.../web/api/element/hasattributes/index.md | 2 +-
.../api/element/insertadjacenthtml/index.md | 2 +-
.../web/api/element/keydown_event/index.md | 2 +-
.../web/api/element/keyup_event/index.md | 2 +-
.../web/api/element/namespaceuri/index.md | 2 +-
.../api/element/nextelementsibling/index.md | 12 ++---
.../zh-cn/web/api/element/outerhtml/index.md | 2 +-
.../web/api/element/queryselector/index.md | 6 +--
.../web/api/element/queryselectorall/index.md | 6 +--
files/zh-cn/web/api/element/tagname/index.md | 6 +--
.../api/element/touchcancel_event/index.md | 2 +-
.../web/api/element/wheel_event/index.md | 2 +-
files/zh-cn/web/api/event/eventphase/index.md | 2 +-
files/zh-cn/web/api/event/initevent/index.md | 2 +-
.../web/api/eventsource/error_event/index.md | 2 +-
files/zh-cn/web/api/eventtarget/index.md | 2 +-
files/zh-cn/web/api/extendableevent/index.md | 4 +-
files/zh-cn/web/api/fetch_api/index.md | 6 +--
.../web/api/fetch_api/using_fetch/index.md | 4 +-
.../firefox_support/index.md | 4 +-
.../introduction/index.md | 18 +++----
files/zh-cn/web/api/filesystem/index.md | 10 ++--
.../web/api/filesystemfileentry/index.md | 4 +-
files/zh-cn/web/api/filesystemsync/index.md | 10 ++--
.../zh-cn/web/api/fontfaceset/check/index.md | 2 +-
files/zh-cn/web/api/gamepad_api/index.md | 2 +-
.../geolocation/getcurrentposition/index.md | 2 +-
.../api/geolocation/watchposition/index.md | 2 +-
.../web/api/geolocationcoordinates/index.md | 4 +-
.../geolocationcoordinates/latitude/index.md | 2 +-
.../api/geolocationposition/coords/index.md | 2 +-
.../web/api/geolocationposition/index.md | 2 +-
.../web/api/geolocationpositionerror/index.md | 2 +-
files/zh-cn/web/api/headers/append/index.md | 4 +-
files/zh-cn/web/api/headers/get/index.md | 4 +-
files/zh-cn/web/api/headers/has/index.md | 4 +-
files/zh-cn/web/api/headers/values/index.md | 4 +-
files/zh-cn/web/api/history/state/index.md | 2 +-
files/zh-cn/web/api/houdini_apis/index.md | 2 +-
.../api/html_dom_api/microtask_guide/index.md | 6 +--
.../drag_operations/index.md | 18 +++----
.../file_drag_and_drop/index.md | 2 +-
.../web/api/html_drag_and_drop_api/index.md | 30 ++++++------
.../recommended_drag_types/index.md | 2 +-
.../api/htmlcanvaselement/getcontext/index.md | 6 +--
.../zh-cn/web/api/htmlcanvaselement/index.md | 2 +-
files/zh-cn/web/api/htmldocument/index.md | 2 +-
.../api/htmlelement/dragend_event/index.md | 2 +-
files/zh-cn/web/api/htmlelement/lang/index.md | 2 +-
.../web/api/htmlelement/offsetwidth/index.md | 2 +-
.../web/api/htmlfieldsetelement/index.md | 6 +--
.../web/api/htmlformelement/action/index.md | 4 +-
.../web/api/htmlformelement/enctype/index.md | 4 +-
.../htmlformelement/reportvalidity/index.md | 2 +-
.../web/api/htmlformelement/reset/index.md | 2 +-
.../web/api/htmlformelement/submit/index.md | 2 +-
.../zh-cn/web/api/htmliframeelement/index.md | 2 +-
.../web/api/htmlimageelement/decode/index.md | 2 +-
files/zh-cn/web/api/htmlimageelement/index.md | 6 +--
.../api/htmlinputelement/multiple/index.md | 4 +-
.../htmlinputelement/select_event/index.md | 6 +--
.../api/htmlmediaelement/crossorigin/index.md | 2 +-
.../api/htmlmediaelement/ended_event/index.md | 4 +-
files/zh-cn/web/api/htmlmediaelement/index.md | 8 ++--
.../web/api/htmlmediaelement/load/index.md | 2 +-
.../loadedmetadata_event/index.md | 2 +-
.../web/api/htmlobjectelement/usemap/index.md | 2 +-
.../web/api/htmlselectelement/remove/index.md | 2 +-
.../setcustomvalidity/index.md | 2 +-
files/zh-cn/web/api/htmlstyleelement/index.md | 2 +-
.../htmltableelement/createcaption/index.md | 2 +-
.../web/api/htmltableelement/rows/index.md | 4 +-
files/zh-cn/web/api/htmlvideoelement/index.md | 6 +--
files/zh-cn/web/api/idbcursor/index.md | 2 +-
.../idbdatabase/createobjectstore/index.md | 6 +--
.../idbdatabase/deleteobjectstore/index.md | 2 +-
files/zh-cn/web/api/idbdatabase/index.md | 8 ++--
files/zh-cn/web/api/idbfactory/index.md | 8 ++--
files/zh-cn/web/api/idbfactory/open/index.md | 6 +--
files/zh-cn/web/api/idbindex/index.md | 2 +-
.../zh-cn/web/api/idbobjectstore/add/index.md | 2 +-
.../web/api/idbobjectstore/keypath/index.md | 2 +-
.../zh-cn/web/api/idbobjectstore/put/index.md | 2 +-
files/zh-cn/web/api/idbrequest/index.md | 4 +-
files/zh-cn/web/api/idbtransaction/index.md | 6 +--
.../checking_when_a_deadline_is_due/index.md | 2 +-
files/zh-cn/web/api/indexeddb_api/index.md | 14 +++---
.../api/intersectionobserverentry/index.md | 2 +-
.../zh-cn/web/api/keyboardevent/key/index.md | 4 +-
.../web/api/keyboardevent/keycode/index.md | 42 ++++++++--------
files/zh-cn/web/api/location/hash/index.md | 2 +-
.../mediadevices/enumeratedevices/index.md | 6 +--
.../api/mediadevices/getusermedia/index.md | 10 ++--
.../api/mediaquerylist/addlistener/index.md | 4 +-
files/zh-cn/web/api/mediaquerylist/index.md | 6 +--
.../dataavailable_event/index.md | 4 +-
files/zh-cn/web/api/mediarecorder/index.md | 4 +-
.../istypesupported_static/index.md | 2 +-
.../api/mediarecorder/mediarecorder/index.md | 6 +--
.../api/mediastream_recording_api/index.md | 2 +-
.../index.md | 6 +--
.../api/mediastreamaudiosourcenode/index.md | 2 +-
.../mediastreamtrack/getconstraints/index.md | 2 +-
files/zh-cn/web/api/mediastreamtrack/index.md | 2 +-
.../api/mediastreamtrack/readystate/index.md | 2 +-
.../web/api/mediatrackconstraints/index.md | 2 +-
files/zh-cn/web/api/messageevent/index.md | 2 +-
.../api/mouseevent/initmouseevent/index.md | 4 +-
files/zh-cn/web/api/mousescrollevent/index.md | 8 ++--
files/zh-cn/web/api/mutationobserver/index.md | 6 +--
.../web/api/navigator/getusermedia/index.md | 6 +--
files/zh-cn/web/api/node/baseuri/index.md | 10 ++--
files/zh-cn/web/api/node/childnodes/index.md | 6 +--
files/zh-cn/web/api/node/clonenode/index.md | 2 +-
.../api/node/comparedocumentposition/index.md | 4 +-
files/zh-cn/web/api/node/firstchild/index.md | 8 ++--
.../zh-cn/web/api/node/haschildnodes/index.md | 4 +-
files/zh-cn/web/api/node/index.md | 2 +-
.../web/api/node/isdefaultnamespace/index.md | 2 +-
files/zh-cn/web/api/node/issamenode/index.md | 4 +-
.../web/api/node/lookupnamespaceuri/index.md | 2 +-
.../zh-cn/web/api/node/lookupprefix/index.md | 6 +--
files/zh-cn/web/api/node/nextsibling/index.md | 2 +-
files/zh-cn/web/api/node/nodename/index.md | 18 +++----
.../zh-cn/web/api/node/ownerdocument/index.md | 2 +-
files/zh-cn/web/api/node/parentnode/index.md | 4 +-
.../web/api/node/previoussibling/index.md | 6 +--
files/zh-cn/web/api/node/textcontent/index.md | 2 +-
files/zh-cn/web/api/nodelist/index.md | 6 +--
files/zh-cn/web/api/nodelist/item/index.md | 10 ++--
files/zh-cn/web/api/nodelist/length/index.md | 2 +-
.../complete_event/index.md | 2 +-
.../offlineaudiocontext/index.md | 2 +-
.../web/api/oscillatornode/detune/index.md | 4 +-
.../web/api/oscillatornode/frequency/index.md | 4 +-
files/zh-cn/web/api/oscillatornode/index.md | 4 +-
.../oscillatornode/setperiodicwave/index.md | 4 +-
files/zh-cn/web/api/path2d/index.md | 2 +-
files/zh-cn/web/api/performance/now/index.md | 4 +-
.../performance_api/resource_timing/index.md | 6 +--
.../api/performance_api/user_timing/index.md | 2 +-
.../web/api/performancepainttiming/index.md | 2 +-
.../performancetiming/dominteractive/index.md | 4 +-
files/zh-cn/web/api/periodicwave/index.md | 2 +-
files/zh-cn/web/api/pointer_events/index.md | 6 +--
files/zh-cn/web/api/pushmanager/index.md | 2 +-
.../web/api/pushmanager/subscribe/index.md | 2 +-
.../web/api/range/clonecontents/index.md | 2 +-
files/zh-cn/web/api/range/collapse/index.md | 2 +-
.../range/commonancestorcontainer/index.md | 2 +-
.../range/createcontextualfragment/index.md | 2 +-
.../web/api/range/deletecontents/index.md | 2 +-
.../zh-cn/web/api/range/endcontainer/index.md | 2 +-
.../web/api/range/getclientrects/index.md | 2 +-
files/zh-cn/web/api/range/selectnode/index.md | 2 +-
files/zh-cn/web/api/range/setend/index.md | 2 +-
files/zh-cn/web/api/range/setstart/index.md | 2 +-
.../api/readablestreamdefaultreader/index.md | 2 +-
files/zh-cn/web/api/request/cache/index.md | 6 +--
.../web/api/request/credentials/index.md | 4 +-
files/zh-cn/web/api/request/headers/index.md | 4 +-
files/zh-cn/web/api/request/method/index.md | 4 +-
files/zh-cn/web/api/request/mode/index.md | 8 ++--
files/zh-cn/web/api/request/request/index.md | 10 ++--
.../web/api/response/arraybuffer/index.md | 6 +--
files/zh-cn/web/api/response/blob/index.md | 6 +--
files/zh-cn/web/api/response/body/index.md | 2 +-
.../zh-cn/web/api/response/bodyused/index.md | 6 +--
files/zh-cn/web/api/response/clone/index.md | 2 +-
.../web/api/response/error_static/index.md | 4 +-
.../zh-cn/web/api/response/formdata/index.md | 4 +-
files/zh-cn/web/api/response/headers/index.md | 6 +--
files/zh-cn/web/api/response/json/index.md | 2 +-
files/zh-cn/web/api/response/ok/index.md | 2 +-
.../web/api/response/redirect_static/index.md | 6 +--
.../zh-cn/web/api/response/response/index.md | 6 +--
files/zh-cn/web/api/response/status/index.md | 6 +--
files/zh-cn/web/api/response/text/index.md | 6 +--
.../createdatachannel/index.md | 2 +-
.../rtcpeerconnection/createoffer/index.md | 8 ++--
.../web/api/screen/lockorientation/index.md | 4 +-
.../zh-cn/web/api/screen/orientation/index.md | 2 +-
.../web/api/scriptprocessornode/index.md | 2 +-
.../web/api/selection/getrangeat/index.md | 4 +-
files/zh-cn/web/api/selection/index.md | 8 ++--
files/zh-cn/web/api/sensor_apis/index.md | 2 +-
.../zh-cn/web/api/service_worker_api/index.md | 2 +-
.../web/api/serviceworkerglobalscope/index.md | 2 +-
files/zh-cn/web/api/speechgrammar/index.md | 2 +-
.../index.md | 2 +-
.../web/api/streams_api/concepts/index.md | 2 +-
files/zh-cn/web/api/streams_api/index.md | 4 +-
files/zh-cn/web/api/stylepropertymap/index.md | 2 +-
files/zh-cn/web/api/text/splittext/index.md | 2 +-
files/zh-cn/web/api/textdecoder/index.md | 2 +-
.../api/texttrack/cuechange_event/index.md | 2 +-
files/zh-cn/web/api/timeranges/index.md | 2 +-
files/zh-cn/web/api/touch/clientx/index.md | 6 +--
files/zh-cn/web/api/touch/clienty/index.md | 6 +--
files/zh-cn/web/api/touch/force/index.md | 2 +-
files/zh-cn/web/api/touch/identifier/index.md | 2 +-
files/zh-cn/web/api/touch/index.md | 8 ++--
files/zh-cn/web/api/touch/radiusx/index.md | 2 +-
files/zh-cn/web/api/touch/radiusy/index.md | 2 +-
.../web/api/touch/rotationangle/index.md | 2 +-
.../touch_events/using_touch_events/index.md | 8 ++--
.../api/touchevent/changedtouches/index.md | 2 +-
files/zh-cn/web/api/touchevent/index.md | 2 +-
files/zh-cn/web/api/touchlist/index.md | 4 +-
.../keyboard_event_key_values/index.md | 6 +--
.../web/api/waveshapernode/curve/index.md | 2 +-
files/zh-cn/web/api/waveshapernode/index.md | 2 +-
.../api/waveshapernode/oversample/index.md | 2 +-
.../keyframe_formats/index.md | 2 +-
.../using_the_web_animations_api/index.md | 6 +--
.../api/web_audio_api/best_practices/index.md | 4 +-
files/zh-cn/web/api/web_audio_api/index.md | 18 +++----
.../using_web_audio_api/index.md | 10 ++--
.../index.md | 6 +--
.../web/api/web_authentication_api/index.md | 2 +-
files/zh-cn/web/api/web_components/index.md | 2 +-
files/zh-cn/web/api/web_speech_api/index.md | 6 +--
.../using_the_web_speech_api/index.md | 10 ++--
.../web/api/webgl_api/by_example/index.md | 28 +++++------
.../web/api/webgl_api/constants/index.md | 8 ++--
files/zh-cn/web/api/webgl_api/index.md | 2 +-
.../matrix_math_for_the_web/index.md | 2 +-
.../index.md | 8 ++--
.../getting_started_with_webgl/index.md | 6 +--
.../zh-cn/web/api/webgl_api/tutorial/index.md | 2 +-
.../webgl_model_view_projection/index.md | 4 +-
.../enablevertexattribarray/index.md | 4 +-
.../getextension/index.md | 2 +-
.../build_a_phone_with_peerjs/index.md | 2 +-
.../signaling_and_video_calling/index.md | 4 +-
.../simple_rtcdatachannel_sample/index.md | 2 +-
files/zh-cn/web/api/websocket/close/index.md | 2 +-
.../web/api/websocket/error_event/index.md | 2 +-
.../web/api/websocket/message_event/index.md | 2 +-
.../zh-cn/web/api/websocket/protocol/index.md | 2 +-
files/zh-cn/web/api/websocket/send/index.md | 2 +-
files/zh-cn/web/api/websocket/url/index.md | 2 +-
.../index.md | 6 +--
.../writing_websocket_server/index.md | 6 +--
.../writing_websocket_servers/index.md | 26 +++++-----
.../zh-cn/web/api/webvr_api/concepts/index.md | 6 +--
files/zh-cn/web/api/webvr_api/index.md | 6 +--
.../webvr_api/using_the_webvr_api/index.md | 14 +++---
files/zh-cn/web/api/webxr_device_api/index.md | 2 +-
.../api/window/appinstalled_event/index.md | 2 +-
.../api/window/cancelidlecallback/index.md | 2 +-
.../window/deviceorientation_event/index.md | 6 +--
.../zh-cn/web/api/window/error_event/index.md | 2 +-
files/zh-cn/web/api/window/fetch/index.md | 4 +-
files/zh-cn/web/api/window/frames/index.md | 2 +-
.../window/gamepadconnected_event/index.md | 6 +--
.../web/api/window/getcomputedstyle/index.md | 2 +-
files/zh-cn/web/api/window/history/index.md | 2 +-
.../web/api/window/localstorage/index.md | 4 +-
.../zh-cn/web/api/window/matchmedia/index.md | 8 ++--
files/zh-cn/web/api/window/name/index.md | 2 +-
.../web/api/window/pageshow_event/index.md | 6 +--
files/zh-cn/web/api/window/parent/index.md | 2 +-
.../zh-cn/web/api/window/postmessage/index.md | 8 ++--
files/zh-cn/web/api/window/print/index.md | 2 +-
.../zh-cn/web/api/window/scrollmaxx/index.md | 2 +-
.../web/api/window/sessionstorage/index.md | 2 +-
.../web/api/window/showmodaldialog/index.md | 4 +-
.../web/api/window/storage_event/index.md | 2 +-
.../web/api/window/unload_event/index.md | 4 +-
files/zh-cn/web/api/worker/index.md | 6 +--
.../zh-cn/web/api/worker/postmessage/index.md | 2 +-
files/zh-cn/web/api/worker/worker/index.md | 2 +-
.../web/api/workerglobalscope/self/index.md | 2 +-
.../api/xmlhttprequest/loadend_event/index.md | 2 +-
.../xmlhttprequest/loadstart_event/index.md | 2 +-
.../readystatechange_event/index.md | 2 +-
.../web/api/xmlhttprequest/send/index.md | 4 +-
.../web/api/xmlhttprequest/status/index.md | 4 +-
.../api/xmlhttprequest/statustext/index.md | 4 +-
.../web/api/xmlhttprequest/timeout/index.md | 2 +-
.../xmlhttprequest/xmlhttprequest/index.md | 6 +--
.../index.md | 6 +--
.../index.md | 10 ++--
.../using_formdata_objects/index.md | 2 +-
.../using_xmlhttprequest/index.md | 8 ++--
.../api/xmlhttprequesteventtarget/index.md | 2 +-
files/zh-cn/web/css/-moz-user-input/index.md | 2 +-
.../web/css/-webkit-box-reflect/index.md | 4 +-
files/zh-cn/web/css/@charset/index.md | 10 ++--
files/zh-cn/web/css/@counter-style/index.md | 2 +-
files/zh-cn/web/css/@font-face/index.md | 12 ++---
.../web/css/@font-feature-values/index.md | 2 +-
files/zh-cn/web/css/@import/index.md | 2 +-
.../-webkit-device-pixel-ratio/index.md | 2 +-
files/zh-cn/web/css/@media/any-hover/index.md | 2 +-
.../zh-cn/web/css/@media/any-pointer/index.md | 2 +-
.../web/css/@media/aspect-ratio/index.md | 2 +-
.../web/css/@media/device-height/index.md | 2 +-
.../zh-cn/web/css/@media/orientation/index.md | 2 +-
.../css/@media/prefers-color-scheme/index.md | 2 +-
.../@media/prefers-reduced-motion/index.md | 2 +-
files/zh-cn/web/css/@property/index.md | 4 +-
.../web/css/@property/initial-value/index.md | 2 +-
files/zh-cn/web/css/@property/syntax/index.md | 2 +-
files/zh-cn/web/css/@supports/index.md | 2 +-
files/zh-cn/web/css/_colon_active/index.md | 2 +-
files/zh-cn/web/css/_colon_checked/index.md | 2 +-
files/zh-cn/web/css/_colon_has/index.md | 2 +-
files/zh-cn/web/css/_colon_invalid/index.md | 2 +-
.../web/css/_colon_last-of-type/index.md | 2 +-
.../web/css/_colon_nth-last-child/index.md | 2 +-
files/zh-cn/web/css/_colon_read-only/index.md | 2 +-
files/zh-cn/web/css/_colon_scope/index.md | 2 +-
files/zh-cn/web/css/_colon_valid/index.md | 2 +-
.../_doublecolon_-moz-range-progress/index.md | 2 +-
.../index.md | 2 +-
.../web/css/_doublecolon_first-line/index.md | 2 +-
.../css/_doublecolon_spelling-error/index.md | 2 +-
files/zh-cn/web/css/actual_value/index.md | 2 +-
files/zh-cn/web/css/align-self/index.md | 2 +-
files/zh-cn/web/css/all/index.md | 8 ++--
.../web/css/alternative_style_sheets/index.md | 2 +-
files/zh-cn/web/css/animation-delay/index.md | 2 +-
.../web/css/animation-direction/index.md | 2 +-
.../zh-cn/web/css/animation-duration/index.md | 4 +-
.../web/css/animation-fill-mode/index.md | 8 ++--
.../css/animation-iteration-count/index.md | 2 +-
files/zh-cn/web/css/animation-name/index.md | 2 +-
.../web/css/animation-play-state/index.md | 2 +-
.../css/animation-timing-function/index.md | 4 +-
files/zh-cn/web/css/animation/index.md | 4 +-
files/zh-cn/web/css/at-rule/index.md | 2 +-
.../web/css/background-attachment/index.md | 4 +-
files/zh-cn/web/css/background-clip/index.md | 2 +-
files/zh-cn/web/css/background-image/index.md | 4 +-
.../web/css/background-position-x/index.md | 2 +-
.../web/css/background-position-y/index.md | 2 +-
.../zh-cn/web/css/background-repeat/index.md | 2 +-
files/zh-cn/web/css/background-size/index.md | 18 +++----
files/zh-cn/web/css/background/index.md | 4 +-
files/zh-cn/web/css/basic-shape/index.md | 4 +-
.../web/css/border-bottom-width/index.md | 2 +-
files/zh-cn/web/css/border-collapse/index.md | 2 +-
.../zh-cn/web/css/border-left-style/index.md | 2 +-
.../zh-cn/web/css/border-left-width/index.md | 2 +-
.../zh-cn/web/css/border-right-style/index.md | 2 +-
files/zh-cn/web/css/border-spacing/index.md | 2 +-
files/zh-cn/web/css/border-style/index.md | 2 +-
.../web/css/border-top-left-radius/index.md | 2 +-
.../web/css/border-top-right-radius/index.md | 2 +-
files/zh-cn/web/css/border-top-style/index.md | 2 +-
files/zh-cn/web/css/border/index.md | 2 +-
files/zh-cn/web/css/box-orient/index.md | 2 +-
files/zh-cn/web/css/box-shadow/index.md | 6 +--
files/zh-cn/web/css/box-sizing/index.md | 6 +--
files/zh-cn/web/css/break-after/index.md | 2 +-
files/zh-cn/web/css/cascade/index.md | 8 ++--
files/zh-cn/web/css/clamp/index.md | 2 +-
files/zh-cn/web/css/clear/index.md | 10 ++--
files/zh-cn/web/css/color_value/index.md | 2 +-
files/zh-cn/web/css/comments/index.md | 4 +-
files/zh-cn/web/css/computed_value/index.md | 4 +-
files/zh-cn/web/css/containing_block/index.md | 2 +-
.../zh-cn/web/css/counter-increment/index.md | 4 +-
files/zh-cn/web/css/counter-reset/index.md | 2 +-
files/zh-cn/web/css/counter/index.md | 2 +-
files/zh-cn/web/css/counters/index.md | 4 +-
files/zh-cn/web/css/css_animations/index.md | 2 +-
.../using_css_animations/index.md | 2 +-
.../using_multiple_backgrounds/index.md | 2 +-
.../web/css/css_basic_user_interface/index.md | 2 +-
.../zh-cn/web/css/css_box_alignment/index.md | 2 +-
.../index.md | 6 +--
files/zh-cn/web/css/css_colors/index.md | 2 +-
.../web/css/css_flexible_box_layout/index.md | 4 +-
.../ordering_flex_items/index.md | 2 +-
.../flow_layout_and_overflow/index.md | 2 +-
.../flow_layout_and_writing_modes/index.md | 2 +-
.../in_flow_and_out_of_flow/index.md | 2 +-
files/zh-cn/web/css/css_flow_layout/index.md | 2 +-
.../grid_layout_and_accessibility/index.md | 6 +--
files/zh-cn/web/css/css_grid_layout/index.md | 24 +++++-----
.../index.md | 6 +--
.../testing_media_queries/index.md | 2 +-
.../using_media_queries/index.md | 12 ++---
.../understanding_z-index/index.md | 6 +--
.../stacking_context/index.md | 2 +-
.../stacking_context_example_1/index.md | 14 +++---
.../stacking_context_example_2/index.md | 14 +++---
.../stacking_context_example_3/index.md | 14 +++---
.../stacking_floating_elements/index.md | 8 ++--
.../stacking_without_z-index/index.md | 14 +++---
.../using_z-index/index.md | 20 ++++----
files/zh-cn/web/css/css_selectors/index.md | 8 ++--
.../index.md | 6 +--
.../css_shapes/overview_of_shapes/index.md | 4 +-
.../web/css/css_values_and_units/index.md | 2 +-
files/zh-cn/web/css/cursor/index.md | 2 +-
files/zh-cn/web/css/display-box/index.md | 6 +--
files/zh-cn/web/css/element/index.md | 2 +-
files/zh-cn/web/css/env/index.md | 2 +-
files/zh-cn/web/css/flex-basis/index.md | 4 +-
files/zh-cn/web/css/flex-direction/index.md | 2 +-
files/zh-cn/web/css/flex-flow/index.md | 2 +-
files/zh-cn/web/css/flex-grow/index.md | 4 +-
files/zh-cn/web/css/flex-shrink/index.md | 4 +-
.../web/css/font-feature-settings/index.md | 6 +--
.../web/css/font-language-override/index.md | 2 +-
files/zh-cn/web/css/font-size-adjust/index.md | 4 +-
files/zh-cn/web/css/font-size/index.md | 2 +-
.../web/css/font-variant-alternates/index.md | 2 +-
files/zh-cn/web/css/font-weight/index.md | 2 +-
files/zh-cn/web/css/frequency/index.md | 2 +-
.../repeating-linear-gradient/index.md | 2 +-
files/zh-cn/web/css/grid-area/index.md | 2 +-
.../zh-cn/web/css/grid-auto-columns/index.md | 4 +-
files/zh-cn/web/css/grid-auto-flow/index.md | 2 +-
files/zh-cn/web/css/grid-auto-rows/index.md | 4 +-
files/zh-cn/web/css/grid-column/index.md | 2 +-
files/zh-cn/web/css/grid-row/index.md | 2 +-
.../web/css/grid-template-areas/index.md | 2 +-
.../web/css/grid-template-columns/index.md | 4 +-
.../zh-cn/web/css/grid-template-rows/index.md | 4 +-
files/zh-cn/web/css/grid-template/index.md | 2 +-
files/zh-cn/web/css/grid/index.md | 2 +-
files/zh-cn/web/css/height/index.md | 2 +-
files/zh-cn/web/css/hyphens/index.md | 2 +-
files/zh-cn/web/css/image-rendering/index.md | 2 +-
files/zh-cn/web/css/inherit/index.md | 4 +-
files/zh-cn/web/css/inheritance/index.md | 8 ++--
files/zh-cn/web/css/initial_value/index.md | 8 ++--
files/zh-cn/web/css/justify-content/index.md | 2 +-
files/zh-cn/web/css/justify-items/index.md | 4 +-
files/zh-cn/web/css/justify-self/index.md | 2 +-
files/zh-cn/web/css/layout_mode/index.md | 4 +-
files/zh-cn/web/css/list-style-type/index.md | 4 +-
files/zh-cn/web/css/mask/index.md | 4 +-
files/zh-cn/web/css/max/index.md | 4 +-
files/zh-cn/web/css/min/index.md | 4 +-
files/zh-cn/web/css/minmax/index.md | 4 +-
files/zh-cn/web/css/order/index.md | 6 +--
files/zh-cn/web/css/outline-color/index.md | 2 +-
files/zh-cn/web/css/outline/index.md | 2 +-
files/zh-cn/web/css/page-break-after/index.md | 4 +-
files/zh-cn/web/css/percentage/index.md | 4 +-
.../zh-cn/web/css/perspective-origin/index.md | 2 +-
files/zh-cn/web/css/pointer-events/index.md | 8 ++--
files/zh-cn/web/css/position/index.md | 2 +-
.../index.md | 8 ++--
files/zh-cn/web/css/quotes/index.md | 2 +-
files/zh-cn/web/css/reference/index.md | 2 +-
files/zh-cn/web/css/replaced_element/index.md | 2 +-
files/zh-cn/web/css/resolved_value/index.md | 2 +-
.../css/scaling_of_svg_backgrounds/index.md | 2 +-
files/zh-cn/web/css/shape-outside/index.md | 4 +-
.../web/css/shorthand_properties/index.md | 2 +-
files/zh-cn/web/css/specificity/index.md | 4 +-
files/zh-cn/web/css/specified_value/index.md | 2 +-
files/zh-cn/web/css/syntax/index.md | 12 ++---
.../web/css/text-decoration-color/index.md | 4 +-
.../web/css/text-decoration-line/index.md | 2 +-
.../web/css/text-decoration-style/index.md | 2 +-
.../css/text-decoration-thickness/index.md | 2 +-
files/zh-cn/web/css/touch-action/index.md | 4 +-
files/zh-cn/web/css/transform-box/index.md | 2 +-
files/zh-cn/web/css/transform-origin/index.md | 2 +-
files/zh-cn/web/css/transform-style/index.md | 2 +-
.../web/css/transition-duration/index.md | 2 +-
.../css/transition-timing-function/index.md | 4 +-
files/zh-cn/web/css/transition/index.md | 4 +-
.../web/css/universal_selectors/index.md | 2 +-
files/zh-cn/web/css/used_value/index.md | 14 +++---
.../web/css/value_definition_syntax/index.md | 4 +-
.../web/css/visual_formatting_model/index.md | 10 ++--
files/zh-cn/web/css/widows/index.md | 2 +-
files/zh-cn/web/css/width/index.md | 2 +-
files/zh-cn/web/guide/index.md | 4 +-
.../web/html/attributes/autocomplete/index.md | 4 +-
.../web/html/attributes/pattern/index.md | 4 +-
.../web/html/attributes/rel/preload/index.md | 2 +-
.../web/html/constraint_validation/index.md | 2 +-
.../web/html/date_and_time_formats/index.md | 12 ++---
files/zh-cn/web/html/element/a/index.md | 2 +-
files/zh-cn/web/html/element/area/index.md | 4 +-
files/zh-cn/web/html/element/aside/index.md | 2 +-
files/zh-cn/web/html/element/audio/index.md | 16 +++----
files/zh-cn/web/html/element/base/index.md | 2 +-
files/zh-cn/web/html/element/bdi/index.md | 2 +-
.../web/html/element/blockquote/index.md | 2 +-
files/zh-cn/web/html/element/br/index.md | 4 +-
files/zh-cn/web/html/element/button/index.md | 10 ++--
files/zh-cn/web/html/element/caption/index.md | 4 +-
files/zh-cn/web/html/element/cite/index.md | 2 +-
files/zh-cn/web/html/element/data/index.md | 2 +-
.../zh-cn/web/html/element/datalist/index.md | 6 +--
files/zh-cn/web/html/element/dd/index.md | 2 +-
files/zh-cn/web/html/element/dfn/index.md | 2 +-
files/zh-cn/web/html/element/dl/index.md | 6 +--
files/zh-cn/web/html/element/dt/index.md | 8 ++--
files/zh-cn/web/html/element/embed/index.md | 2 +-
.../zh-cn/web/html/element/fieldset/index.md | 2 +-
files/zh-cn/web/html/element/font/index.md | 2 +-
files/zh-cn/web/html/element/frame/index.md | 2 +-
.../zh-cn/web/html/element/frameset/index.md | 2 +-
.../html/element/heading_elements/index.md | 2 +-
files/zh-cn/web/html/element/i/index.md | 6 +--
files/zh-cn/web/html/element/img/index.md | 12 ++---
.../web/html/element/input/button/index.md | 4 +-
.../web/html/element/input/checkbox/index.md | 4 +-
.../web/html/element/input/date/index.md | 6 +--
.../element/input/datetime-local/index.md | 8 ++--
.../web/html/element/input/email/index.md | 8 ++--
.../web/html/element/input/file/index.md | 6 +--
files/zh-cn/web/html/element/input/index.md | 2 +-
.../web/html/element/input/month/index.md | 6 +--
.../web/html/element/input/number/index.md | 6 +--
.../web/html/element/input/radio/index.md | 4 +-
.../web/html/element/input/range/index.md | 4 +-
.../web/html/element/input/reset/index.md | 4 +-
.../web/html/element/input/search/index.md | 10 ++--
.../web/html/element/input/submit/index.md | 6 +--
.../zh-cn/web/html/element/input/tel/index.md | 6 +--
.../web/html/element/input/text/index.md | 8 ++--
.../web/html/element/input/time/index.md | 4 +-
.../zh-cn/web/html/element/input/url/index.md | 12 ++---
.../web/html/element/input/week/index.md | 8 ++--
files/zh-cn/web/html/element/ins/index.md | 10 ++--
files/zh-cn/web/html/element/kbd/index.md | 2 +-
files/zh-cn/web/html/element/label/index.md | 4 +-
files/zh-cn/web/html/element/main/index.md | 8 ++--
files/zh-cn/web/html/element/mark/index.md | 8 ++--
files/zh-cn/web/html/element/nav/index.md | 2 +-
files/zh-cn/web/html/element/noembed/index.md | 2 +-
.../zh-cn/web/html/element/noframes/index.md | 2 +-
files/zh-cn/web/html/element/object/index.md | 8 ++--
files/zh-cn/web/html/element/ol/index.md | 6 +--
.../zh-cn/web/html/element/optgroup/index.md | 2 +-
files/zh-cn/web/html/element/output/index.md | 2 +-
.../zh-cn/web/html/element/plaintext/index.md | 4 +-
files/zh-cn/web/html/element/pre/index.md | 2 +-
.../zh-cn/web/html/element/progress/index.md | 4 +-
files/zh-cn/web/html/element/q/index.md | 2 +-
files/zh-cn/web/html/element/rb/index.md | 2 +-
files/zh-cn/web/html/element/rp/index.md | 2 +-
files/zh-cn/web/html/element/rt/index.md | 2 +-
files/zh-cn/web/html/element/rtc/index.md | 2 +-
files/zh-cn/web/html/element/s/index.md | 4 +-
files/zh-cn/web/html/element/samp/index.md | 8 ++--
files/zh-cn/web/html/element/select/index.md | 10 ++--
files/zh-cn/web/html/element/tbody/index.md | 4 +-
files/zh-cn/web/html/element/tfoot/index.md | 6 +--
files/zh-cn/web/html/element/thead/index.md | 8 ++--
files/zh-cn/web/html/element/video/index.md | 6 +--
files/zh-cn/web/html/element/xmp/index.md | 2 +-
.../global_attributes/data-_star_/index.md | 2 +-
.../html/global_attributes/hidden/index.md | 2 +-
.../html/global_attributes/itemprop/index.md | 2 +-
.../html/global_attributes/itemscope/index.md | 2 +-
.../html/global_attributes/itemtype/index.md | 4 +-
.../web/html/global_attributes/lang/index.md | 2 +-
.../html/global_attributes/tabindex/index.md | 2 +-
files/zh-cn/web/html/index.md | 10 ++--
.../quirks_mode_and_standards_mode/index.md | 2 +-
files/zh-cn/web/http/authentication/index.md | 6 +--
files/zh-cn/web/http/compression/index.md | 2 +-
.../web/http/content_negotiation/index.md | 2 +-
files/zh-cn/web/http/cookies/index.md | 10 ++--
files/zh-cn/web/http/cors/errors/index.md | 6 +--
.../content-security-policy/base-uri/index.md | 2 +-
.../child-src/index.md | 4 +-
.../connect-src/index.md | 4 +-
.../default-src/index.md | 4 +-
.../content-security-policy/font-src/index.md | 4 +-
.../headers/content-security-policy/index.md | 2 +-
.../content-security-policy/sandbox/index.md | 2 +-
.../script-src-elem/index.md | 4 +-
.../worker-src/index.md | 4 +-
files/zh-cn/web/http/headers/etag/index.md | 2 +-
.../attribution-reporting/index.md | 2 +-
.../permissions-policy/camera/index.md | 2 +-
.../http/headers/permissions-policy/index.md | 4 +-
.../http/headers/proxy-authenticate/index.md | 2 +-
.../http/headers/proxy-authorization/index.md | 4 +-
.../web/http/headers/sec-fetch-dest/index.md | 2 +-
.../web/http/headers/set-cookie/index.md | 2 +-
.../zh-cn/web/http/headers/sourcemap/index.md | 4 +-
.../http/headers/transfer-encoding/index.md | 2 +-
.../upgrade-insecure-requests/index.md | 2 +-
files/zh-cn/web/http/headers/warning/index.md | 2 +-
.../headers/x-dns-prefetch-control/index.md | 2 +-
.../index.md | 24 +++++-----
files/zh-cn/web/http/redirections/index.md | 4 +-
.../resources_and_specifications/index.md | 2 +-
files/zh-cn/web/http/status/203/index.md | 2 +-
files/zh-cn/web/http/status/301/index.md | 2 +-
files/zh-cn/web/http/status/304/index.md | 2 +-
files/zh-cn/web/http/status/index.md | 2 +-
files/zh-cn/web/javascript/closures/index.md | 2 +-
.../index.md | 2 +-
.../guide/expressions_and_operators/index.md | 38 +++++++--------
files/zh-cn/web/javascript/guide/index.md | 44 ++++++++---------
.../guide/indexed_collections/index.md | 4 +-
.../guide/loops_and_iteration/index.md | 2 +-
.../guide/regular_expressions/index.md | 4 +-
.../guide/working_with_objects/index.md | 16 +++----
files/zh-cn/web/javascript/index.md | 2 +-
.../web/javascript/memory_management/index.md | 2 +-
.../errors/already_has_pragma/index.md | 2 +-
.../reference/errors/bad_regexp_flag/index.md | 4 +-
.../index.md | 2 +-
.../deprecated_source_map_pragma/index.md | 6 +--
.../invalid_for-in_initializer/index.md | 2 +-
.../reference/errors/is_not_iterable/index.md | 6 +--
.../index.md | 4 +-
.../errors/no_variable_name/index.md | 6 +--
.../non_configurable_array_element/index.md | 4 +-
.../reference/errors/not_defined/index.md | 4 +-
.../errors/redeclared_parameter/index.md | 4 +-
.../errors/reserved_identifier/index.md | 6 +--
.../errors/string_literal_eol/index.md | 2 +-
.../errors/too_much_recursion/index.md | 2 +-
.../reference/functions/arguments/index.md | 14 +++---
.../reference/functions/get/index.md | 2 +-
.../javascript/reference/functions/index.md | 20 ++++----
.../functions/method_definitions/index.md | 2 +-
.../functions/rest_parameters/index.md | 4 +-
.../reference/functions/set/index.md | 2 +-
.../reference/global_objects/bigint/index.md | 2 +-
.../global_objects/bigint64array/index.md | 2 +-
.../reference/global_objects/date/index.md | 6 +--
.../global_objects/date/parse/index.md | 8 ++--
.../global_objects/date/todatestring/index.md | 2 +-
.../global_objects/date/totimestring/index.md | 2 +-
.../global_objects/encodeuri/index.md | 2 +-
.../global_objects/error/stack/index.md | 2 +-
.../reference/global_objects/eval/index.md | 4 +-
.../global_objects/float32array/index.md | 4 +-
.../global_objects/float64array/index.md | 4 +-
.../global_objects/int32array/index.md | 4 +-
.../global_objects/int8array/index.md | 4 +-
.../reference/global_objects/intl/index.md | 6 +--
.../global_objects/intl/listformat/index.md | 2 +-
.../global_objects/iterator/map/index.md | 4 +-
.../reference/global_objects/nan/index.md | 2 +-
.../global_objects/parseint/index.md | 2 +-
.../reference/global_objects/proxy/index.md | 10 ++--
.../reference/global_objects/reflect/index.md | 2 +-
.../reference/global_objects/regexp/index.md | 4 +-
.../global_objects/regexp/regexp/index.md | 2 +-
.../global_objects/regexp/sticky/index.md | 2 +-
.../global_objects/string/raw/index.md | 4 +-
.../global_objects/typedarray/buffer/index.md | 4 +-
.../typedarray/bytelength/index.md | 4 +-
.../typedarray/bytes_per_element/index.md | 2 +-
.../typedarray/copywithin/index.md | 2 +-
.../global_objects/typedarray/fill/index.md | 2 +-
.../global_objects/typedarray/from/index.md | 4 +-
.../typedarray/indexof/index.md | 4 +-
.../global_objects/typedarray/keys/index.md | 2 +-
.../typedarray/lastindexof/index.md | 4 +-
.../global_objects/typedarray/of/index.md | 2 +-
.../global_objects/typedarray/reduce/index.md | 2 +-
.../global_objects/typedarray/set/index.md | 2 +-
.../global_objects/typedarray/some/index.md | 2 +-
.../typedarray/subarray/index.md | 2 +-
.../typedarray/symbol.species/index.md | 2 +-
.../typedarray/tostring/index.md | 2 +-
.../global_objects/uint32array/index.md | 2 +-
.../global_objects/uint8array/index.md | 4 +-
.../global_objects/uint8clampedarray/index.md | 4 +-
.../global_objects/weakref/deref/index.md | 4 +-
.../reference/lexical_grammar/index.md | 16 +++----
.../reference/operators/function/index.md | 6 +--
.../reference/operators/in/index.md | 4 +-
.../reference/operators/instanceof/index.md | 2 +-
.../nullish_coalescing_assignment/index.md | 4 +-
.../operators/property_accessors/index.md | 2 +-
.../operators/spread_syntax/index.md | 4 +-
.../reference/operators/typeof/index.md | 8 ++--
.../reference/operators/yield_star_/index.md | 2 +-
.../reference/statements/with/index.md | 2 +-
.../javascript/reference/strict_mode/index.md | 12 ++---
.../reference/template_literals/index.md | 2 +-
files/zh-cn/web/mathml/element/mrow/index.md | 2 +-
.../index.md | 2 +-
.../index.md | 2 +-
.../audio_and_video_manipulation/index.md | 2 +-
files/zh-cn/web/media/autoplay_guide/index.md | 2 +-
.../web/media/formats/containers/index.md | 2 +-
files/zh-cn/web/media/index.md | 2 +-
.../optimizing_startup_performance/index.md | 6 +--
.../tutorials/js13kgames/index.md | 18 +++----
.../js13kgames/installable_pwas/index.md | 2 +-
.../tutorials/js13kgames/loading/index.md | 4 +-
.../re-engageable_notifications_push/index.md | 2 +-
files/zh-cn/web/security/index.md | 4 +-
.../practical_implementation_guides/index.md | 2 +-
.../web/svg/attribute/attributetype/index.md | 2 +-
.../web/svg/attribute/baseprofile/index.md | 2 +-
files/zh-cn/web/svg/attribute/begin/index.md | 6 +--
files/zh-cn/web/svg/attribute/color/index.md | 8 ++--
files/zh-cn/web/svg/attribute/d/index.md | 2 +-
files/zh-cn/web/svg/attribute/dur/index.md | 8 ++--
files/zh-cn/web/svg/attribute/dx/index.md | 10 ++--
.../zh-cn/web/svg/attribute/edgemode/index.md | 2 +-
files/zh-cn/web/svg/attribute/end/index.md | 4 +-
.../web/svg/attribute/fill-opacity/index.md | 8 ++--
.../web/svg/attribute/fill-rule/index.md | 2 +-
files/zh-cn/web/svg/attribute/fill/index.md | 12 ++---
files/zh-cn/web/svg/attribute/filter/index.md | 8 ++--
.../web/svg/attribute/filterunits/index.md | 2 +-
.../web/svg/attribute/font-family/index.md | 4 +-
files/zh-cn/web/svg/attribute/fr/index.md | 4 +-
files/zh-cn/web/svg/attribute/from/index.md | 2 +-
files/zh-cn/web/svg/attribute/fx/index.md | 4 +-
files/zh-cn/web/svg/attribute/height/index.md | 2 +-
.../web/svg/attribute/kernelmatrix/index.md | 4 +-
.../web/svg/attribute/marker-end/index.md | 4 +-
.../web/svg/attribute/marker-start/index.md | 4 +-
files/zh-cn/web/svg/attribute/mask/index.md | 8 ++--
.../zh-cn/web/svg/attribute/opacity/index.md | 4 +-
files/zh-cn/web/svg/attribute/order/index.md | 4 +-
files/zh-cn/web/svg/attribute/r/index.md | 4 +-
files/zh-cn/web/svg/attribute/radius/index.md | 4 +-
.../web/svg/attribute/repeatcount/index.md | 2 +-
files/zh-cn/web/svg/attribute/result/index.md | 2 +-
files/zh-cn/web/svg/attribute/rx/index.md | 4 +-
files/zh-cn/web/svg/attribute/scale/index.md | 2 +-
files/zh-cn/web/svg/attribute/seed/index.md | 2 +-
.../svg/attribute/shape-rendering/index.md | 2 +-
.../web/svg/attribute/stroke-linecap/index.md | 4 +-
.../svg/attribute/stroke-linejoin/index.md | 4 +-
.../svg/attribute/stroke-miterlimit/index.md | 6 +--
.../web/svg/attribute/stroke-opacity/index.md | 4 +-
files/zh-cn/web/svg/attribute/style/index.md | 12 ++---
.../web/svg/attribute/text-anchor/index.md | 2 +-
.../svg/attribute/text-decoration/index.md | 2 +-
files/zh-cn/web/svg/attribute/type/index.md | 10 ++--
files/zh-cn/web/svg/attribute/values/index.md | 4 +-
.../zh-cn/web/svg/attribute/version/index.md | 2 +-
.../zh-cn/web/svg/attribute/viewbox/index.md | 2 +-
.../web/svg/attribute/visibility/index.md | 4 +-
files/zh-cn/web/svg/content_type/index.md | 16 +++----
files/zh-cn/web/svg/element/a/index.md | 12 ++---
.../web/svg/element/animatemotion/index.md | 14 +++---
.../web/svg/element/animatetransform/index.md | 2 +-
files/zh-cn/web/svg/element/circle/index.md | 8 ++--
files/zh-cn/web/svg/element/cursor/index.md | 8 ++--
files/zh-cn/web/svg/element/defs/index.md | 10 ++--
files/zh-cn/web/svg/element/desc/index.md | 2 +-
files/zh-cn/web/svg/element/ellipse/index.md | 10 ++--
.../web/svg/element/fecolormatrix/index.md | 10 ++--
.../svg/element/fecomponenttransfer/index.md | 10 ++--
.../web/svg/element/fecomposite/index.md | 10 ++--
.../svg/element/fediffuselighting/index.md | 10 ++--
.../svg/element/fedisplacementmap/index.md | 10 ++--
.../web/svg/element/fedistantlight/index.md | 6 +--
.../web/svg/element/fegaussianblur/index.md | 10 ++--
files/zh-cn/web/svg/element/femerge/index.md | 10 ++--
.../web/svg/element/femergenode/index.md | 6 +--
files/zh-cn/web/svg/element/feoffset/index.md | 8 ++--
.../web/svg/element/fepointlight/index.md | 6 +--
.../svg/element/fespecularlighting/index.md | 8 ++--
.../web/svg/element/fespotlight/index.md | 6 +--
.../web/svg/element/feturbulence/index.md | 10 ++--
files/zh-cn/web/svg/element/filter/index.md | 8 ++--
.../web/svg/element/foreignobject/index.md | 8 ++--
files/zh-cn/web/svg/element/g/index.md | 8 ++--
files/zh-cn/web/svg/element/glyph/index.md | 6 +--
files/zh-cn/web/svg/element/hkern/index.md | 6 +--
files/zh-cn/web/svg/element/index.md | 2 +-
files/zh-cn/web/svg/element/line/index.md | 8 ++--
.../web/svg/element/lineargradient/index.md | 8 ++--
files/zh-cn/web/svg/element/mask/index.md | 8 ++--
files/zh-cn/web/svg/element/metadata/index.md | 4 +-
files/zh-cn/web/svg/element/mpath/index.md | 6 +--
files/zh-cn/web/svg/element/path/index.md | 10 ++--
files/zh-cn/web/svg/element/pattern/index.md | 10 ++--
files/zh-cn/web/svg/element/polygon/index.md | 8 ++--
files/zh-cn/web/svg/element/polyline/index.md | 10 ++--
files/zh-cn/web/svg/element/rect/index.md | 10 ++--
files/zh-cn/web/svg/element/script/index.md | 8 ++--
files/zh-cn/web/svg/element/set/index.md | 14 +++---
files/zh-cn/web/svg/element/stop/index.md | 4 +-
files/zh-cn/web/svg/element/style/index.md | 6 +--
files/zh-cn/web/svg/element/svg/index.md | 12 ++---
files/zh-cn/web/svg/element/switch/index.md | 10 ++--
files/zh-cn/web/svg/element/symbol/index.md | 8 ++--
files/zh-cn/web/svg/element/text/index.md | 10 ++--
files/zh-cn/web/svg/element/textpath/index.md | 12 ++---
files/zh-cn/web/svg/element/title/index.md | 4 +-
files/zh-cn/web/svg/element/tref/index.md | 12 ++---
files/zh-cn/web/svg/element/tspan/index.md | 10 ++--
files/zh-cn/web/svg/element/use/index.md | 12 ++---
files/zh-cn/web/svg/index.md | 2 +-
files/zh-cn/web/svg/svg_as_an_image/index.md | 2 +-
.../web/svg/tutorial/basic_shapes/index.md | 12 ++---
.../tutorial/basic_transformations/index.md | 2 +-
.../svg/tutorial/fills_and_strokes/index.md | 4 +-
.../zh-cn/web/svg/tutorial/gradients/index.md | 4 +-
files/zh-cn/web/svg/tutorial/index.md | 34 ++++++-------
.../web/svg/tutorial/introduction/index.md | 4 +-
.../zh-cn/web/svg/tutorial/svg_fonts/index.md | 4 +-
.../web/svg/tutorial/svg_image_tag/index.md | 2 +-
.../svg_in_html_introduction/index.md | 8 ++--
.../index.md | 2 +-
files/zh-cn/web/uri/schemes/data/index.md | 12 ++---
files/zh-cn/web/xml/xml_introduction/index.md | 2 +-
.../index.md | 36 +++++++-------
files/zh-cn/web/xslt/index.md | 2 +-
files/zh-cn/webassembly/c_to_wasm/index.md | 2 +-
files/zh-cn/webassembly/concepts/index.md | 6 +--
.../webassembly/exported_functions/index.md | 12 ++---
.../compile_static/index.md | 4 +-
.../compilestreaming_static/index.md | 2 +-
.../instantiate_static/index.md | 6 +--
.../instantiatestreaming_static/index.md | 2 +-
.../javascript_interface/memory/index.md | 2 +-
.../javascript_interface/module/index.md | 6 +--
.../validate_static/index.md | 6 +--
files/zh-cn/webassembly/rust_to_wasm/index.md | 2 +-
.../webassembly/text_format_to_wasm/index.md | 2 +-
.../understanding_the_text_format/index.md | 24 +++++-----
1195 files changed, 2848 insertions(+), 2848 deletions(-)
diff --git a/files/zh-cn/games/introduction_to_html5_game_development/index.md b/files/zh-cn/games/introduction_to_html5_game_development/index.md
index eeea9215fd14f3..ec137e53e2c57c 100644
--- a/files/zh-cn/games/introduction_to_html5_game_development/index.md
+++ b/files/zh-cn/games/introduction_to_html5_game_development/index.md
@@ -19,43 +19,43 @@ slug: Games/Introduction_to_HTML5_Game_Development
| **Function** | **Technology** |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **Audio** | [Web Audio API](/zh-CN/docs/Web_Audio_API) |
-| **Graphics** | [WebGL](/zh-CN/docs/WebGL) ([OpenGL ES](http://www.khronos.org/opengles/) 2.0) |
-| **Input** | [Touch events](/zh-CN/docs/DOM/Touch_events), [Gamepad API](/zh-CN/docs/API/Gamepad/Using_Gamepad_API), device sensors, [WebRTC](/zh-CN/docs/WebRTC), [Full Screen API](/zh-CN/docs/DOM/Using_fullscreen_mode), [Pointer Lock API](/zh-CN/docs/WebAPI/Pointer_Lock) |
-| **Language** | [JavaScript](/zh-CN/docs/JavaScript) (or C/C++ using [Emscripten](https://github.com/kripken/emscripten/wiki) to compile to JavaScript) |
-| **Networking** | [WebRTC](/zh-CN/docs/WebRTC) and/or [WebSockets](/zh-CN/docs/WebSockets) |
-| **Storage** | [IndexedDB](/zh-CN/docs/IndexedDB) or the "cloud" |
-| **Web** | [HTML](/zh-CN/docs/HTML), [CSS](/zh-CN/docs/CSS), [SVG](/zh-CN/docs/SVG), [Social API](/zh-CN/docs/Social_API) (and much more!) |
-
-- [Full Screen API](/zh-CN/docs/DOM/Using_fullscreen_mode)
+| **Audio** | [Web Audio API](/zh-CN/docs/Web/API/Web_Audio_API) |
+| **Graphics** | [WebGL](/zh-CN/docs/Web/API/WebGL_API) ([OpenGL ES](https://www.khronos.org/opengles/) 2.0) |
+| **Input** | [Touch events](/zh-CN/docs/Web/API/Touch_events), [Gamepad API](/zh-CN/docs/Web/API/Gamepad_API/Using_the_Gamepad_API), device sensors, [WebRTC](/zh-CN/docs/Web/API/WebRTC_API), [Full Screen API](/zh-CN/docs/Web/API/Fullscreen_API), [Pointer Lock API](/zh-CN/docs/Web/API/Pointer_Lock_API) |
+| **Language** | [JavaScript](/zh-CN/docs/Web/JavaScript) (or C/C++ using [Emscripten](https://github.com/kripken/emscripten/wiki) to compile to JavaScript) |
+| **Networking** | [WebRTC](/zh-CN/docs/Web/API/WebRTC_API) and/or [WebSockets](/zh-CN/docs/Web/API/WebSockets_API) |
+| **Storage** | [IndexedDB](/zh-CN/docs/Web/API/IndexedDB_API) or the "cloud" |
+| **Web** | [HTML](/zh-CN/docs/Web/HTML), [CSS](/zh-CN/docs/Web/CSS), [SVG](/zh-CN/docs/Web/SVG), [Social API](/zh-CN/docs/Social_API) (and much more!) |
+
+- [Full Screen API](/zh-CN/docs/Web/API/Fullscreen_API)
- : 全屏游戏。
-- [Gamepad API](/zh-CN/docs/API/Gamepad/Using_Gamepad_API)
+- [Gamepad API](/zh-CN/docs/Web/API/Gamepad_API/Using_the_Gamepad_API)
- : 使用游戏手柄或其他游戏控制器。
-- [HTML](/zh-CN/docs/HTML) and [CSS](/zh-CN/docs/CSS)
+- [HTML](/zh-CN/docs/Web/HTML) and [CSS](/zh-CN/docs/Web/CSS)
- : 构建,样式和布局游戏的用户界面。
-- [HTML audio](/zh-CN/docs/HTML/Element/audio)
+- [HTML audio](/zh-CN/docs/Web/HTML/Element/audio)
- : 轻松播放简单的音效和音乐。
-- [IndexedDB](/zh-CN/docs/IndexedDB)
+- [IndexedDB](/zh-CN/docs/Web/API/IndexedDB_API)
- : 将用户数据存储在他们自己的计算机或设备上。
-- [JavaScript](/zh-CN/docs/JavaScript)
+- [JavaScript](/zh-CN/docs/Web/JavaScript)
- : 快速的网页编程语言为你的游戏编写代码。轻松移植你现有的游戏 [Emscripten](https://github.com/kripken/emscripten/wiki) 或 [Asm.js](http://asmjs.org/spec/latest/)。
-- [Pointer Lock API](/zh-CN/docs/WebAPI/Pointer_Lock)
+- [Pointer Lock API](/zh-CN/docs/Web/API/Pointer_Lock_API)
- : 在游戏界面中锁定鼠标或其他指针设备。
-- [SVG](/zh-CN/docs/SVG) (Scalable Vector Graphics)
+- [SVG](/zh-CN/docs/Web/SVG) (Scalable Vector Graphics)
- : 构建能够顺利扩展的矢量图形,无论用户显示器的大小或分辨率如何。
-- [Typed Arrays](/zh-CN/docs/JavaScript/Typed_arrays)
+- [Typed Arrays](/zh-CN/docs/Web/JavaScript/Guide/Typed_arrays)
- : 从 JavaScript 中访问原始二进制数据; 操纵 GL 纹理,游戏数据或其他任何东西。
-- [Web Audio API](/zh-CN/docs/Web_Audio_API)
+- [Web Audio API](/zh-CN/docs/Web/API/Web_Audio_API)
- : 实时控制音频的播放,合成和操纵。
-- [WebGL](/zh-CN/docs/WebGL)
- - : 创建高性能,硬件加速的 3D(和 2D)图形。[OpenGL ES](http://www.khronos.org/opengles/) 2.0.
-- [WebRTC](/zh-CN/docs/WebRTC)
+- [WebGL](/zh-CN/docs/Web/API/WebGL_API)
+ - : 创建高性能,硬件加速的 3D(和 2D)图形。[OpenGL ES](https://www.khronos.org/opengles/) 2.0.
+- [WebRTC](/zh-CN/docs/Web/API/WebRTC_API)
- : 实时通讯控制音频和视频数据,包括电话会议,并在两个用户之间来回传送其他应用数据,如聊天。
-- [WebSockets](/zh-CN/docs/WebSockets)
+- [WebSockets](/zh-CN/docs/Web/API/WebSockets_API)
- : 将你的应用程序或站点连接到一个服务器以实时传输数据。适合多人游戏动作,聊天服务等。
-- [Web Workers](/zh-CN/docs/DOM/Using_web_workers)
+- [Web Workers](/zh-CN/docs/Web/API/Web_Workers_API/Using_web_workers)
- : 生成后台线程为多核处理器运行自己的 JavaScript 代码。
-- [XMLHttpRequest](/zh-CN/docs/DOM/XMLHttpRequest) and [File API](/zh-CN/docs/DOM/File_API)
+- [XMLHttpRequest](/zh-CN/docs/Web/API/XMLHttpRequest) and [File API](/zh-CN/docs/DOM/File_API)
- : 从一个 Web 服务器发送和接收任何你想要的数据,如下载新的游戏级别和艺术品,以便来回传送非实时游戏状态信息。
diff --git a/files/zh-cn/games/publishing_games/game_distribution/index.md b/files/zh-cn/games/publishing_games/game_distribution/index.md
index f95086c47a7353..6eb9cc4044e9a9 100644
--- a/files/zh-cn/games/publishing_games/game_distribution/index.md
+++ b/files/zh-cn/games/publishing_games/game_distribution/index.md
@@ -5,7 +5,7 @@ slug: Games/Publishing_games/Game_distribution
{{GamesSidebar}}
-你已经跟着一两个[教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript)做了一个 HTML5 游戏了——真棒 ! 这篇文章介绍了一些可以让你投放你的游戏的方式。包括自己建立网站,在公开的应用市场上线,或是发布到 Google Play 或 IOS 的 App Store。
+你已经跟着一两个[教程](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript)做了一个 HTML5 游戏了——真棒 ! 这篇文章介绍了一些可以让你投放你的游戏的方式。包括自己建立网站,在公开的应用市场上线,或是发布到 Google Play 或 IOS 的 App Store。
## HTML5 相较于传统的好处
@@ -15,7 +15,7 @@ slug: Games/Publishing_games/Game_distribution
HTML5 本身是多平台的,所以你只需要写一种代码就可以适配不同的平台。从小型的智能手机和平板电脑,到笔记本电脑和台式电脑,再到智能电视,智能手表甚至是智能冰箱(如果它内置现代化浏览器的话)。
-你并不需要数个开发小组去编写不同平台的代码,你们只需要维护这一种基础代码。你可以花更多时间去[推广游戏](/zh-CN/docs/Games/Techniques/Publishing_games/Game_promotion)和促进[游戏收益化](/zh-CN/docs/Games/Techniques/Publishing_games/Game_monetization)。
+你并不需要数个开发小组去编写不同平台的代码,你们只需要维护这一种基础代码。你可以花更多时间去[推广游戏](/zh-CN/docs/Games/Publishing_games/Game_promotion)和促进[游戏收益化](/zh-CN/docs/Games/Publishing_games/Game_monetization)。
### 即时更新
@@ -41,7 +41,7 @@ HTML5 本身是多平台的,所以你只需要写一种代码就可以适配
- 发行商代理
- 上架商店
-记住你的游戏名应该要足够独特,这样可以在发布之后迅速地[推广](/zh-CN/docs/Games/Techniques/Publishing_games/Game_promotion), 但也要同样朗朗上口,这样人们才不会忘记。
+记住你的游戏名应该要足够独特,这样可以在发布之后迅速地[推广](/zh-CN/docs/Games/Publishing_games/Game_promotion), 但也要同样朗朗上口,这样人们才不会忘记。
### 自运营
@@ -94,7 +94,7 @@ HTML5 本身是多平台的,所以你只需要写一种代码就可以适配
## 打包游戏
-网页是 HTML5 游戏的首选也是最好的选择,但如果你想接触到更广泛的受众并在封闭的生态系统中发行你的游戏,你仍然可以通过打包它来做到这一点。好在你不需要几个独立的团队在不同的平台上致力于同一款游戏——你可以一次性构建它,并使用像 [Phonegap](/zh-CN/docs/) 或 [CocoonIO](/zh-CN/docs/) 这样的工具为本地商店打包游戏。生成的包通常非常可靠,但是你仍然应该测试它们,并注意要修复的小问题或 bug。
+网页是 HTML5 游戏的首选也是最好的选择,但如果你想接触到更广泛的受众并在封闭的生态系统中发行你的游戏,你仍然可以通过打包它来做到这一点。好在你不需要几个独立的团队在不同的平台上致力于同一款游戏——你可以一次性构建它,并使用像 [Phonegap](/zh-CN/docs/Web) 或 [CocoonIO](/zh-CN/docs/Web) 这样的工具为本地商店打包游戏。生成的包通常非常可靠,但是你仍然应该测试它们,并注意要修复的小问题或 bug。
### 实用工具
diff --git a/files/zh-cn/games/publishing_games/game_monetization/index.md b/files/zh-cn/games/publishing_games/game_monetization/index.md
index cca163755d6bed..b734ac8090045d 100644
--- a/files/zh-cn/games/publishing_games/game_monetization/index.md
+++ b/files/zh-cn/games/publishing_games/game_monetization/index.md
@@ -5,7 +5,7 @@ slug: Games/Publishing_games/Game_monetization
{{GamesSidebar}}
-当你花时间创造一个游戏的时候,从[发布](/zh-CN/docs/Games/Techniques/Publishing_games/Game_distribution)和[促销](/zh-CN/docs/Games/Techniques/Publishing_games/Game_promotion)中赚钱是你应该考虑的事。如果你正做出大量努力去成为一个能够以此为生的独立游戏开发者,接下去,看看你有哪些选择。技术手段已经足够成熟; 接下来只是选择正确的方法。
+当你花时间创造一个游戏的时候,从[发布](/zh-CN/docs/Games/Publishing_games/Game_distribution)和[促销](/zh-CN/docs/Games/Publishing_games/Game_promotion)中赚钱是你应该考虑的事。如果你正做出大量努力去成为一个能够以此为生的独立游戏开发者,接下去,看看你有哪些选择。技术手段已经足够成熟; 接下来只是选择正确的方法。
## 付费游戏
@@ -17,7 +17,7 @@ slug: Games/Publishing_games/Game_monetization
你可以提供一款带有应用内购买功能(IAP)的免费游戏,而不是让人们预先为你的游戏付费。在这种情况下,玩家不需要花一分钱就可以获得游戏——将游戏交给玩家,但要提供游戏内的货币、奖金或福利。具体的例子可以包括奖金水平,更好的武器或咒语,或补充所需的能量发挥。设计一个好的 IAP 系统本身就是一门艺术。
-记住,你需要下载数千次游戏才能使 IAPs 有效——只有一小部分玩家会真正为 IAPs 付费。多小?情况各不相同,但大约每千人中就有一个人处于平均水平。玩你的游戏的人越多,别人就越有可能付钱,所以你的收入很大程度取决于你的[推广](/zh-CN/docs/Games/Techniques/Publishing_games/Game_promotion)方式。
+记住,你需要下载数千次游戏才能使 IAPs 有效——只有一小部分玩家会真正为 IAPs 付费。多小?情况各不相同,但大约每千人中就有一个人处于平均水平。玩你的游戏的人越多,别人就越有可能付钱,所以你的收入很大程度取决于你的[推广](/zh-CN/docs/Games/Publishing_games/Game_promotion)方式。
### 免费增值模式
@@ -29,7 +29,7 @@ slug: Games/Publishing_games/Game_monetization
## 推广
-除了积极销售游戏以外,你也可以尝试被动销售 — 投放广告和开展相关活动或许有益于[推广](/zh-CN/docs/Games/Techniques/Publishing_games/Game_promotion)你的游戏,但你的游戏必须让人上瘾,这并不像听起来那么容易。你仍然需要计划好,在某种程度上,你也需要一些运气。如果你的游戏像病毒一样传播开来,人们开始分享它,你就能从广告中获得大量的下载和收益。
+除了积极销售游戏以外,你也可以尝试被动销售 — 投放广告和开展相关活动或许有益于[推广](/zh-CN/docs/Games/Publishing_games/Game_promotion)你的游戏,但你的游戏必须让人上瘾,这并不像听起来那么容易。你仍然需要计划好,在某种程度上,你也需要一些运气。如果你的游戏像病毒一样传播开来,人们开始分享它,你就能从广告中获得大量的下载和收益。
有许多公司提供广告系统——你注册后,允许他们展示广告,以换取一定比例的利润。谷歌 AdSense 被认为是最有效的一个,但它不是为游戏而设计的,使用它来达到这个目的是一个非常糟糕的做法。不要冒着让你的账户被封禁,资产被冻结的风险,游戏开发者们更青睐门户网站,如[LeadBolt](https://www.leadbolt.com/)。他们提供了易于实现的系统,以在你的游戏显示广告并与你分享收益。
@@ -75,7 +75,7 @@ slug: Games/Publishing_games/Game_monetization
### 撰写文章和教程
-你可以写一些关于你的游戏的文章,甚至可以从中获得报酬。可以同时取得游戏[推广](/zh-CN/docs/Games/Techniques/Publishing_games/Game_promotion)和收益化的双赢,如果你不滥用它与太多的广告,读者将享受阅读他们以及学习一两个东西。如果你专注于先分享知识,并将游戏作为例子来使用,这应该是可以的。浏览[Tuts+ Game Development](http://gamedevelopment.tutsplus.com/) 或相似的网站来找寻协作机会
+你可以写一些关于你的游戏的文章,甚至可以从中获得报酬。可以同时取得游戏[推广](/zh-CN/docs/Games/Publishing_games/Game_promotion)和收益化的双赢,如果你不滥用它与太多的广告,读者将享受阅读他们以及学习一两个东西。如果你专注于先分享知识,并将游戏作为例子来使用,这应该是可以的。浏览[Tuts+ Game Development](http://gamedevelopment.tutsplus.com/) 或相似的网站来找寻协作机会
### 周边商品
@@ -83,7 +83,7 @@ slug: Games/Publishing_games/Game_monetization
### 捐助
-当其他方法都失败时,你可以尝试在你的游戏页面上放置一个捐赠按钮并寻求社区的支持。有时候它是有效的,但前提是玩家了解你并觉得它能够帮助你。这就是为什么小心管理你的社区是如此重要。这在[js13kGames](http://js13kgames.com/)比赛中很管用 — 每个参与者都得到了一件免费的 t 恤,有些人甚至还退了一些钱,以帮助它在未来几年继续运行下去。
+当其他方法都失败时,你可以尝试在你的游戏页面上放置一个捐赠按钮并寻求社区的支持。有时候它是有效的,但前提是玩家了解你并觉得它能够帮助你。这就是为什么小心管理你的社区是如此重要。这在[js13kGames](https://js13kgames.com/)比赛中很管用 — 每个参与者都得到了一件免费的 t 恤,有些人甚至还退了一些钱,以帮助它在未来几年继续运行下去。
## 小结
diff --git a/files/zh-cn/games/publishing_games/game_promotion/index.md b/files/zh-cn/games/publishing_games/game_promotion/index.md
index 167687e94591e7..f81ecdb46feeb6 100644
--- a/files/zh-cn/games/publishing_games/game_promotion/index.md
+++ b/files/zh-cn/games/publishing_games/game_promotion/index.md
@@ -5,7 +5,7 @@ slug: Games/Publishing_games/Game_promotion
{{GamesSidebar}}
-开发与发行你的游戏并不是全部.。你应该让大家知道你有个大家会喜欢玩的游戏。这儿有很多方法去推广你的游戏——大部分方法是免费的,所以即使即使你正努力以一名零预算的独立开发者的身份谋生,你也可以让人们知道你的新游戏.。推广游戏也对之后的[游戏收益化](/zh-CN/docs/Games/Techniques/Publishing_games/Game_monetization)大有裨益,所以正确地推广游戏是很重要的。
+开发与发行你的游戏并不是全部.。你应该让大家知道你有个大家会喜欢玩的游戏。这儿有很多方法去推广你的游戏——大部分方法是免费的,所以即使即使你正努力以一名零预算的独立开发者的身份谋生,你也可以让人们知道你的新游戏.。推广游戏也对之后的[游戏收益化](/zh-CN/docs/Games/Publishing_games/Game_monetization)大有裨益,所以正确地推广游戏是很重要的。
## 竞赛
@@ -28,7 +28,7 @@ slug: Games/Publishing_games/Game_promotion
## 游戏门户网站
-设立门户网站主要与[收益化](/zh-CN/docs/Games/Techniques/Publishing_games/Game_monetization)挂钩,但是如果你不打算[售卖许可](/zh-CN/docs/Games/Techniques/Publishing_games/Game_monetization#Licensing)来让人们可以购买你的游戏而是打算[发布广告](/zh-CN/docs/Games/Techniques/Publishing_games/Game_monetization#Advertisements) , 在免费的门户网站上推广游戏会更有效。你可以在公共门户网站,比如[HTML5Games.com](http://html5games.com/)发布游戏,比起传统的游戏发行平台,它更像一个宣传平台。
+设立门户网站主要与[收益化](/zh-CN/docs/Games/Publishing_games/Game_monetization)挂钩,但是如果你不打算[售卖许可](/zh-CN/docs/Games/Publishing_games/Game_monetization#licensing)来让人们可以购买你的游戏而是打算[发布广告](/zh-CN/docs/Games/Publishing_games/Game_monetization#advertisements) , 在免费的门户网站上推广游戏会更有效。你可以在公共门户网站,比如[HTML5Games.com](http://html5games.com/)发布游戏,比起传统的游戏发行平台,它更像一个宣传平台。
免费的门户网站带来了流量,但是,只有最好的广告才足够受欢迎,能够从发布的广告中获得一些业绩。另一方面,如果你没有预算和有限的时间,门户网站也是一个完美的工具,它可以让更多人看到你的游戏
@@ -44,7 +44,7 @@ slug: Games/Publishing_games/Game_promotion
像是[Tuts+ Game Development](http://gamedevelopment.tutsplus.com/) 这样的网站可能会更让人开心——他们为文章付稿费。但并不是所有的主旨都会被接受。当你在写教程的时候,记住要把重点放在给读者提供一些有价值的东西上。他们想要学习一些东西——提供你的专业知识并将你的游戏作为案例研究。专注于一个方面,并试图解释它的全部和细节。如果人们有任何问题,请记得在评论中跟进讨论。
-如果你联系的门户网站因你未写过教程而未采纳你的教程,可以在[自己的博客](/zh-CN/docs/Games/Publishing_games/Game_promotion#Website_and_blog)先发布教程,这是锻炼你的写作技巧的最简单的方式。
+如果你联系的门户网站因你未写过教程而未采纳你的教程,可以在[自己的博客](#Website_and_blog)先发布教程,这是锻炼你的写作技巧的最简单的方式。
## YouTuber 视频主 (YouTubers)
@@ -70,10 +70,10 @@ slug: Games/Publishing_games/Game_promotion
## 培养社区
-你可以帮助社区成长,同时推广你自己和你的游戏。发布[每周时事通讯](http://gamedevjsweekly.com/),组织[在线竞赛](http://js13kgames.com/)或者[线下聚会](http://gamedevjs.com/),这些都能让别人知道你对自己的工作充满激情,他们可以依靠你。当你需要帮助的时候,他们会在你身边
+你可以帮助社区成长,同时推广你自己和你的游戏。发布[每周时事通讯](http://gamedevjsweekly.com/),组织[在线竞赛](https://js13kgames.com/)或者[线下聚会](http://gamedevjs.com/),这些都能让别人知道你对自己的工作充满激情,他们可以依靠你。当你需要帮助的时候,他们会在你身边
## 总结
任何推广你的游戏的方法都是好的。你有很多选择,其中大部分都是免费的,所以关键在于你的热情和可用时间。有时候你不得不花更多的时间去推广一款游戏,而不是真正去开发它。记住,如果没有人知道世界上最好的游戏的存在,那么拥有它是没有任何意义的。
-现在让我们进入[游戏收益化](/zh-CN/docs/Games/Techniques/Publishing_games/Game_monetization)部分,然后挣口饭吃吧。
+现在让我们进入[游戏收益化](/zh-CN/docs/Games/Publishing_games/Game_monetization)部分,然后挣口饭吃吧。
diff --git a/files/zh-cn/games/publishing_games/index.md b/files/zh-cn/games/publishing_games/index.md
index 87b6ba5d6fd91a..8ffb19ef17301b 100644
--- a/files/zh-cn/games/publishing_games/index.md
+++ b/files/zh-cn/games/publishing_games/index.md
@@ -9,7 +9,7 @@ HTML5 游戏在发布和分发上具有极大的优势--你可以通过网络自
## 游戏发布
-你按照一个或两个教程([1](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript),[2](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser))制作了一个 HTML5 游戏。[Game distribution](/zh-CN/docs/Games/Publishing_games/Game_distribution)提供了你发布游戏时所需的一切知识。包括如何在线托管游戏,提交游戏到开放的游戏市场,或封闭的游戏市场,如 Google Play,iOS App Store.
+你按照一个或两个教程([1](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript),[2](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser))制作了一个 HTML5 游戏。[Game distribution](/zh-CN/docs/Games/Publishing_games/Game_distribution)提供了你发布游戏时所需的一切知识。包括如何在线托管游戏,提交游戏到开放的游戏市场,或封闭的游戏市场,如 Google Play,iOS App Store.
## 游戏推广
diff --git a/files/zh-cn/games/techniques/3d_on_the_web/basic_theory/index.md b/files/zh-cn/games/techniques/3d_on_the_web/basic_theory/index.md
index b1e2a155fe6047..cce7c1e6b59c35 100644
--- a/files/zh-cn/games/techniques/3d_on_the_web/basic_theory/index.md
+++ b/files/zh-cn/games/techniques/3d_on_the_web/basic_theory/index.md
@@ -54,7 +54,7 @@ WebGL 使用右手坐标系统 — `x` 轴向右,`y` 轴向上 `z` 轴指向
![Camera](mdn-games-3d-camera.png)
-**投射转换**(projection transformation), 也被称作透视转换 (perspective transformation), 这一步定义摄像机设置,在此过程会设置哪些在摄像机中可见,配置包含视野 (field of view), 宽高比例 (aspect ratio) 和可选的近裁剪和远裁剪参数。阅读 Three.js 文章[摄像机](/zh-CN/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js#Camera)了解更多。
+**投射转换**(projection transformation), 也被称作透视转换 (perspective transformation), 这一步定义摄像机设置,在此过程会设置哪些在摄像机中可见,配置包含视野 (field of view), 宽高比例 (aspect ratio) 和可选的近裁剪和远裁剪参数。阅读 Three.js 文章[摄像机](/zh-CN/docs/Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js#camera)了解更多。
![Camera settings](mdn-games-3d-camera-settings.png)
diff --git a/files/zh-cn/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.md b/files/zh-cn/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.md
index 44173d9c2ad17a..8a346db9a9953a 100644
--- a/files/zh-cn/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.md
+++ b/files/zh-cn/games/techniques/3d_on_the_web/building_up_a_basic_demo_with_three.js/index.md
@@ -16,8 +16,8 @@ slug: Games/Techniques/3D_on_the_web/Building_up_a_basic_demo_with_Three.js
- 确保使用的支持 [WebGL](/zh-CN/docs/Web/API/WebGL_API) 的现代浏览器,例如最新版的 Firefox 或 Chrome.
- 创建一个目录保存例子。
-- 复制最新的压缩版 [Three.js](http://threejs.org/build/three.min.js) 到你的目录。
-- 用单独的浏览器 tab 打开 [Three.js](http://threejs.org/docs/) 文档 — 对应参考很有用。
+- 复制最新的压缩版 [Three.js](https://threejs.org/build/three.min.js) 到你的目录。
+- 用单独的浏览器 tab 打开 [Three.js](https://threejs.org/docs/) 文档 — 对应参考很有用。
## HTML 结构
@@ -105,7 +105,7 @@ You should experiment with these values and see how they change what you see in
## Rendering the scene
-Everything is ready, but we still can't see anything. Although we set the renderer up, we still have to actually render everything. Our `render()` function will do this job, with a little help from [`requestAnimationFrame()`](/zh-CN/docs/Web/API/window/requestAnimationFrame), which causes the scene to be re-rendered constantly on every frame:
+Everything is ready, but we still can't see anything. Although we set the renderer up, we still have to actually render everything. Our `render()` function will do this job, with a little help from [`requestAnimationFrame()`](/zh-CN/docs/Web/API/Window/requestAnimationFrame), which causes the scene to be re-rendered constantly on every frame:
```js
function render() {
diff --git a/files/zh-cn/games/techniques/3d_on_the_web/glsl_shaders/index.md b/files/zh-cn/games/techniques/3d_on_the_web/glsl_shaders/index.md
index 51030de486fbe8..09c753c35f1bdb 100644
--- a/files/zh-cn/games/techniques/3d_on_the_web/glsl_shaders/index.md
+++ b/files/zh-cn/games/techniques/3d_on_the_web/glsl_shaders/index.md
@@ -52,7 +52,7 @@ void main() {
- 确保你在使用对 [WebGL](/zh-CN/docs/Web/API/WebGL_API) 有良好支持的现代浏览器,比如最新版的 Firefox 或 Chrome.
- 创建一个目录保存你的实验。
-- 拷贝一份的 [压缩版的 Three.js 库](http://threejs.org/build/three.min.js) 到你的目录。
+- 拷贝一份的 [压缩版的 Three.js 库](https://threejs.org/build/three.min.js) 到你的目录。
### HTML 结构
@@ -118,7 +118,7 @@ void main() {
每次的`gl_Position` 的结果是计算 model-view 矩阵和投射矩阵和投射矩阵相乘并得到最后的顶点位置。
> [!NOTE]
-> 你可以在 [顶点处理](/zh-CN/docs/Games/Techniques/3D_on_the_web/Basic_theory#Vertex_processing)中学到更多关于模型,视图和投射变换,并且你可以在文末看到更多学习链接。
+> 你可以在 [顶点处理](/zh-CN/docs/Games/Techniques/3D_on_the_web/Basic_theory#vertex_processing)中学到更多关于模型,视图和投射变换,并且你可以在文末看到更多学习链接。
`projectionMatrix` 和 `modelViewMatrix` 两个函数都是 Three.js 提供的,并且传入了一个新的 3D 位置向量,转成着色器之后直接导致立方体向 `x` 轴移动 10 个单位,向`z` 轴移动了 5 个单位。我们可以忽略第四个参数并且保持为默认的`1.0` ; 这是用来控制 3D 空间中订单位置裁剪的,这个例子中不需要。
@@ -142,7 +142,7 @@ void main() {
// var basicMaterial = new THREE.MeshBasicMaterial({color: 0x0095DD});
```
-然后创建 [`shaderMaterial`](http://threejs.org/docs/#Reference/Materials/ShaderMaterial):
+然后创建 [`shaderMaterial`](https://threejs.org/docs/#Reference/Materials/ShaderMaterial):
```js
var shaderMaterial = new THREE.ShaderMaterial({
@@ -182,4 +182,4 @@ Three.js 编译和运行这两个这两个着色器到材质所在的网格 (mes
## 其他链接
- [学习 WebGL](http://learningwebgl.com/blog/?page_id=1217) — 基本 WebGL 知识
-- [WebGL 着色器和 WebGL 中的 GLSL 基础](http://webglfundamentals.org/webgl/lessons/webgl-shaders-and-glsl.html) — GLSL 特定信息
+- [WebGL 着色器和 WebGL 中的 GLSL 基础](https://webglfundamentals.org/webgl/lessons/webgl-shaders-and-glsl.html) — GLSL 特定信息
diff --git a/files/zh-cn/games/techniques/controls_gamepad_api/index.md b/files/zh-cn/games/techniques/controls_gamepad_api/index.md
index ca24eb9d6d1681..ca8f38744e7d96 100644
--- a/files/zh-cn/games/techniques/controls_gamepad_api/index.md
+++ b/files/zh-cn/games/techniques/controls_gamepad_api/index.md
@@ -13,7 +13,7 @@ slug: Games/Techniques/Controls_Gamepad_API
## API 状态与浏览器支持
-[Gamepad API](http://www.w3.org/TR/gamepad/) 在 W3C 的进程中仍然还是工作草案的状态,这意味着它的实现方法可能还会出现变动,但是就目前来说[浏览器的支持性](http://caniuse.com/gamepad)相当不错。Firefox 29+ 和 Chrome 35+ 对其支持得非常好。Opera 在版本 22+ 对 API 进行了支持 (一点也不奇怪,因为他们现在使用 Chrome 的引擎了。) 并且微软最近在 Edge 中对 API 实现了支持,也就是说四大主流浏览器现在都支持 Gamepad API。
+[Gamepad API](https://www.w3.org/TR/gamepad/) 在 W3C 的进程中仍然还是工作草案的状态,这意味着它的实现方法可能还会出现变动,但是就目前来说[浏览器的支持性](http://caniuse.com/gamepad)相当不错。Firefox 29+ 和 Chrome 35+ 对其支持得非常好。Opera 在版本 22+ 对 API 进行了支持 (一点也不奇怪,因为他们现在使用 Chrome 的引擎了。) 并且微软最近在 Edge 中对 API 实现了支持,也就是说四大主流浏览器现在都支持 Gamepad API。
## 哪种控制器最好?
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/animations_and_tweens/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/animations_and_tweens/index.md
index b1cb123142648a..9e5e4995a54025 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/animations_and_tweens/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/animations_and_tweens/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Animations_and_tweens
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Extra_lives", "Games/Workflows/2D_Breakout_game_Phaser/Buttons")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser) 16 的**第 14 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson14.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson14.html)完成本课程后找到源代码。
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 16 的**第 14 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson14.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson14.html)完成本课程后找到源代码。
为了使游戏看起来更加多汁和活泼,我们可以使用动画和补间。这将导致更好,更有趣的体验。让我们来探讨如何在游戏中实现 Phaser 动画和补间。
@@ -102,6 +102,6 @@ game.add
## 下一步
-动画和 tweens 看起来很不错,但我们可以添加更多的我们的游戏 - 在下一节我们将看看处理[按钮](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Buttons)输入。
+动画和 tweens 看起来很不错,但我们可以添加更多的我们的游戏 - 在下一节我们将看看处理[按钮](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Buttons)输入。
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Extra_lives", "Games/Workflows/2D_Breakout_game_Phaser/Buttons")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/bounce_off_the_walls/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/bounce_off_the_walls/index.md
index 3f6ebc04ee543a..58f8d1c21d661a 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/bounce_off_the_walls/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/bounce_off_the_walls/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Bounce_off_the_walls
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Physics", "Games/Workflows/2D_Breakout_game_Phaser/Player_paddle_and_controls")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser)的**第 6 步**。在[Gamedev-Phaser-Content-Kit / demos / lesson06.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson06.html)完成本课后,你可以找到源代码。
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser)的**第 6 步**。在[Gamedev-Phaser-Content-Kit / demos / lesson06.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson06.html)完成本课后,你可以找到源代码。
现在已经介绍了物理引擎,我们可以开始在游戏中实现碰撞检测 - 首先我们来看看墙壁。
@@ -35,6 +35,6 @@ ball.body.bounce.set(1);
## 下一步
-现在开始看起来更像是一个游戏,但是我们无法以任何方式控制它 - 现在是介绍[玩家挡板和控制的时候了](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Player_paddle_and_controls)。
+现在开始看起来更像是一个游戏,但是我们无法以任何方式控制它 - 现在是介绍[玩家挡板和控制的时候了](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Player_paddle_and_controls)。
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Physics", "Games/Workflows/2D_Breakout_game_Phaser/Player_paddle_and_controls")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/build_the_brick_field/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/build_the_brick_field/index.md
index ffb59a7b3df504..83a18ad62fec16 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/build_the_brick_field/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/build_the_brick_field/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Build_the_brick_field
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Game_over", "Games/Workflows/2D_Breakout_game_Phaser/Collision_detection")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser) 16 的**第 9 步**。在[Gamedev-Phaser-Content-Kit / demos / lesson09.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson09.html)完成本课后,你可以找到源代码。
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 16 的**第 9 步**。在[Gamedev-Phaser-Content-Kit / demos / lesson09.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson09.html)完成本课后,你可以找到源代码。
建立砖块比将单个对象添加到屏幕要复杂一点,尽管使用 Phaser 还是比纯 JavaScript 更容易。我们来探讨如何创建一组砖块,并使用循环在屏幕上打印。
@@ -158,6 +158,6 @@ function initBricks() {
## 下一步
-有些东西丢失了 球不经停,经过砖块 - 我们需要适当的[碰撞检测](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Collision_detection)。
+有些东西丢失了 球不经停,经过砖块 - 我们需要适当的[碰撞检测](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Collision_detection)。
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Game_over", "Games/Workflows/2D_Breakout_game_Phaser/Collision_detection")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/buttons/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/buttons/index.md
index a6e7e7c01cf805..4fb4910d2860b3 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/buttons/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/buttons/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Buttons
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Animations_and_tweens", "Games/Workflows/2D_Breakout_game_Phaser/Randomizing_gameplay")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser) 16 的**第 15 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson15.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson15.html)完成本课程后找到源代码
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 16 的**第 15 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson15.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson15.html)完成本课程后找到源代码
而不是立即开始游戏,我们可以通过添加他们可以按的开始按钮将该决定留给玩家。我们来调查如何做到这一点。
@@ -99,6 +99,6 @@ function update() {
## 下一步
-在本系列文章中我们将做的最后一件事情是,通过添加一些[随机化](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Randomizing_gameplay)的方式,球从球上弹起来,使游戏更有趣。
+在本系列文章中我们将做的最后一件事情是,通过添加一些[随机化](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Randomizing_gameplay)的方式,球从球上弹起来,使游戏更有趣。
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Animations_and_tweens", "Games/Workflows/2D_Breakout_game_Phaser/Randomizing_gameplay")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/collision_detection/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/collision_detection/index.md
index 8c8a64cd281528..285d1612258b12 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/collision_detection/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/collision_detection/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Collision_detection
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Build_the_brick_field", "Games/Workflows/2D_Breakout_game_Phaser/The_score")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser) 16 的**第 10 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson10.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson10.html)完成本课程后找到源代码。
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 16 的**第 10 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson10.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson10.html)完成本课程后找到源代码。
现在接下来的挑战 - 球和砖块之间的碰撞检测。幸运的是,我们可以使用物理引擎来检查单个对象(如球和桨)之间的碰撞,也可以检测对象和组之间的碰撞。
@@ -35,7 +35,7 @@ function ballHitBrick(ball, brick) {
感谢 Phaser,有两个参数传递给函数 - 第一个是球,我们在碰撞方法中明确定义,第二个是球碰撞的砖组中的单个砖。在功能内部,我们从屏幕上删除所讨论的砖块,只需运行其`kill()`上的方法即可。
-你将期望在使用[纯 JavaScript](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript/Collision_detection)时编写更多自己的计算机来实现碰撞检测。这是使用框架的好处 - 你可以为 Phaser 留下大量无聊的代码,并专注于制作游戏中最有趣和最有趣的部分。
+你将期望在使用[纯 JavaScript](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection)时编写更多自己的计算机来实现碰撞检测。这是使用框架的好处 - 你可以为 Phaser 留下大量无聊的代码,并专注于制作游戏中最有趣和最有趣的部分。
## 比较你的代码
@@ -45,6 +45,6 @@ function ballHitBrick(ball, brick) {
## 下一步
-我们可以打砖块并删除它们,这已经是游戏的一个很好的补充。结果,更好地计算被毁砖增加[得分](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/The_score)。
+我们可以打砖块并删除它们,这已经是游戏的一个很好的补充。结果,更好地计算被毁砖增加[得分](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/The_score)。
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Build_the_brick_field", "Games/Workflows/2D_Breakout_game_Phaser/The_score")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/extra_lives/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/extra_lives/index.md
index c78249afb52af4..425aa434549a05 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/extra_lives/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/extra_lives/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Extra_lives
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Win_the_game", "Games/Workflows/2D_Breakout_game_Phaser/Animations_and_tweens")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser) 16 的**第 13 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson13.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson13.html)完成本课程后找到源代码。
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 16 的**第 13 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson13.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson13.html)完成本课程后找到源代码。
我们可以通过增加生活使游戏更愉快。在这篇文章中,我们将实施一个生活系统,以便玩家可以继续玩,直到他们失去了三个生命,而不仅仅是一个人。
@@ -25,7 +25,7 @@ var lifeLostText;
## 定义新的文本标签
-定义文本看起来像我们已经在[分数](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/The_score)课上已经做[的](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/The_score)。`scoreText`在`create()`函数内的现有定义下方添加以下行:
+定义文本看起来像我们已经在[分数](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/The_score)课上已经做[的](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/The_score)。`scoreText`在`create()`函数内的现有定义下方添加以下行:
```js
livesText = game.add.text(game.world.width - 5, 5, "Lives: " + lives, {
@@ -132,6 +132,6 @@ function ballLeaveScreen() {
## 下一步
-生活让游戏更加宽容 - 如果你失去一个生命,你还剩下两个,可以继续玩。现在让我们通过添加[动画和补间来](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Animations_and_tweens)扩展游戏的外观和感觉。
+生活让游戏更加宽容 - 如果你失去一个生命,你还剩下两个,可以继续玩。现在让我们通过添加[动画和补间来](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Animations_and_tweens)扩展游戏的外观和感觉。
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Win_the_game", "Games/Workflows/2D_Breakout_game_Phaser/Animations_and_tweens")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/game_over/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/game_over/index.md
index 95bd34e5fe59b7..71cf6382d943b3 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/game_over/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/game_over/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Game_over
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Player_paddle_and_controls", "Games/Workflows/2D_Breakout_game_Phaser/Build_the_brick_field")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser) 16 的**第 8 步**。在[Gamedev-Phaser-Content-Kit / demos / lesson08.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson08.html)完成本课后,你可以找到源代码。
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 16 的**第 8 步**。在[Gamedev-Phaser-Content-Kit / demos / lesson08.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson08.html)完成本课后,你可以找到源代码。
为了使游戏更有趣,我们可以引入失去的能力 - 如果在到达屏幕底部边缘之前没有击球,那么这个游戏将会结束。
@@ -39,6 +39,6 @@ ball.events.onOutOfBounds.add(function () {
## 下一步
-现在的基本游戏就是让我们通过引入砖块来更有趣的是 - 现在是[建造砖块](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Build_the_brick_field)的时候了。
+现在的基本游戏就是让我们通过引入砖块来更有趣的是 - 现在是[建造砖块](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Build_the_brick_field)的时候了。
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Player_paddle_and_controls", "Games/Workflows/2D_Breakout_game_Phaser/Build_the_brick_field")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/index.md
index ebe7f931439971..21ae7e05f94481 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/index.md
@@ -19,24 +19,24 @@ slug: Games/Tutorials/2D_breakout_game_Phaser
所有的课程 — 以及我们接下来将一起做的各个版本的 [MDN Breakout game](https://end3r.github.io/Gamedev-Phaser-Content-Kit/demos/lesson16.html) 都能在 [GitHub](https://end3r.github.io/Gamedev-Phaser-Content-Kit/demos/)上找到
-1. [初始化框架](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Initialize_the_framework)
-2. [缩放](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Scaling)
-3. [加载资源并在屏幕上打印](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Load_the_assets_and_print_them_on_screen)
-4. [移动小球](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Move_the_ball)
-5. [物理](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Physics)
-6. [从墙上弹开](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Bounce_off_the_walls)
-7. [弹块和控制](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Player_paddle_and_controls)
-8. [游戏结束](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Game_over)
-9. [建立砖块](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Build_the_brick_field)
-10. [碰撞检测](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Collision_detection)
-11. [得分](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/The_score)
-12. [胜利](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Win_the_game)
-13. [额外生命](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Extra_lives)
-14. [动画与补间](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Animations_and_tweens)
-15. [按钮](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Buttons)
-16. [随机游戏](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Randomizing_gameplay)
-
-学习路线的小提示 — 最好先熟悉使用原生 JavaScript 进行网页游戏开发,这样可以打下坚实的基础。如果你还不熟悉原生 javascript 开发,我们建议你先过一遍这个系列,[使用原生 Javascript 开发 MDN 消除游戏](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript).
+1. [初始化框架](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Initialize_the_framework)
+2. [缩放](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Scaling)
+3. [加载资源并在屏幕上打印](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Load_the_assets_and_print_them_on_screen)
+4. [移动小球](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Move_the_ball)
+5. [物理](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Physics)
+6. [从墙上弹开](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Bounce_off_the_walls)
+7. [弹块和控制](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Player_paddle_and_controls)
+8. [游戏结束](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Game_over)
+9. [建立砖块](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Build_the_brick_field)
+10. [碰撞检测](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Collision_detection)
+11. [得分](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/The_score)
+12. [胜利](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Win_the_game)
+13. [额外生命](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Extra_lives)
+14. [动画与补间](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Animations_and_tweens)
+15. [按钮](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Buttons)
+16. [随机游戏](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Randomizing_gameplay)
+
+学习路线的小提示 — 最好先熟悉使用原生 JavaScript 进行网页游戏开发,这样可以打下坚实的基础。如果你还不熟悉原生 javascript 开发,我们建议你先过一遍这个系列,[使用原生 Javascript 开发 MDN 消除游戏](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript).
在那之后,你就能随意挑选框架并用在你的项目中;我们选择了 Phaser 这个稳定优越的框架,它有着好的支持和社区环境以及大量优秀的插件。框架加速了开发并能帮你管理无趣的部分,让你专注于有意思的事务。然而,框架也有不好的地方,所以当一些意想不到的事情发生了或者想实现一些框架没有提供的功能时,你就将需要原生的 JavaScript 知识了。
@@ -45,6 +45,6 @@ slug: Games/Tutorials/2D_breakout_game_Phaser
## Next steps
-好了,那我们就开始吧!前往系列第一部分 — [初始化框架](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Initialize_the_framework).
+好了,那我们就开始吧!前往系列第一部分 — [初始化框架](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Initialize_the_framework).
{{Next("Games/Workflows/2D_Breakout_game_Phaser/Initialize_the_framework")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/initialize_the_framework/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/initialize_the_framework/index.md
index 25e01da63bc4de..a905c0e269fcca 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/initialize_the_framework/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/initialize_the_framework/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Initialize_the_framework
{{PreviousNext("Games/Tutorials/2D_Breakout_game_Phaser", "Games/Tutorials/2D_Breakout_game_Phaser/Scaling")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser)系列的第一课。在课程完成之后,你可以在[Gamedev-Phaser-Content-Kit/demos/lesson01.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson01.html)找到源码。
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser)系列的第一课。在课程完成之后,你可以在[Gamedev-Phaser-Content-Kit/demos/lesson01.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson01.html)找到源码。
在我们开始写游戏的功能之前,我们需要创建一个用来内部渲染游戏的基础架构。使用 HTML 就能做到 — Parser 框架将生成所需的 {{htmlelement("canvas")}} 元素。
@@ -76,6 +76,6 @@ HTML 文档结构非常的简单,这个游戏将整个被渲染在框架生成
## 下一步
-现在我们已经完成了一个简单的 HTML 页面,并且学习了如何安装 Phaser,让我们继续学习第二章: [scaling](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Scaling).
+现在我们已经完成了一个简单的 HTML 页面,并且学习了如何安装 Phaser,让我们继续学习第二章: [scaling](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Scaling).
{{PreviousNext("Games/Tutorials/2D_Breakout_game_Phaser", "Games/Tutorials/2D_Breakout_game_Phaser/Scaling")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/load_the_assets_and_print_them_on_screen/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/load_the_assets_and_print_them_on_screen/index.md
index c9deb141d99ecc..61e08326c5ef19 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/load_the_assets_and_print_them_on_screen/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/load_the_assets_and_print_them_on_screen/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Load_the_assets_and_print_them_on_
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Scaling", "Games/Workflows/2D_Breakout_game_Phaser/Move the ball")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser) 16 的**第三步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson03.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson03.html)完成本课程后找到源代码
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 16 的**第三步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson03.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson03.html)完成本课程后找到源代码
我们的游戏将围绕屏幕滚动,弹出一个桨,摧毁砖块赚取积分 - 熟悉吗?在本文中,我们将介绍如何将 sprite 添加到我们的 gameworld 中。
@@ -55,6 +55,6 @@ function create() {
## 下一步
-打出球很容易; 接下来我们将尝试在屏幕上[移动球](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Move_the_ball)。
+打出球很容易; 接下来我们将尝试在屏幕上[移动球](/zh-CN/docs/Games/Tutorials/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/zh-cn/games/tutorials/2d_breakout_game_phaser/move_the_ball/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/move_the_ball/index.md
index 39d63aa4391b52..9145a4e7189914 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/move_the_ball/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/move_the_ball/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Move_the_ball
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Load_the_assets_and_print_them_on_screen", "Games/Workflows/2D_Breakout_game_Phaser/Physics")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser) 16 的**第 4 步**。在[Gamedev-Phaser-Content-Kit / demos / lesson04.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson04.html)完成本课后,你可以找到源代码。
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 16 的**第 4 步**。在[Gamedev-Phaser-Content-Kit / demos / lesson04.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson04.html)完成本课后,你可以找到源代码。
我们在屏幕上打印了我们的蓝色球,但它什么都不做,这样做会很酷。本文介绍如何做到这一点。
@@ -34,6 +34,6 @@ function update() {
下一步是添加一些基本的碰撞检测,所以我们的球可以从墙壁反弹。这将需要几行代码 - 一个比我们迄今为止看到的更复杂的步骤,特别是如果我们也想添加桨和砖碰撞 - 但是幸运的是 Phaser 使我们比我们想要使用纯粹的方法更容易做到这一点 JavaScript 的。
-无论如何,在我们做所有的事情之前,我们将首先介绍 Phaser 的[物理](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Physics)引擎,并做一些设置工作。
+无论如何,在我们做所有的事情之前,我们将首先介绍 Phaser 的[物理](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Physics)引擎,并做一些设置工作。
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Load_the_assets_and_print_them_on_screen", "Games/Workflows/2D_Breakout_game_Phaser/Physics")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/physics/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/physics/index.md
index 6b0af75418f55f..d625de2326cffc 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/physics/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/physics/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Physics
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Move_the_ball", "Games/Workflows/2D_Breakout_game_Phaser/Bounce_off_the_walls")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser) 16 的**第 5 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson05.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson05.html)完成本课程后找到源代码
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 16 的**第 5 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson05.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson05.html)完成本课程后找到源代码
为了在我们的游戏中的对象之间进行正确的碰撞检测,我们将需要物理学; 本文将向你介绍 Phaser 中的可用内容,以及演示典型的简单设置。
@@ -87,6 +87,6 @@ function update() {}
## 下一步
-现在我们可以转到下一课,看看如何让球[从墙上弹起](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Bounce_off_the_walls)。
+现在我们可以转到下一课,看看如何让球[从墙上弹起](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Bounce_off_the_walls)。
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Move_the_ball", "Games/Workflows/2D_Breakout_game_Phaser/Bounce_off_the_walls")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/player_paddle_and_controls/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/player_paddle_and_controls/index.md
index 7e52bca218e974..ae92b31eb39228 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/player_paddle_and_controls/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/player_paddle_and_controls/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Player_paddle_and_controls
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Bounce_off_the_walls", "Games/Workflows/2D_Breakout_game_Phaser/Game_over")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser) 16 的**第 7 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson07.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson07.html)完成本课程后找到源代码。
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 16 的**第 7 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson07.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson07.html)完成本课程后找到源代码。
我们有球从墙上移动并弹跳,但它很快变得无聊 - 没有互动!我们需要一种介绍游戏的方法,所以在这篇文章中,我们将创建一个桨来移动并击中球。
@@ -123,6 +123,6 @@ ball.body.velocity.set(150, -150);
## 下一步
-我们可以移动桨,并将球反弹,但是如果球从屏幕的底部边缘反弹,那又有什么意义?我们来介绍丢失的可能性 - 也称为[游戏](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Game_over)逻辑。
+我们可以移动桨,并将球反弹,但是如果球从屏幕的底部边缘反弹,那又有什么意义?我们来介绍丢失的可能性 - 也称为[游戏](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Game_over)逻辑。
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Bounce_off_the_walls", "Games/Workflows/2D_Breakout_game_Phaser/Game_over")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/randomizing_gameplay/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/randomizing_gameplay/index.md
index 05becac11b8387..4eeb5a5cf5545a 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/randomizing_gameplay/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/randomizing_gameplay/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Randomizing_gameplay
{{Previous("Games/Workflows/2D_Breakout_game_Phaser/Buttons")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser) 16 中的第**16 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson16.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson16.html)完成本课程后找到源代码。
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 16 中的第**16 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson16.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson16.html)完成本课程后找到源代码。
我们的游戏似乎已经完成了,但是如果你看起来足够近,你会发现球在整个游戏中都以相同的角度从桨上弹起。这意味着每个游戏都非常相似。为了解决这个问题,提高可玩性,我们应该使反弹角度更加随机,在本文中我们将介绍一下如何。
@@ -46,6 +46,6 @@ function ballHitPaddle(ball, paddle) {
一定要检查越来越多的[示例](http://examples.phaser.io/)列表和[官方文档](http://docs.phaser.io/),如果你需要任何帮助,请访问[HTML5 Gamedevs 论坛](http://www.html5gamedevs.com/forum/14-phaser/)。
-你也可以返回[本教程系列的索引页](/zh-CN/docs/Games/Workflows/2D_breakout_game_Phaser)。
+你也可以返回[本教程系列的索引页](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser)。
{{Previous("Games/Workflows/2D_Breakout_game_Phaser/Buttons")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/scaling/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/scaling/index.md
index 178f50be758f82..7f5760bda05f55 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/scaling/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/scaling/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Scaling
{{PreviousNext("Games/Tutorials/2D_Breakout_game_Phaser/Initialize_the_framework", "Games/Tutorials/2D_Breakout_game_Phaser/Load_the_assets_and_print_them_on_screen")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser)系列的第二课。在课程完成之后,你可以在[Gamedev-Phaser-Content-Kit/demos/lesson02.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson01.html)找到源码。
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser)系列的第二课。在课程完成之后,你可以在[Gamedev-Phaser-Content-Kit/demos/lesson02.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson01.html)找到源码。
缩放是指游戏画布如何在不同的屏幕尺寸上进行显示。我们可以在预加载阶段自动使游戏规模适合任何屏幕尺寸,之后就可以不用再担心屏幕尺寸的问题了。
@@ -49,6 +49,6 @@ game.stage.backgroundColor = "#eee";
## 下一步
-现在我们设置了我们游戏的缩放比例,让我们继续第三课,并设计出如何[加载资源并将其显示在屏幕上](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Load_the_assets_and_print_them_on_screen)。
+现在我们设置了我们游戏的缩放比例,让我们继续第三课,并设计出如何[加载资源并将其显示在屏幕上](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Load_the_assets_and_print_them_on_screen)。
{{PreviousNext("Games/Tutorials/2D_Breakout_game_Phaser/Initialize_the_framework", "Games/Tutorials/2D_Breakout_game_Phaser/Load_the_assets_and_print_them_on_screen")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/the_score/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/the_score/index.md
index 4c0b5afbbcd6ba..0a193ef6990e48 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/the_score/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/the_score/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/The_score
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Collision_detection", "Games/Workflows/2D_Breakout_game_Phaser/Win_the_game")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser) 16 的**第 11 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson11.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson11.html)完成本课程后找到源代码。
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 16 的**第 11 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson11.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson11.html)完成本课程后找到源代码。
得分也可以使游戏更有趣 - 你可以尝试击败自己的高分,或者你的朋友。在这篇文章中,我们将为我们的游戏添加一个评分系统。
@@ -64,6 +64,6 @@ function ballHitBrick(ball, brick) {
## 下一步
-我们现在有一个得分系统,但是如果你不能赢得,那么玩和保持分数是多少?让我们看看我们如何能够增加胜利的状态,让我们[赢得比赛](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Win_the_game)。
+我们现在有一个得分系统,但是如果你不能赢得,那么玩和保持分数是多少?让我们看看我们如何能够增加胜利的状态,让我们[赢得比赛](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Win_the_game)。
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/Collision_detection", "Games/Workflows/2D_Breakout_game_Phaser/Win_the_game")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/win_the_game/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/win_the_game/index.md
index a30d91b3f1bd87..441548a52beb79 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_phaser/win_the_game/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_phaser/win_the_game/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_breakout_game_Phaser/Win_the_game
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/The_score", "Games/Workflows/2D_Breakout_game_Phaser/Extra_lives")}}
-这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser) 16 的**第 12 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson12.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson12.html)完成本课程后找到源代码。
+这是[Gamedev Phaser 教程](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 16 的**第 12 步**。你可以在[Gamedev-Phaser-Content-Kit / demos / lesson12.html](https://github.com/end3r/Gamedev-Phaser-Content-Kit/blob/gh-pages/demos/lesson12.html)完成本课程后找到源代码。
在我们的游戏中实现获胜是相当容易的:如果你碰巧摧毁所有的砖块,那么你赢了。
@@ -44,6 +44,6 @@ function ballHitBrick(ball, brick) {
## 下一步
-失败和获胜都是实施的,所以我们的游戏的核心游戏就完成了。现在让我们添加一些额外的东西 - 我们会给玩家将 3 个[生活](/zh-CN/docs/Games/Workflows/2D_Breakout_game_Phaser/Extra_lives)的,而不是一个。
+失败和获胜都是实施的,所以我们的游戏的核心游戏就完成了。现在让我们添加一些额外的东西 - 我们会给玩家将 3 个[生活](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser/Extra_lives)的,而不是一个。
{{PreviousNext("Games/Workflows/2D_Breakout_game_Phaser/The_score", "Games/Workflows/2D_Breakout_game_Phaser/Extra_lives")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/bounce_off_the_walls/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/bounce_off_the_walls/index.md
index a0b7c35860d28e..612842fbf915e6 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/bounce_off_the_walls/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/bounce_off_the_walls/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Move_the_ball", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Paddle_and_keyboard_controls")}}
-本篇是 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch) 10 节教程中的第三节。如果你完成了本篇教程之后,你可以从 [Gamedev-Canvas-workshop/lesson3.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson03.html) 看到源码。
+本篇是 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript) 10 节教程中的第三节。如果你完成了本篇教程之后,你可以从 [Gamedev-Canvas-workshop/lesson3.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson03.html) 看到源码。
看到我们的球动起来很惊讶吧,但是它很快就从屏幕上消失了,当然我们是可以控制它的。我们会实现一些非常简单的碰撞检测 (详细后面解释),使球在画布的四周反弹回来。
@@ -105,6 +105,6 @@ if (y + dy > canvas.height - ballRadius || y + dy < ballRadius) {
## 下一步
-现在我们已经到了我们的球正在移动和留在游戏板上的阶段。在第四章中,我们将看看如何实现一个可控制的 paddle - 参见[paddle 和键盘控制](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch/Paddle_and_keyboard_controls)。
+现在我们已经到了我们的球正在移动和留在游戏板上的阶段。在第四章中,我们将看看如何实现一个可控制的 paddle - 参见[paddle 和键盘控制](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Paddle_and_keyboard_controls)。
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Move_the_ball", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Paddle_and_keyboard_controls")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.md
index 96f4e269fa5250..7b3c063bfd65cc 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/build_the_brick_field/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Build_the_brick_field
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Game_over", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Collision_detection")}}
-这是 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch)教程 10 节的第 6 节。你可以在完成本课程后在这里[Gamedev-Canvas-workshop/lesson6.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson06.html)找到源代码。
+这是 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript)教程 10 节的第 6 节。你可以在完成本课程后在这里[Gamedev-Canvas-workshop/lesson6.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson06.html)找到源代码。
在修改游戏机制后,我们可以输了 — 这样这游戏看起来终于像是一个游戏了,这真是太好了。但是,如果你总是让球与墙、板碰撞的话,很快就会感到无聊的。好游戏需要的是让球消灭砖,这就是我们即将要做的!
@@ -109,6 +109,6 @@ drawBricks();
## 下一节
-现在,我们有砖啦!但是球根本就没有和它们互动——接下来的第七章我们将让球和砖产生碰撞:[碰撞检测](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch/Collision_detection)。
+现在,我们有砖啦!但是球根本就没有和它们互动——接下来的第七章我们将让球和砖产生碰撞:[碰撞检测](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection)。
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Game_over", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Collision_detection")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.md
index 89449ac1c92d83..fa6af7adf81597 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/collision_detection/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Build_the_brick_field", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win")}}
-本篇为[Gamedev Canvas tutorial](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch)10 节教程中的**第 7 节。**在你完成这篇课程之后,你可以在[Gamedev-Canvas-workshop/lesson7.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson07.html).找到我们的源代码。
+本篇为[Gamedev Canvas tutorial](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript)10 节教程中的**第 7 节。**在你完成这篇课程之后,你可以在[Gamedev-Canvas-workshop/lesson7.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson07.html).找到我们的源代码。
我们已经在屏幕上画出了砖块,但游戏仍然没有那么有趣,因为球通过它们。我们需要考虑增加碰撞检测,这样球就可以弹击砖块并打破它们。
@@ -132,6 +132,6 @@ collisionDetection();
## 下一节
-我们现在肯定到了,继续前进吧!在第八章中,我们将探讨如何跟踪得分和获胜。[Track the score and win](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch/Track_the_score_and_win).
+我们现在肯定到了,继续前进吧!在第八章中,我们将探讨如何跟踪得分和获胜。[Track the score and win](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win).
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Build_the_brick_field", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.md
index c1a617c2a7aa70..eed0ca9e200d46 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/create_the_canvas_and_draw_on_it/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_dra
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Move_the_ball")}}
-本篇是 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch) 10 节教程中的第一节。如果你完成了本篇教程之后,你可以从 [Gamedev-Canvas-workshop/lesson1.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson01.html) 看到源码。
+本篇是 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript) 10 节教程中的第一节。如果你完成了本篇教程之后,你可以从 [Gamedev-Canvas-workshop/lesson1.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson01.html) 看到源码。
在我们开始编写游戏功能之前,我们可以通过 HTML 的 canvas 标签创建支撑游戏的基本结构。
@@ -110,6 +110,6 @@ ctx.closePath();
## 下一节
-现在我们已经创建了基本的 HTML 和关于画布的基本知识。我们继续第二节,如何让球在游戏中动起来 — [让球动起来](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch/Move_the_ball)。
+现在我们已经创建了基本的 HTML 和关于画布的基本知识。我们继续第二节,如何让球在游戏中动起来 — [让球动起来](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball)。
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Move_the_ball")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.md
index 885a1614e38eb3..f514c979029bf2 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/finishing_up/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up
{{Previous("Games/Workflows/2D_Breakout_game_pure_JavaScript/Mouse_controls")}}
-本篇为 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch) 10 节教程中的**第 10 节也是最后一节。**完成这篇课程后,你可以在 [Gamedev-Canvas-workshop/lesson10.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson10.html) 找到我们的源代码。
+本篇为 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript) 10 节教程中的**第 10 节也是最后一节。**完成这篇课程后,你可以在 [Gamedev-Canvas-workshop/lesson10.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson10.html) 找到我们的源代码。
不管我们做什么游戏,它总是存在优化的空间。例如,我们可以为玩家多提供几条命,让他们能在发生一两次失误的情况下顺利完成游戏。或者,我们也可以在渲染代码上下工夫。
@@ -103,8 +103,8 @@ requestAnimationFrame(draw);
## 游戏结束——暂时看来!
-祝贺你——你完成了本教程的所有小节!现在,你应该已经掌握 canvas 操纵的基础和 2D 游戏背后的逻辑了。是时候去学习一些框架,继续你的游戏开发之旅了!你可以看看本系列的姊妹篇:[用 Phaser 制作 2D 打砖块游戏](/zh-CN/docs/Games/Workflows/2D_breakout_game_Phaser) 或者 [Cyber Orb built in Phaser](/zh-CN/docs/Games/Workflows/HTML5_Gamedev_Phaser_Device_Orientation) 。或者,你也可以在 [MDN 游戏区](/zh-CN/docs/Games) 中获得灵感和更多知识。
+祝贺你——你完成了本教程的所有小节!现在,你应该已经掌握 canvas 操纵的基础和 2D 游戏背后的逻辑了。是时候去学习一些框架,继续你的游戏开发之旅了!你可以看看本系列的姊妹篇:[用 Phaser 制作 2D 打砖块游戏](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser) 或者 [Cyber Orb built in Phaser](/zh-CN/docs/Games/Tutorials/HTML5_Gamedev_Phaser_Device_Orientation) 。或者,你也可以在 [MDN 游戏区](/zh-CN/docs/Games) 中获得灵感和更多知识。
-你也可以回到[本教程的目录页](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch)。祝编程愉快!
+你也可以回到[本教程的目录页](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript)。祝编程愉快!
{{Previous("Games/Workflows/2D_Breakout_game_pure_JavaScript/Mouse_controls")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/game_over/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/game_over/index.md
index d76affc5701963..2f8193b3b16ec6 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/game_over/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/game_over/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Game_over
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Paddle_and_keyboard_controls", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Build_the_brick_field")}}
-这是 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch)教程的第五章。你可以在完成本课程后在这里[Gamedev-Canvas-workshop/lesson5.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson05.html)找到源代码。
+这是 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript)教程的第五章。你可以在完成本课程后在这里[Gamedev-Canvas-workshop/lesson5.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson05.html)找到源代码。
看球从墙上反弹,并能够移动球盘是很有趣的。但除此之外,游戏什么都不做,也没有任何进展或最终目标。从游戏的角度来看,我们需要一个 game over。失败的逻辑很简单。如果你的球拍错过了球,并且球到达屏幕的底部边缘,那么游戏就结束了。
@@ -80,6 +80,6 @@ if (y + dy < ballRadius) {
## 下一步
-到目前为止,我们的表现相当不错,游戏变得更有趣,并且现在你可以输了!但它仍然缺少一些东西。让我们继续前进到第六章 - [建造砖块](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch/Build_the_brick_field) - 并创造一些砖块来消灭它们。
+到目前为止,我们的表现相当不错,游戏变得更有趣,并且现在你可以输了!但它仍然缺少一些东西。让我们继续前进到第六章 - [建造砖块](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Build_the_brick_field) - 并创造一些砖块来消灭它们。
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Paddle_and_keyboard_controls", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Build_the_brick_field")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/index.md
index 0b0d17968c18f2..05651750e24e07 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/index.md
@@ -19,27 +19,27 @@ slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript
全部教程 — [MDN 消除小游戏](http://breakout.enclavegames.com/lesson10.html) 的各个版本我们正一起管理并托管到 [GitHub](https://github.com/end3r/Canvas-gamedev-workshop) 上:
-1. [创建、绘制画布](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it)
-2. [让球动起来](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript/Move_the_ball)
-3. [反弹的墙](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls)
-4. [键盘操作](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript/Paddle_and_keyboard_controls)
-5. [游戏结束](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript/Game_over)
-6. [创建砖块](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript/Build_the_brick_field)
-7. [撞击处理](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript/Collision_detection)
-8. [统计得分、获得胜利](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win)
-9. [鼠标控制](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript/Mouse_controls)
-10. [完成](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript/Finishing_up)
+1. [创建、绘制画布](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it)
+2. [让球动起来](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball)
+3. [反弹的墙](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls)
+4. [键盘操作](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Paddle_and_keyboard_controls)
+5. [游戏结束](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Game_over)
+6. [创建砖块](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Build_the_brick_field)
+7. [撞击处理](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Collision_detection)
+8. [统计得分、获得胜利](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win)
+9. [鼠标控制](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls)
+10. [完成](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up)
对于实现一个网页游戏而言,最好的方式是从纯 JavaScirpt 着手,那样可以让我们建立更坚实的基础。之后你可以在你的项目中选择你喜欢的框架。框架也只是用 JavaScript 语言实现的工具;如果你想要在项目中使用框架,你必须先了解语言本身。框架可以帮你提高开发效率并生成一些基础的内容;但是如果没有达到你的预期,你只能慢慢调试或者使用原生 JavaScript 去实现解决方案。
> [!NOTE]
-> 如果你对使用第三方游戏资源库开发 2d 网页游戏感兴趣,可以参考本系列教程的 [2D breakout game using Phaser](/zh-CN/docs/Games/Workflows/2D_breakout_game_Phaser).
+> 如果你对使用第三方游戏资源库开发 2d 网页游戏感兴趣,可以参考本系列教程的 [2D breakout game using Phaser](/zh-CN/docs/Games/Tutorials/2D_breakout_game_Phaser).
> [!NOTE]
> 本系列教程可以用作游戏开发工作室的素材资源。如果你想探讨普通的游戏开发,你可以利用[Gamedev Canvas Content Kit](https://github.com/end3r/Gamedev-Canvas-Content-Kit)以及本教程的内容。
## 下一步
-好,让我们开始吧。第一步 — [创建、绘制画布](/zh-CN/docs/Games/Workflows/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it)
+好,让我们开始吧。第一步 — [创建、绘制画布](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it)
{{Next("Games/Workflows/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.md
index 295b1328eadc42..9c15eebb9e71aa 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/mouse_controls/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Finishing_up")}}
-本篇为 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch) 10 节教程中的**第 9 节**。在你完成这篇课程之后,你可以在 [Gamedev-Canvas-workshop/lesson9.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson09.html) 找到我们的源代码。
+本篇为 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript) 10 节教程中的**第 9 节**。在你完成这篇课程之后,你可以在 [Gamedev-Canvas-workshop/lesson9.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson09.html) 找到我们的源代码。
这个游戏实际已经完成,现在让我们着手去润色。我们已经添加过键盘控制,而加入鼠标控制也同样简单。
@@ -46,6 +46,6 @@ function mouseMoveHandler(e) {
## 下一步
-现在我们已经拥有一个完整的游戏。我们的系列教程将以一些细节上的调整作为[结束。](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch/Finishing_up)
+现在我们已经拥有一个完整的游戏。我们的系列教程将以一些细节上的调整作为[结束。](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Finishing_up)
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Finishing_up")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.md
index 4d89c0167b8c84..8ef02800812a33 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/move_the_ball/index.md
@@ -5,7 +5,7 @@ slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Move_the_ball
{{GamesSidebar}}{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls")}}
-本篇是 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch) 10 节教程中的第二节。如果你完成了本篇教程之后,你可以从 [Gamedev-Canvas-workshop/lesson2.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson02.html) 看到源码。
+本篇是 [Gamedev Canvas tutorial](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript) 10 节教程中的第二节。如果你完成了本篇教程之后,你可以从 [Gamedev-Canvas-workshop/lesson2.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson02.html) 看到源码。
从上一节中你已经知道如何去绘制一个球。现在让我们使它动起来。从技术上讲,我们将在画布上绘制一个球,之后让它消失,然后在一个稍微不用的位置上再绘制一个一样的球。就想电影里的每一帧动起来的感觉。
@@ -134,6 +134,6 @@ function draw() {
## 下一步
-我们已经画了我们的球,并将其移动,但它仍然消失在画布的边缘。在第三章中,我们将探讨如何使其 [从墙壁上反弹](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch/Bounce_off_the_walls).
+我们已经画了我们的球,并将其移动,但它仍然消失在画布的边缘。在第三章中,我们将探讨如何使其 [从墙壁上反弹](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls).
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Create_the_Canvas_and_draw_on_it", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/paddle_and_keyboard_controls/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/paddle_and_keyboard_controls/index.md
index ee181908804186..29d8f0c8fa62cd 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/paddle_and_keyboard_controls/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/paddle_and_keyboard_controls/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Paddle_and_keyboard_contr
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Game_over")}}
-这是[Gamedev Canvas tutorial](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch)中的第四章。完成本课程后,你可以在[Gamedev-Canvas-workshop/lesson4.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson04.html)找到源码。
+这是[Gamedev Canvas tutorial](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript)中的第四章。完成本课程后,你可以在[Gamedev-Canvas-workshop/lesson4.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson04.html)找到源码。
你可以看到球自由的、无限次的在墙壁上反弹,但是没有和我们发生任何交互。如果我们没有对它的控制操作,这仍然不是一个游戏。下面,我们新增一些用户操作:一个可以控制球的球板。
@@ -123,6 +123,6 @@ drawPaddle();
## 下一步
-现在我们有一些类似于游戏的东西。唯一的麻烦就是无论如何你都可以继续用球拍击球。这一切都将在第五章中改变,[游戏结束](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch/Game_over)时,我们会为游戏添加一个最后的状态。
+现在我们有一些类似于游戏的东西。唯一的麻烦就是无论如何你都可以继续用球拍击球。这一切都将在第五章中改变,[游戏结束](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Game_over)时,我们会为游戏添加一个最后的状态。
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Bounce_off_the_walls", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Game_over")}}
diff --git a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/track_the_score_and_win/index.md b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/track_the_score_and_win/index.md
index b9d766662f6a7a..a058b5d5523273 100644
--- a/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/track_the_score_and_win/index.md
+++ b/files/zh-cn/games/tutorials/2d_breakout_game_pure_javascript/track_the_score_and_win/index.md
@@ -7,7 +7,7 @@ slug: Games/Tutorials/2D_Breakout_game_pure_JavaScript/Track_the_score_and_win
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Collision_detection", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Mouse_controls")}}
-本篇为[Gamedev Canvas tutorial](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch)10 节教程中的**第 8 节。**在你完成这篇课程之后,你可以在[Gamedev-Canvas-workshop/lesson8.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson08.html)找到我们的源代码。
+本篇为[Gamedev Canvas tutorial](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript)10 节教程中的**第 8 节。**在你完成这篇课程之后,你可以在[Gamedev-Canvas-workshop/lesson8.html](https://github.com/end3r/Gamedev-Canvas-workshop/blob/gh-pages/lesson08.html)找到我们的源代码。
破坏砖块真的很酷,但更酷的是,游戏可以给每个用户击破的砖块奖励分数,并保持总分。
@@ -104,6 +104,6 @@ function collisionDetection() {
## 下一节
-游戏到这一步看起来相当不错。在下一课中,你将通过添加鼠标控件来扩大游戏的吸引力:[Mouse controls](/zh-CN/docs/Games/Workflows/Breakout_game_from_scratch/Mouse_controls).。
+游戏到这一步看起来相当不错。在下一课中,你将通过添加鼠标控件来扩大游戏的吸引力:[Mouse controls](/zh-CN/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Mouse_controls).。
{{PreviousNext("Games/Workflows/2D_Breakout_game_pure_JavaScript/Collision_detection", "Games/Workflows/2D_Breakout_game_pure_JavaScript/Mouse_controls")}}
diff --git a/files/zh-cn/glossary/dns/index.md b/files/zh-cn/glossary/dns/index.md
index 9ec4382bdc949e..b97ed38476bed6 100644
--- a/files/zh-cn/glossary/dns/index.md
+++ b/files/zh-cn/glossary/dns/index.md
@@ -13,5 +13,5 @@ DNS 最突出的功能是将易于记忆的域名(例如 mozilla.org)翻译
## 参见
-- [理解域名](/zh-CN/docs/Learn/Common_questions/What_is_a_domain_name)
+- [理解域名](/zh-CN/docs/Learn/Common_questions/Web_mechanics/What_is_a_domain_name)
- 维基百科上的[域名系统](https://zh.wikipedia.org/wiki/域名系统)
diff --git a/files/zh-cn/glossary/endianness/index.md b/files/zh-cn/glossary/endianness/index.md
index 1c9180c1ab7546..671d22c2e125bf 100644
--- a/files/zh-cn/glossary/endianness/index.md
+++ b/files/zh-cn/glossary/endianness/index.md
@@ -19,12 +19,12 @@ l10n:
- _大端序_:`0x12 0x34 0x56 0x78`
- _混合序_(曾经的做法,非常罕见):`0x34 0x12 0x78 0x56`
-类型化数组指南提供了[将任何数字转换为给定字节序的二进制表示](/zh-CN/docs/Web/JavaScript/Typed_arrays#视图)的一个示例。
+类型化数组指南提供了[将任何数字转换为给定字节序的二进制表示](/zh-CN/docs/Web/JavaScript/Guide/Typed_arrays#视图)的一个示例。
## 参见
- {{jsxref("ArrayBuffer")}}
- {{jsxref("DataView")}}
-- [类型化数组](/zh-CN/docs/Web/JavaScript/Typed_arrays)
+- [类型化数组](/zh-CN/docs/Web/JavaScript/Guide/Typed_arrays)
- 维基百科上的[字节序](https://zh.wikipedia.org/wiki/字节序)
- {{Glossary("Data structure", "数据结构")}}
diff --git a/files/zh-cn/glossary/internet/index.md b/files/zh-cn/glossary/internet/index.md
index 8bc10ec3ca7a59..33d1dd41471bc2 100644
--- a/files/zh-cn/glossary/internet/index.md
+++ b/files/zh-cn/glossary/internet/index.md
@@ -11,4 +11,4 @@ l10n:
## 参见
-- [互联网是如何工作的](/zh-CN/docs/Learn/Common_questions/How_does_the_Internet_work)(给初学者的介绍)
+- [互联网是如何工作的](/zh-CN/docs/Learn/Common_questions/Web_mechanics/How_does_the_Internet_work)(给初学者的介绍)
diff --git a/files/zh-cn/glossary/isp/index.md b/files/zh-cn/glossary/isp/index.md
index 9093dc26573908..dffc65d0719029 100644
--- a/files/zh-cn/glossary/isp/index.md
+++ b/files/zh-cn/glossary/isp/index.md
@@ -11,5 +11,5 @@ l10n:
## 参见
-- [互联网是如何工作的](/zh-CN/docs/Learn/Common_questions/How_does_the_Internet_work)(给初学者的说明)
+- [互联网是如何工作的](/zh-CN/docs/Learn/Common_questions/Web_mechanics/How_does_the_Internet_work)(给初学者的说明)
- 维基百科上的[互联网服务提供者](https://zh.wikipedia.org/wiki/互联网服务供应商)
diff --git a/files/zh-cn/glossary/javascript/index.md b/files/zh-cn/glossary/javascript/index.md
index 375c8a059574aa..fe7bcd14bb7aec 100644
--- a/files/zh-cn/glossary/javascript/index.md
+++ b/files/zh-cn/glossary/javascript/index.md
@@ -28,5 +28,5 @@ Brendan Eich(彼时受雇于 Netscape)为服务器端构想的语言——Ja
- [NodeSchool 的“javascripting”工坊](https://nodeschool.io/#workshoppers)
- [codecademy.com 的 JavaScript 课程](https://www.codecademy.com/catalog/language/javascript)
- [最新的 ECMAScript 标准](https://www.ecma-international.org/publications-and-standards/standards/ecma-262/)
-- MDN 的 [JavaScript 参考](/zh-CN/docs/Web/JavaScript/reference)
+- MDN 的 [JavaScript 参考](/zh-CN/docs/Web/JavaScript/Reference)
- [_Eloquent JavaScript_](https://eloquentjavascript.net/) 一书
diff --git a/files/zh-cn/glossary/server/index.md b/files/zh-cn/glossary/server/index.md
index f4bbc84e11bd0d..f9180ec3ce2949 100644
--- a/files/zh-cn/glossary/server/index.md
+++ b/files/zh-cn/glossary/server/index.md
@@ -19,5 +19,5 @@ l10n:
## 参见
-- [服务器介绍](/zh-CN/docs/Learn/Common_questions/What_is_a_web_server)
+- [服务器介绍](/zh-CN/docs/Learn/Common_questions/Web_mechanics/What_is_a_web_server)
- 维基百科上的[服务器](https://zh.wikipedia.org/wiki/服务器)
diff --git a/files/zh-cn/glossary/site/index.md b/files/zh-cn/glossary/site/index.md
index 1dc174a4aaaf0d..576cf695c698c1 100644
--- a/files/zh-cn/glossary/site/index.md
+++ b/files/zh-cn/glossary/site/index.md
@@ -41,6 +41,6 @@ l10n:
## 参见
-- [URL 是什么](/zh-CN/docs/Learn/Common_questions/What_is_a_URL)
+- [URL 是什么](/zh-CN/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL)
- {{Glossary("Origin", "来源")}}
- [同源策略](/zh-CN/docs/Web/Security/Same-origin_policy)
diff --git a/files/zh-cn/glossary/time_to_first_byte/index.md b/files/zh-cn/glossary/time_to_first_byte/index.md
index fa5f072569c9ea..73ab30ab25dff7 100644
--- a/files/zh-cn/glossary/time_to_first_byte/index.md
+++ b/files/zh-cn/glossary/time_to_first_byte/index.md
@@ -7,7 +7,7 @@ l10n:
{{GlossarySidebar}}
-**第一字节时间**(TTFB)是指从浏览器请求页面到接收来自服务器发送的信息的第一个字节的时间。这包括 DNS 查询和使用 [TCP](/zh-CN/docs/Glossary/TCP) 握手建立连接的时间。如果请求是通过 [HTTPS](/zh-CN/docs/Glossary/https) 发出的,则还包括 [TLS](/zh-CN/docs/Glossary/SSL) 握手建立连接的时间。
+**第一字节时间**(TTFB)是指从浏览器请求页面到接收来自服务器发送的信息的第一个字节的时间。这包括 DNS 查询和使用 [TCP](/zh-CN/docs/Glossary/TCP) 握手建立连接的时间。如果请求是通过 [HTTPS](/zh-CN/docs/Glossary/HTTPS) 发出的,则还包括 [TLS](/zh-CN/docs/Glossary/SSL) 握手建立连接的时间。
TTFB 是从请求开始到响应开始之间所用的时间,以毫秒为单位:
diff --git a/files/zh-cn/glossary/type_coercion/index.md b/files/zh-cn/glossary/type_coercion/index.md
index c3b0ddb0773870..52e7886b2d6ca4 100644
--- a/files/zh-cn/glossary/type_coercion/index.md
+++ b/files/zh-cn/glossary/type_coercion/index.md
@@ -7,7 +7,7 @@ l10n:
{{GlossarySidebar}}
-强制类型转换是将值从一种数据类型自动或隐式地转换为另一种数据类型(例如字符串转换为数字)。[_类型转换_](/zh-CN/docs/Glossary/Type_conversion)类似于*强制类型转换*,因为它们都将值从一种数据类型转换为另一种数据类型,只有一个关键的区别——*强制类型转换*是隐式的,而*类型转换*可以是隐式的,*也*可以是显式的。
+强制类型转换是将值从一种数据类型自动或隐式地转换为另一种数据类型(例如字符串转换为数字)。[_类型转换_](/zh-CN/docs/Glossary/Type_Conversion)类似于*强制类型转换*,因为它们都将值从一种数据类型转换为另一种数据类型,只有一个关键的区别——*强制类型转换*是隐式的,而*类型转换*可以是隐式的,*也*可以是显式的。
## 示例
diff --git a/files/zh-cn/glossary/viewport/index.md b/files/zh-cn/glossary/viewport/index.md
index 93d6e003a841d5..38ef3146840469 100644
--- a/files/zh-cn/glossary/viewport/index.md
+++ b/files/zh-cn/glossary/viewport/index.md
@@ -9,7 +9,7 @@ l10n:
在电脑图形学里面,视口代表了一个可看见的多边形区域(通常来说是矩形)。在浏览器范畴里,它代表的是浏览器中网站可见内容的部分。视口外的内容在被滚动进来前都是不可见的。
-视口当前可见的部分叫做[**可视视口**](/zh-CN/docs/Glossary/Visual_viewport)。可视视口可能会比[**布局视口**](/zh-CN/docs/Glossary/Layout_viewport)更小,因为当用户缩小浏览器缩放比例时,布局视口不变,而可视视口变小了。
+视口当前可见的部分叫做[**可视视口**](/zh-CN/docs/Glossary/Visual_Viewport)。可视视口可能会比[**布局视口**](/zh-CN/docs/Glossary/Layout_viewport)更小,因为当用户缩小浏览器缩放比例时,布局视口不变,而可视视口变小了。
## 参见
diff --git a/files/zh-cn/learn/accessibility/css_and_javascript/index.md b/files/zh-cn/learn/accessibility/css_and_javascript/index.md
index d6340c0df30316..4203246b551cb4 100644
--- a/files/zh-cn/learn/accessibility/css_and_javascript/index.md
+++ b/files/zh-cn/learn/accessibility/css_and_javascript/index.md
@@ -170,7 +170,7 @@ a:active {
```
-你可以在我们的 [form-css.html](https://github.com/mdn/learning-area/blob/main/accessibility/css/form-css.html) 示例中看到一些很好的示例 CSS([查看示例](http://mdn.github.io/learning-area/accessibility/css/form-css.html))。
+你可以在我们的 [form-css.html](https://github.com/mdn/learning-area/blob/main/accessibility/css/form-css.html) 示例中看到一些很好的示例 CSS([查看示例](https://mdn.github.io/learning-area/accessibility/css/form-css.html))。
你将为表单编写的大多数 CSS 将用于调整元素大小、排列标签和输入,以及让它们看起来整洁。
@@ -180,7 +180,7 @@ a:active {
用于显示表格数据的表。
-你可以在 [table-css.html](https://github.com/mdn/learning-area/blob/main/accessibility/css/table-css.html) 示例中看到表 HTML 和 CSS 的一个很好的简单示例([查看示例](http://mdn.github.io/learning-area/accessibility/css/table-css.html))。
+你可以在 [table-css.html](https://github.com/mdn/learning-area/blob/main/accessibility/css/table-css.html) 示例中看到表 HTML 和 CSS 的一个很好的简单示例([查看示例](https://mdn.github.io/learning-area/accessibility/css/table-css.html))。
表的 CSS 通常使表更适合你的设计,看起来不那么难看。最好确保表标题醒目(通常使用粗体),并使用斑马条带化使不同的行更易于解析。
@@ -197,7 +197,7 @@ a:active {
### 隐藏的东西
-在很多情况下,可视化设计需要并非同时显示所有内容。例如,在我们的 [Tabbed info box 示例](http://mdn.github.io/learning-area/css/css-layout/practical-positioning-examples/info-box.html)(参见[源码](https://github.com/mdn/learning-area/blob/main/css/css-layout/practical-positioning-examples/info-box.html)),我们有三个信息面板,但我们将它们放在彼此之上,并提供可以单击以显示每个选项卡的选项卡(也可以使用键盘——你也可以使用 Tab 和 Enter/Return 以选择它们)。
+在很多情况下,可视化设计需要并非同时显示所有内容。例如,在我们的 [Tabbed info box 示例](https://mdn.github.io/learning-area/css/css-layout/practical-positioning-examples/info-box.html)(参见[源码](https://github.com/mdn/learning-area/blob/main/css/css-layout/practical-positioning-examples/info-box.html)),我们有三个信息面板,但我们将它们放在彼此之上,并提供可以单击以显示每个选项卡的选项卡(也可以使用键盘——你也可以使用 Tab 和 Enter/Return 以选择它们)。
![](tabbed-info-box.png)
@@ -205,7 +205,7 @@ a:active {
另一方面,不应使用 {{cssxref("visibility")}}`:hidden` 或 {{cssxref("display")}}`:none`,因为它们会隐藏屏幕阅读器中的内容。当然,除非你希望从屏幕阅读器中隐藏此内容,这是有充分理由的。
-> **备注:** [专为屏幕阅读器用户设计的不可见内容](http://webaim.org/techniques/css/invisiblecontent/)有围绕本主题的更多有用详细信息。
+> **备注:** [专为屏幕阅读器用户设计的不可见内容](https://webaim.org/techniques/css/invisiblecontent/)有围绕本主题的更多有用详细信息。
### 接受用户覆盖样式
@@ -248,7 +248,7 @@ JavaScript 还可能会中断无障碍,具体取决于其使用方式。
- 提供客户端表单验证,它快速提醒用户表单条目出现的问题,而无需等待服务器检查数据。如果表单不可用,则窗口仍然有效,但验证速度可能较慢。
- 为 HTML5 `` 提供自定义控件,这些控件仅供键盘用户访问,以及如果 JavaScript 不可用 (默认 `` 浏览器控件在大多数浏览器中无法使用键盘访问),就直接通过链接访问视频。
-例如,我们编写了一个快速而糟糕的客户端客户端表单验证示例——参见[form-validation.html](https://github.com/mdn/learning-area/blob/main/accessibility/css/form-validation.html)([查看在线演示](http://mdn.github.io/learning-area/accessibility/css/form-validation.html))。在示例中,你会看到一个简单的表格;当你尝试提交一个或两个字段为空的表单时,提交将失败,并且会出现一个错误消息框,告诉你出了什么问题。
+例如,我们编写了一个快速而糟糕的客户端客户端表单验证示例——参见[form-validation.html](https://github.com/mdn/learning-area/blob/main/accessibility/css/form-validation.html)([查看在线演示](https://mdn.github.io/learning-area/accessibility/css/form-validation.html))。在示例中,你会看到一个简单的表格;当你尝试提交一个或两个字段为空的表单时,提交将失败,并且会出现一个错误消息框,告诉你出了什么问题。
这种表单验证并不引人注目——在 JavaScript 不可用的情况下,你仍然可以很好的使用表单,并且任何合理的表单实现都将激活服务器端验证,因为恶意用户很容易绕过客户端验证(例如,通过在浏览器中关闭 JavaScript)。客户端验证对于报告错误仍然非常有用——用户可以立即了解他们所犯的错误,而不必等待到服务器的往返和页面重新加载。这是一个明确的可用性优势。
@@ -331,7 +331,7 @@ function createLink(testItem) {
> 一些人可能会考虑这样一个事实,即 HTML5 表单有内置的验证机制,如 `required`、`min`/`minlength` 和 `max`/`maxlength` 属性(详细信息,请参阅 {{htmlelement("input")}}元素引用)。我们最终没有在演示中使用这些功能,因为不是所有的浏览器都支持(例如,仅 IE10 及以上版本支持,Safari 不支持)。
> [!NOTE]
-> WebAIM 的[可用且无障碍的表单验证和错误恢复](http://webaim.org/techniques/formvalidation/)提供了一些有关无障碍表单验证的更多的有用信息。
+> WebAIM 的[可用且无障碍的表单验证和错误恢复](https://webaim.org/techniques/formvalidation/)提供了一些有关无障碍表单验证的更多的有用信息。
### 其他 JavaScript 无障碍问题
@@ -339,13 +339,13 @@ function createLink(testItem) {
#### 鼠标特定事件
-正如你所知,客户端 JavaScript 使用事件处理程序,实现大多数用户交互,它允许我们运行函数以响应某些事件的发生。某些事件可能有辅助功能问题。你将遇到的主要示例是鼠标特定的事件,如鼠标悬停([mouseover](/zh-CN/docs/Web/Events/mouseover))、鼠标划出([mouseout](/zh-CN/docs/Web/Events/mouseout))、双击([dblclick](/zh-CN/docs/Web/Events/dblclick))等。使用其他机制(如键盘控件)无法访问为这些事件而运行的功能。
+正如你所知,客户端 JavaScript 使用事件处理程序,实现大多数用户交互,它允许我们运行函数以响应某些事件的发生。某些事件可能有辅助功能问题。你将遇到的主要示例是鼠标特定的事件,如鼠标悬停([mouseover](/zh-CN/docs/Web/API/Element/mouseover_event))、鼠标划出([mouseout](/zh-CN/docs/Web/API/Element/mouseout_event))、双击([dblclick](/zh-CN/docs/Web/API/Element/dblclick_event))等。使用其他机制(如键盘控件)无法访问为这些事件而运行的功能。
-为了缓解此类问题,你应该将这些事件与可以通过其他方式(所谓的设备独立事件处理程序)激活的类似事件相结合——[focus](/zh-CN/docs/Web/Events/focus) 和 [blur](/zh-CN/docs/Web/Events/blur) 将为键盘用户提供无障碍。
+为了缓解此类问题,你应该将这些事件与可以通过其他方式(所谓的设备独立事件处理程序)激活的类似事件相结合——[focus](/zh-CN/docs/Web/API/Element/focus_event) 和 [blur](/zh-CN/docs/Web/API/Element/blur_event) 将为键盘用户提供无障碍。
让我们看一个示例:突出显示了何时可能有用。我们想要实现一个缩略图:当鼠标悬停或聚焦在图像上,可以放大图像(正如电子商务产品目录所展示的)。
-我们做了一个非常简单的示例,你可以在 [mouse-and-keyboard-events.html](http://mdn.github.io/learning-area/accessibility/css/mouse-and-keyboard-events.html) 中找到(参见[源码](https://github.com/mdn/learning-area/blob/main/accessibility/css/mouse-and-keyboard-events.html))。该代码具有显示和隐藏放大图像的两个函数。它由以下几行行实现,这些行将它们设置为事件处理程序:
+我们做了一个非常简单的示例,你可以在 [mouse-and-keyboard-events.html](https://mdn.github.io/learning-area/accessibility/css/mouse-and-keyboard-events.html) 中找到(参见[源码](https://github.com/mdn/learning-area/blob/main/accessibility/css/mouse-and-keyboard-events.html))。该代码具有显示和隐藏放大图像的两个函数。它由以下几行行实现,这些行将它们设置为事件处理程序:
```js
imgThumb.onmouseover = showImg;
@@ -357,7 +357,7 @@ imgThumb.onblur = hideImg;
当鼠标指针在缩略图上悬停或者移开,将分别调用前两行代码。此时不允许我们通过键盘访问缩略图——为了允许这一点,我们调用后两行代码,它们在图像聚焦和失焦时 (聚焦停止) 运行函数。这可以在图像加 tab 键实现,因为我们为图像的属性设置 `tabindex="0"`。
-[Click](/zh-CN/docs/Web/Events/click) 事件很有趣——听起来它依赖于鼠标,但是大多数的浏览器,在有焦点的链接或者表单元素上,按下 enter/return 之后,或者在触屏设备上点击一个元素,都将会激活 [onclick](/zh-CN/docs/Web/API/GlobalEventHandlers/onclick) 事件处理程序。但是,当你允许非默认可聚焦事件使用 tabindex 进行焦点处理时,默认情况下不起作用,在这种情况下,你需要在按下确切键时进行专门检测(参见[重新建立键盘的无障碍](/zh-CN/docs/Learn/Accessibility/HTML#重新建立键盘的无障碍))。
+[Click](/zh-CN/docs/Web/API/Element/click_event) 事件很有趣——听起来它依赖于鼠标,但是大多数的浏览器,在有焦点的链接或者表单元素上,按下 enter/return 之后,或者在触屏设备上点击一个元素,都将会激活 [onclick](/zh-CN/docs/Web/API/Element/click_event) 事件处理程序。但是,当你允许非默认可聚焦事件使用 tabindex 进行焦点处理时,默认情况下不起作用,在这种情况下,你需要在按下确切键时进行专门检测(参见[重新建立键盘的无障碍](/zh-CN/docs/Learn/Accessibility/HTML#重新建立键盘的无障碍))。
## 总结
diff --git a/files/zh-cn/learn/accessibility/html/index.md b/files/zh-cn/learn/accessibility/html/index.md
index 0a027d101c9f83..0cacc825bb2ccf 100644
--- a/files/zh-cn/learn/accessibility/html/index.md
+++ b/files/zh-cn/learn/accessibility/html/index.md
@@ -53,7 +53,7 @@ slug: Learn/Accessibility/HTML
让我们来继续学习 HTML 语义化实现细则。
> [!NOTE]
-> 在本地计算机上设置屏幕阅读器是一个不错的主意,因此你可以对下面显示的示例进行一些测试。更多内容请查阅 [Screenreaders guide](/zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/Accessibility#Screenreaders)。
+> 在本地计算机上设置屏幕阅读器是一个不错的主意,因此你可以对下面显示的示例进行一些测试。更多内容请查阅 [Screenreaders guide](/zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/Accessibility#screenreaders)。
## 良好的语义
@@ -97,7 +97,7 @@ slug: Learn/Accessibility/HTML
```
-我们已经准备了一个更长的文本版本,供你试用于屏幕阅读器(请查看 [good-semantics.html](http://mdn.github.io/learning-area/accessibility/html/good-semantics.html))。如果你尝试在此过程中导航,你将看到这非常容易导航:
+我们已经准备了一个更长的文本版本,供你试用于屏幕阅读器(请查看 [good-semantics.html](https://mdn.github.io/learning-area/accessibility/html/good-semantics.html))。如果你尝试在此过程中导航,你将看到这非常容易导航:
1. 屏幕阅读器会在你浏览内容时读取每个标题,通知你标题是什么,段落是什么等。
2. 它在每个元素之后停止,让你以任何适合你的速度前进。
@@ -129,7 +129,7 @@ This is the second subsection of my content. I think is more interesting than
the last one.
```
-如果你使用屏幕阅读器试用更长内容的版本(请查阅 [bad-semantics.html](http://mdn.github.io/learning-area/accessibility/html/bad-semantics.html)),你不会有一个很好的经验 — 屏幕阅读器没有任何东西可以用作路标,所以你无法检索有用的目录,整个页面被看作一个巨大的块,所以它只是一次读出所有的内容。
+如果你使用屏幕阅读器试用更长内容的版本(请查阅 [bad-semantics.html](https://mdn.github.io/learning-area/accessibility/html/bad-semantics.html)),你不会有一个很好的经验 — 屏幕阅读器没有任何东西可以用作路标,所以你无法检索有用的目录,整个页面被看作一个巨大的块,所以它只是一次读出所有的内容。
除了无障碍之外,还有其他一些问题 - 使用 CSS 设计内容的风格更难,或者使用 JavaScript 来操作它比较困难,因为没有可用作选择器的元素。
@@ -145,7 +145,7 @@ the last one.
在旧时代,人们曾经使用 HTML 表格创建页面布局 - 使用不同的表格单元格来包含页眉,页脚,边栏,主要内容栏等。这不是一个好主意,因为屏幕阅读器可能会读出给人造成困惑的结果,特别是如果布局复杂,并且有许多嵌套表格的话。
-试试我们的例子[table-layout.html](http://mdn.github.io/learning-area/accessibility/html/table-layout.html),它看起来像这样:
+试试我们的例子[table-layout.html](https://mdn.github.io/learning-area/accessibility/html/table-layout.html),它看起来像这样:
```html
@@ -210,7 +210,7 @@ the last one.
用表格布局网页是过去旧时代的遗迹 - 在“CSS”在浏览器中并不普遍被支持时,它们是有意义的,但是它们会为屏幕阅读器用户造成混淆,并且由于许多其他原因变得很糟糕(滥用表格,可能因此需要更多的标记,使设计更不灵活)。不要这样做!
-你可以通过将你之前的体验与 [更现代的网站结构示例](http://mdn.github.io/learning-area/html/introduction-to-html/document_and_website_structure/) 进行比较,来验证这些声明,该示例如下所示:
+你可以通过将你之前的体验与 [更现代的网站结构示例](https://mdn.github.io/learning-area/html/introduction-to-html/document_and_website_structure/) 进行比较,来验证这些声明,该示例如下所示:
```html
```
-但是这有问题 - 屏幕阅读器用户无法将行或列作为数据分组关联在一起。要做到这一点,你需要知道标题行是什么,以及它们是否在行,列等标题上。这只能在上面的表中以可视化方式完成(参见 [bad-table.html](http://mdn.github.io/learning-area/accessibility/html/bad-table.html) ,并自己尝试这个例子)。
+但是这有问题 - 屏幕阅读器用户无法将行或列作为数据分组关联在一起。要做到这一点,你需要知道标题行是什么,以及它们是否在行,列等标题上。这只能在上面的表中以可视化方式完成(参见 [bad-table.html](https://mdn.github.io/learning-area/accessibility/html/bad-table.html) ,并自己尝试这个例子)。
现在看看我们的 [punk bands table example](https://github.com/mdn/learning-area/blob/main/css/styling-boxes/styling-tables/punk-bands-complete.html) - 你可以在这里看到一些辅助工具(accessibility aids):
@@ -454,7 +454,7 @@ Fill in your name:
尽管文本内容本身是可访问的,但对于多媒体内容而言也不一定是这样 - 图像/视频内容不能被视觉障碍人士看到,并且听觉障碍人士不能听到音频内容。稍后我们将在可访问多媒体文章中详细介绍视频和音频内容,但对于本文,我们将探讨低微(humble)的 `{{htmlelement("img")}}` 元素的无障碍。
-我们编写了一个简单的例子, [accessible-image.html](http://mdn.github.io/learning-area/accessibility/html/accessible-image.html) ,它具有相同图像的四个副本:
+我们编写了一个简单的例子, [accessible-image.html](https://mdn.github.io/learning-area/accessibility/html/accessible-image.html) ,它具有相同图像的四个副本:
```html
diff --git a/files/zh-cn/learn/accessibility/multimedia/index.md b/files/zh-cn/learn/accessibility/multimedia/index.md
index 2d6b04b9518565..b4afb507f22835 100644
--- a/files/zh-cn/learn/accessibility/multimedia/index.md
+++ b/files/zh-cn/learn/accessibility/multimedia/index.md
@@ -52,7 +52,7 @@ slug: Learn/Accessibility/Multimedia
### 本地 HTML5 控件的问题
-HTML5 视频和音频实例甚至附带一组内置控件,允许你直接在盒子控制媒体。例如 (请参阅[本地控件.html](om/mdn/learning-area/blob/master/accessibility/multimedia/native-controls.html) 源代码和[实时演示](http://mdn.github.io/learning-area/accessibility/multimedia/native-controls.html)):
+HTML5 视频和音频实例甚至附带一组内置控件,允许你直接在盒子控制媒体。例如 (请参阅[本地控件.html](om/mdn/learning-area/blob/master/accessibility/multimedia/native-controls.html) 源代码和[实时演示](https://mdn.github.io/learning-area/accessibility/multimedia/native-controls.html)):
```html
@@ -223,11 +223,11 @@ player.ontimeupdate = () => {
这为你提供了如何向视频/音频播放器实例添加自定义播放器功能的基本想法。有关如何向视频/音频播放器添加更复杂的功能(包括旧版浏览器的 Flash 回退)的详细信息,请参阅:
-- [Audio and video delivery](/zh-CN/docs/Web/Apps/Fundamentals/Audio_and_video_delivery)
-- [Video player styling basics](/zh-CN/docs/Web/Apps/Fundamentals/Audio_and_video_delivery/Video_player_styling_basics)
-- [Creating a cross-browser video player](/zh-CN/docs/Web/Apps/Fundamentals/Audio_and_video_delivery/cross_browser_video_player)
+- [Audio and video delivery](/zh-CN/docs/Web/Media/Audio_and_video_delivery)
+- [Video player styling basics](/zh-CN/docs/Web/Media/Audio_and_video_delivery/Video_player_styling_basics)
+- [Creating a cross-browser video player](/zh-CN/docs/Web/Media/Audio_and_video_delivery/cross_browser_video_player)
-我们还创建了一个高级示例,以演示如何创建面向对象的系统,该系统可查找页面上的每个视频和音频播放器 (无论有多少个视频和音频播放器),并将自定义控件添加到其中。请参阅 [custom-controls-oojs](http://mdn.github.io/learning-area/accessibility/multimedia/custom-controls-OOJS/)([查看其源码](https://github.com/mdn/learning-area/tree/main/accessibility/multimedia/custom-controls-OOJS))。
+我们还创建了一个高级示例,以演示如何创建面向对象的系统,该系统可查找页面上的每个视频和音频播放器 (无论有多少个视频和音频播放器),并将自定义控件添加到其中。请参阅 [custom-controls-oojs](https://mdn.github.io/learning-area/accessibility/multimedia/custom-controls-OOJS/)([查看其源码](https://github.com/mdn/learning-area/tree/main/accessibility/multimedia/custom-controls-OOJS))。
## 音频脚本
@@ -247,7 +247,7 @@ player.ontimeupdate = () => {
如果使用自动服务,则可能需要使用该工具提供的用户界面。例如,查看[Audio Transcription Sample 1](https://www.youtube.com/watch?v=zFFBsj97Od8)并选择" _More > Transcript_"。
-如果要创建自己的用户界面来显示音频和相关脚本,你可以随心所欲地执行此操作,但将其包含在可显示/可隐藏面板中可能有意义;请参阅我们的[audio-transcript-ui](http://mdn.github.io/learning-area/accessibility/multimedia/audio-transcript-ui/) 示例(另请参阅[其源码](https://github.com/mdn/learning-area/tree/main/accessibility/multimedia/audio-transcript-ui))。
+如果要创建自己的用户界面来显示音频和相关脚本,你可以随心所欲地执行此操作,但将其包含在可显示/可隐藏面板中可能有意义;请参阅我们的[audio-transcript-ui](https://mdn.github.io/learning-area/accessibility/multimedia/audio-transcript-ui/) 示例(另请参阅[其源码](https://github.com/mdn/learning-area/tree/main/accessibility/multimedia/audio-transcript-ui))。
### 音频描述
@@ -321,7 +321,7 @@ This is the second.
![Video player with standard controls such as play, stop, volume, and captions on and off. The video playing shows a scene of a man holding a spear-like weapon, and a caption reads "Esta hoja tiene pasado oscuro."](video-player-with-captions.png)
-有关详细信息,请阅读[Adding captions and subtitles to HTML5 video](/zh-CN/docs/Web/Apps/Fundamentals/Audio_and_video_delivery/Adding_captions_and_subtitles_to_HTML5_video)。你可以找到与本文一起使用本文的[the example](http://iandevlin.github.io/mdn/video-player-with-captions/),本文由 Ian Devlin 编写 (请参阅[source code](https://github.com/iandevlin/iandevlin.github.io/tree/master/mdn/video-player-with-captions))。此示例使用一些 JavaScript 允许用户在不同的字幕之间进行选择。请注意,要打开字幕,你需要按"CC"按钮并选择一个选项 - 英语、德语或西班牙语。
+有关详细信息,请阅读[Adding captions and subtitles to HTML5 video](/zh-CN/docs/Web/Media/Audio_and_video_delivery/Adding_captions_and_subtitles_to_HTML5_video)。你可以找到与本文一起使用本文的[the example](http://iandevlin.github.io/mdn/video-player-with-captions/),本文由 Ian Devlin 编写 (请参阅[source code](https://github.com/iandevlin/iandevlin.github.io/tree/master/mdn/video-player-with-captions))。此示例使用一些 JavaScript 允许用户在不同的字幕之间进行选择。请注意,要打开字幕,你需要按"CC"按钮并选择一个选项 - 英语、德语或西班牙语。
> [!NOTE]
> 文本轨道和转录也可以帮助你使用{{glossary("SEO")}},因为搜索引擎在文本上尤其繁荣。文本轨道甚至允许搜索引擎通过视频直接链接到一个点部分。
@@ -337,7 +337,7 @@ This is the second.
对于此类内容,你需要根据案例处理辅助功能问题。在某些情况下,它不是那么糟糕,例如:
- 如果你使用 Flash 或 Silverlight 等插件技术嵌入音频内容,你可能只需以与上面在[脚本示例](#脚本示例)部分中所示的相同方式提供音频脚本。
-- 如果你使用 Flash 或 Silverlight 等插件技术嵌入视频内容,则可以利用这些技术可用的字幕/字幕技术。例如,参考 [Flash captions](http://www.adobe.com/accessibility/products/flash/captions.html)、[Using the Flash-Only Player API for Closed Captioning](https://support.brightcove.com/en/video-cloud/docs/using-flash-only-player-api-closed-captioning) 或 [Playing Subtitles with Videos in Silverlight](https://blogs.msdn.microsoft.com/anilkumargupta/2009/05/01/playing-subtitles-with-videos-in-silverlight/).
+- 如果你使用 Flash 或 Silverlight 等插件技术嵌入视频内容,则可以利用这些技术可用的字幕/字幕技术。例如,参考 [Flash captions](https://www.adobe.com/accessibility/products/flash/captions.html)、[Using the Flash-Only Player API for Closed Captioning](https://support.brightcove.com/en/video-cloud/docs/using-flash-only-player-api-closed-captioning) 或 [Playing Subtitles with Videos in Silverlight](https://blogs.msdn.microsoft.com/anilkumargupta/2009/05/01/playing-subtitles-with-videos-in-silverlight/).
然而,其他多媒体不是那么容易使访问。例如,如果你正在处理沉浸式 3D 游戏或虚拟现实应用,那么为此类体验提供文本替代方案确实非常困难,你可能会认为盲人用户实际上并不在此类应用的目标受众范围内。
diff --git a/files/zh-cn/learn/accessibility/wai-aria_basics/index.md b/files/zh-cn/learn/accessibility/wai-aria_basics/index.md
index 3aeb247028a917..28055680547967 100644
--- a/files/zh-cn/learn/accessibility/wai-aria_basics/index.md
+++ b/files/zh-cn/learn/accessibility/wai-aria_basics/index.md
@@ -113,11 +113,11 @@ slug: Learn/Accessibility/WAI-ARIA_basics
在下一节中,我们将更详细地研究这四个方,并提供一些实例。继续之前你最好安装一个屏幕阅读器,以便你测试接下来的用例。(接下来的屏幕阅读器默认为 Mac 的 VoiceOver,Windows 用户可以尝试 JAWS 或者 Window Eyes)
-查看我们的 [testing screenreaders](/zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/Accessibility#Screenreaders) 得到更多关于屏幕阅读器的信息。
+查看我们的 [testing screenreaders](/zh-CN/docs/Learn/Tools_and_testing/Cross_browser_testing/Accessibility#screenreaders) 得到更多关于屏幕阅读器的信息。
### 路牌/地标(**Signposts/Landmarks**)
-WAI-ARIA 给浏览器增加了 [`role`](https://www.w3.org/TR/wai-aria-1.1/#role_definitions) 属性,这允许我们给站点中的元素增加我们想要的语义属性。第一个主要区域便是用于为屏幕阅读器提供信息,以便用户可以找到常见的页面元素。我们来举个例子,一个[没有角色的站点](https://github.com/mdn/learning-area/tree/main/accessibility/aria/website-no-roles)的例子([在线演示](http://mdn.github.io/learning-area/accessibility/aria/website-no-roles/))的页面结构:
+WAI-ARIA 给浏览器增加了 [`role`](https://www.w3.org/TR/wai-aria-1.1/#role_definitions) 属性,这允许我们给站点中的元素增加我们想要的语义属性。第一个主要区域便是用于为屏幕阅读器提供信息,以便用户可以找到常见的页面元素。我们来举个例子,一个[没有角色的站点](https://github.com/mdn/learning-area/tree/main/accessibility/aria/website-no-roles)的例子([在线演示](https://mdn.github.io/learning-area/accessibility/aria/website-no-roles/))的页面结构:
```html