From 2abc17efc1e92c3de927de5e02c0cadf7a6aec9f Mon Sep 17 00:00:00 2001 From: Dipika Bhattacharya Date: Fri, 21 Jun 2024 16:54:45 -0400 Subject: [PATCH] Revert "Completely remove Web/Guide and Web/Tutorials (#34266)" This reverts commit 9a28cb2c6452619a147e8ae03b16e234ed87573b. --- .github/issue-regex-labeler.yml | 2 + .github/labeler.yml | 4 + files/en-us/_redirects.txt | 10 +- files/en-us/_wikihistory.json | 190 ++++++++++ files/en-us/web/accessibility/index.md | 1 + .../web/{ => guide}/css/css_layout/index.md | 2 +- .../challenge_solutions/index.md | 352 ++++++++++++++++++ .../challenge_solutions/pin_placement.png | Bin 0 -> 9489 bytes files/en-us/web/guide/index.md | 70 ++++ files/en-us/web/index.md | 4 + .../web/svg/tutorial/svg_and_css/index.md | 6 + files/en-us/web/tutorials/index.md | 144 +++++++ 12 files changed, 778 insertions(+), 7 deletions(-) rename files/en-us/web/{ => guide}/css/css_layout/index.md (99%) create mode 100644 files/en-us/web/guide/css/getting_started/challenge_solutions/index.md create mode 100644 files/en-us/web/guide/css/getting_started/challenge_solutions/pin_placement.png create mode 100644 files/en-us/web/guide/index.md create mode 100644 files/en-us/web/tutorials/index.md diff --git a/.github/issue-regex-labeler.yml b/.github/issue-regex-labeler.yml index d317cab1c5b3f5f..35d31ebd9ac8088 100644 --- a/.github/issue-regex-labeler.yml +++ b/.github/issue-regex-labeler.yml @@ -10,6 +10,8 @@ Content:Games: - '\/docs\/Games' Content:Glossary: - '\/docs\/Glossary' +Content:Guide: + - '\/docs\/Web/Guide' Content:HTML: - '\/docs\/Web\/HTML' Content:HTTP: diff --git a/.github/labeler.yml b/.github/labeler.yml index e7152e720bb314d..0627f70b2cfc4f0 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -38,6 +38,10 @@ Content:Glossary: - changed-files: - any-glob-to-any-file: - files/en-us/glossary/** +Content:Guide: + - changed-files: + - any-glob-to-any-file: + - files/en-us/web/guide/** Content:HTML: - changed-files: - any-glob-to-any-file: diff --git a/files/en-us/_redirects.txt b/files/en-us/_redirects.txt index d42fab4b2e0e1f7..8aec61bf7ca7605 100644 --- a/files/en-us/_redirects.txt +++ b/files/en-us/_redirects.txt @@ -501,6 +501,7 @@ /en-US/docs/CSS/Getting_Started /en-US/docs/Learn/CSS/First_steps /en-US/docs/CSS/Getting_Started/Boxes /en-US/docs/Learn/CSS/Building_blocks /en-US/docs/CSS/Getting_Started/Cascading_and_inheritance /en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance +/en-US/docs/CSS/Getting_Started/Challenge_solutions /en-US/docs/Web/Guide/CSS/Getting_started/Challenge_solutions /en-US/docs/CSS/Getting_Started/Content /en-US/docs/Learn/CSS/Howto/Generated_content /en-US/docs/CSS/Getting_Started/How_CSS_works /en-US/docs/Learn/CSS/First_steps/How_CSS_works /en-US/docs/CSS/Getting_Started/JavaScript /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents @@ -12003,7 +12004,6 @@ /en-US/docs/Web/Events/webkitmouseforceup /en-US/docs/Web/API/Element/webkitmouseforceup_event /en-US/docs/Web/Events/webkitmouseforcewillbegin /en-US/docs/Web/API/Element/webkitmouseforcewillbegin_event /en-US/docs/Web/Events/wheel /en-US/docs/Web/API/Element/wheel_event -/en-US/docs/Web/Guide /en-US/docs/Web /en-US/docs/Web/Guide/AJAX /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data /en-US/docs/Web/Guide/AJAX/Community /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data /en-US/docs/Web/Guide/AJAX/Getting_Started /en-US/docs/Learn/JavaScript/Client-side_web_APIs/Fetching_data @@ -12052,7 +12052,6 @@ /en-US/docs/Web/Guide/CSS /en-US/docs/Learn/CSS /en-US/docs/Web/Guide/CSS/Block_formatting_context /en-US/docs/Web/CSS/CSS_display/Block_formatting_context /en-US/docs/Web/Guide/CSS/CSS_Image_Sprites /en-US/docs/Web/CSS/CSS_images/Implementing_image_sprites_in_CSS -/en-US/docs/Web/Guide/CSS/CSS_Layout /en-US/docs/Web/CSS/CSS_Layout /en-US/docs/Web/Guide/CSS/Consistent_list_indentation /en-US/docs/Web/CSS/CSS_lists/Consistent_list_indentation /en-US/docs/Web/Guide/CSS/Counters /en-US/docs/Web/CSS/CSS_counter_styles/Using_CSS_counters /en-US/docs/Web/Guide/CSS/Flexible_boxes /en-US/docs/Web/CSS/CSS_flexible_box_layout/Basic_concepts_of_flexbox @@ -12183,7 +12182,7 @@ /en-US/docs/Web/Guide/HTML/Using_data_attributes /en-US/docs/Learn/HTML/Howto/Use_data_attributes /en-US/docs/Web/Guide/HTML/XHTML /en-US/docs/Glossary/XHTML /en-US/docs/Web/Guide/Houdini /en-US/docs/Web/API/Houdini_APIs -/en-US/docs/Web/Guide/Index /en-US/docs/Web +/en-US/docs/Web/Guide/Index /en-US/docs/Web/Guide /en-US/docs/Web/Guide/Introduction_to_Web_development /en-US/docs/Learn /en-US/docs/Web/Guide/Mobile /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design /en-US/docs/Web/Guide/Mobile/A_hybrid_approach /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design @@ -12197,7 +12196,7 @@ /en-US/docs/Web/Guide/Printing /en-US/docs/Web/CSS/CSS_media_queries/Printing /en-US/docs/Web/Guide/Responsive_design /en-US/docs/Web/Progressive_web_apps /en-US/docs/Web/Guide/Responsive_design/Responsive_design_references /en-US/docs/Web/Progressive_web_apps -/en-US/docs/Web/Guide/SVG-in-OpenType /en-US/docs/Web +/en-US/docs/Web/Guide/SVG-in-OpenType /en-US/docs/Web/Guide /en-US/docs/Web/Guide/Terminology /en-US/docs/Glossary /en-US/docs/Web/Guide/Touch_events /en-US/docs/Web/API/Touch_events /en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API /en-US/docs/Web/API/Page_Visibility_API @@ -13028,7 +13027,6 @@ /en-US/docs/Web/Security/Mixed_content/How_to_fix_website_with_mixed_content /en-US/docs/Web/Security/Mixed_content#developer_console /en-US/docs/Web/Security/Public_Key_Pinning /en-US/docs/Web/Security/Certificate_Transparency /en-US/docs/Web/Security/Securing_your_site/Configuring_server_MIME_types /en-US/docs/Learn/Server-side/Configuring_server_MIME_types -/en-US/docs/Web/Tutorials /en-US/docs/Learn /en-US/docs/Web/WebGL /en-US/docs/Web/API/WebGL_API /en-US/docs/Web/WebGL/Adding_2D_content_to_a_WebGL_context /en-US/docs/Web/API/WebGL_API/Tutorial/Adding_2D_content_to_a_WebGL_context /en-US/docs/Web/WebGL/Animating_objects_with_WebGL /en-US/docs/Web/API/WebGL_API/Tutorial/Animating_objects_with_WebGL @@ -13217,7 +13215,7 @@ /en-US/docs/Web_Audio_API /en-US/docs/Web/API/Web_Audio_API /en-US/docs/Web_Audio_API/Porting_webkitAudioContext_code_to_standards_based_AudioContext /en-US/docs/Web/API/Web_Audio_API /en-US/docs/Web_Audio_API/Using_Web_Audio_API /en-US/docs/Web/API/Web_Audio_API/Using_Web_Audio_API -/en-US/docs/Web_Development /en-US/docs/Web +/en-US/docs/Web_Development /en-US/docs/Web/Guide /en-US/docs/Web_Development/HTTP_cookies /en-US/docs/Web/HTTP/Cookies /en-US/docs/Web_Development/Introduction_to_Web_development /en-US/docs/Learn /en-US/docs/Web_Development/Mobile /en-US/docs/Learn/CSS/CSS_layout/Responsive_Design diff --git a/files/en-us/_wikihistory.json b/files/en-us/_wikihistory.json index 3c47b4f68166731..270c6dadf7f32a0 100644 --- a/files/en-us/_wikihistory.json +++ b/files/en-us/_wikihistory.json @@ -91754,6 +91754,114 @@ "Bzbarsky" ] }, + "Web/Guide": { + "modified": "2020-12-10T17:35:22.294Z", + "contributors": [ + "chrisdavidmills", + "drjasmin667", + "jsx", + "Mojtaba-79", + "mfuji09", + "kammasreenew", + "roshan0708", + "toomt1414", + "Sheppy", + "jswisher", + "oyenirat", + "AdrianSkar", + "SphinxKnight", + "digimon1740", + "buoyantair", + "MrPj2u", + "wish1994", + "teoli", + "pgbowers", + "rukja", + "umacrawl", + "Tantek", + "qazwsx", + "Tigt", + "robfoster", + "wyrewolwerowany", + "AdamC", + "SpencerG", + "apoorva", + "keyitem", + "mahesh.syscraft", + "uleming", + "Onsteroids", + "yash_bedi", + "www_test", + "nicci.izzy", + "ethertank" + ] + }, + "Web/Guide/CSS/Getting_started/Challenge_solutions": { + "modified": "2019-08-29T20:48:33.765Z", + "contributors": [ + "Sebastianz", + "strael1", + "teoli", + "Jeremie", + "Sheppy", + "illourr", + "jswisher" + ] + }, + "Web/Guide/Parsing_and_serializing_XML": { + "modified": "2020-09-09T05:19:22.895Z", + "contributors": [ + "lionel-rowe", + "tjallingt", + "jabcreations", + "Sheppy", + "sideshowbarker", + "mikerissi", + "tonyfinn", + "Mkmelin", + "RomainLanz", + "rolfedh", + "southpolesteve", + "teoli", + "kscarfone", + "Tim_Morgan", + "gal007", + "ethertank", + "fusionchess", + "ziyunfei", + "Hsivonen", + "pincopalla", + "akorchev", + "kmaglione", + "Reno Greenleaf", + "lgreco", + "Brettz9", + "Kirschkern", + "ericjung", + "Mgjbot", + "Nickolay", + "IsNull", + "FST777", + "Nightstrike" + ] + }, + "Web/Guide/Performance": { + "modified": "2019-03-23T23:30:00.833Z", + "contributors": ["estelle", "chrisdavidmills", "shahzad11", "Sheppy"] + }, + "Web/Guide/User_input_methods": { + "modified": "2020-07-22T12:38:46.565Z", + "contributors": [ + "mfuji09", + "ericcastro", + "chrisdavidmills", + "KadirTopal", + "sprodrigues", + "MashKao", + "teoli", + "franciov" + ] + }, "Web/HTML": { "modified": "2020-12-14T11:30:14.748Z", "contributors": [ @@ -126997,6 +127105,88 @@ "mgoodwin" ] }, + "Web/Tutorials": { + "modified": "2020-10-06T14:08:41.328Z", + "contributors": [ + "chrisdavidmills", + "vasantha.h2kinfosys", + "jsx", + "belghoultechno", + "shehrozblogger", + "adambraimbridge", + "calin", + "partlybakedideas", + "AmateureCoder", + "devinea2", + "oyenirat", + "christopherwilson1", + "mfuji09", + "treyhuffine", + "jenlouie", + "webrating", + "Quantzilla", + "isabeljason", + "jsonmdn", + "Anonymous", + "stevea1", + "marvenwilsons", + "jstndwn", + "TornadoIDS", + "pgosk", + "jortoller", + "kdex", + "torazaburo", + "MoTTs", + "saidkocdemir", + "MusiqueGraeme", + "teoli", + "tusharcm", + "hosttor", + "wbamberg", + "TheKinkeroony", + "fscholz", + "Marijn", + "austinharper", + "Prabhakar_u", + "growssbill", + "Wisdom-Fifi", + "CrazyAlvaro", + "slippyten", + "LoTD", + "Minat", + "Penny", + "jensen", + "morello", + "jscape", + "shneeple", + "AdamC", + "SpencerG", + "mit7one", + "didinka20", + "jswisher", + "Nikaloz", + "rejithantony7@gmail.com", + "waylon531", + "anushbmx", + "carloshlira", + "jonsger", + "Oliver_Propst", + "arkapravamajumder", + "codepo8", + "Aleksej", + "ChaseWagoner", + "caglardursun", + "kunal_dhir", + "Domecraft", + "kscarfone", + "instanceofme", + "case", + "w3b_m4ster", + "taatzone", + "Sheppy", + "alispivak" + ] + }, "Web/WebDriver": { "modified": "2020-10-15T22:03:17.889Z", "contributors": [ diff --git a/files/en-us/web/accessibility/index.md b/files/en-us/web/accessibility/index.md index 4a8c18d22c04a76..a6448ffa71a7fd3 100644 --- a/files/en-us/web/accessibility/index.md +++ b/files/en-us/web/accessibility/index.md @@ -49,3 +49,4 @@ The MDN [Accessibility Learning Area](/en-US/docs/Learn/Accessibility) contains ## See also - [WAI Interest Group](https://www.w3.org/WAI/about/groups/waiig/) +- [Developer guides](/en-US/docs/Web/Guide) diff --git a/files/en-us/web/css/css_layout/index.md b/files/en-us/web/guide/css/css_layout/index.md similarity index 99% rename from files/en-us/web/css/css_layout/index.md rename to files/en-us/web/guide/css/css_layout/index.md index e00903dfe0d208f..151ae7f2b050cfa 100644 --- a/files/en-us/web/css/css_layout/index.md +++ b/files/en-us/web/guide/css/css_layout/index.md @@ -1,6 +1,6 @@ --- title: CSS Layout -slug: Web/CSS/CSS_Layout +slug: Web/Guide/CSS/CSS_Layout page-type: guide --- diff --git a/files/en-us/web/guide/css/getting_started/challenge_solutions/index.md b/files/en-us/web/guide/css/getting_started/challenge_solutions/index.md new file mode 100644 index 000000000000000..245590ca200110f --- /dev/null +++ b/files/en-us/web/guide/css/getting_started/challenge_solutions/index.md @@ -0,0 +1,352 @@ +--- +title: Challenge solutions +slug: Web/Guide/CSS/Getting_started/Challenge_solutions +page-type: guide +--- + +This page provides solutions to the challenges posed in the [CSS Getting Started](/en-US/docs/Learn/CSS/First_steps) tutorial. These are not the only possible solutions. The sections below correspond to the titles of the tutorial sections. + +## Why use CSS + +The challenges on page [Why use CSS](/en-US/docs/Learn/CSS/First_steps/How_CSS_works) are: + +### Colors + +- Challenge + - : Without looking up a reference, find five more color names that work in your stylesheet. +- Solution + - : CSS supports common color names like `orange`, `yellow`, `blue`, `green`, or `black`. It also supports some more exotic color names like `chartreuse`, `fuschia`, or `burlywood`. See [CSS Color value](/en-US/docs/Web/CSS/color_value) for a complete list as well as other ways of specifying colors. + +## How CSS works + +The challenges on page [How CSS works](/en-US/docs/Learn/CSS/First_steps/How_CSS_works) are: + +### DOM inspector + +- Challenge + - : In DOMi, click on a STRONG node. Use DOMi's right-hand pane to find out where the node's color is set to red, and where its appearance is made bolder than normal text. +- Solution + - : In the menu above the right-hand pane, choose **CSS Rules**. You see two items listed, one that references an internal resource and one that references your stylesheet file. The internal resource defines the **font-weight** property as `bolder`; your stylesheet defines the **color** property as `red`. + +## Cascading and inheritance + +The challenges on page [Cascading and inheritance](/en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance) are: + +### Inherited styles + +- Challenge + - : Change your stylesheet so that only the red letters are underlined. +- Solution + + - : Move the declaration for underlining from the rule for {{ HTMLElement("p") }} to the one for {{ HTMLElement("strong") }}. The resulting file looks like this: + + ```css + p { + color: blue; + } + strong { + color: orange; + text-decoration: underline; + } + ``` + +Later sections of this tutorial describe style rules and declarations in greater detail. + +## Selectors + +The challenges on page [Selectors](/en-US/docs/Learn/CSS/Building_blocks/Selectors) are: + +### Second paragraph blue + +- Challenge + - : Without changing your HTML file, add a single rule to your CSS file that keeps all the initial letters the same color as they are now, but makes all the other text in the second paragraph blue. +- Solution + + - : Add a rule with an ID selector of `#second` and a declaration `color: blue;`, as shown below: + + ```css + #second { + color: blue; + } + ``` + + A more specific selector, `p#second` also works. + +### Both paragraphs blue + +- Challenge + - : Now change the rule you have just added (without changing anything else), to make the first paragraph blue too. +- Solution + + - : Change the selector of the new rule to be a tag selector using `p`: + + ```css + p { + color: blue; + } + ``` + +The rules for the other colors all have more specific selectors, so they override the blue of the paragraph. + +## Readable CSS + +### Commenting out a rule + +- Challenge + - : Comment out part of your stylesheet, without changing anything else, to make the very first letter of your document red. +- Solution + + - : One way to do this is to put comment delimiters around the rule for `.carrot`: + + ```css + /* + .carrot { + color: orange; + } + */ + ``` + +## Text styles + +### Big initial letters + +- Challenge + - : Without changing anything else, make all six initial letters twice the size in the browser's default serif font. +- Solution + + - : Add the following style declaration to the `strong` rule: + + ```css + font: 200% serif; + ``` + + If you use separate declarations for `font-size` and `font-family`, then the `font-style` setting on the first paragraph is _not_ overridden. + +## Color + +### Three-digit color codes + +- Challenge + - : In your CSS file, change all the color names to 3-digit color codes without affecting the result. +- Solution + + - : The following values are reasonable approximations of the named colors: + + ```css + strong { + color: #f00; /* red */ + background-color: #ddf; /* pale blue */ + font: 200% serif; + } + + .carrot { + color: #fa0; /* orange */ + } + + .spinach { + color: #080; /* dark green */ + } + + p { + color: #00f; /* blue */ + } + ``` + +## Content + +The challenges on page are: + +### Add an image + +- Challenge + - : Add a one rule to your stylesheet so that it displays the image at the start of each line. +- Solution + + - : Add this rule to your stylesheet: + + ```css + p::before { + content: url("yellow-pin.png"); + } + ``` + +## Lists + +The challenges on page [Lists](/en-US/docs/Learn/CSS/Styling_text/Styling_lists) are: + +### Lower Roman numerals + +- Challenge + - : Add a rule to your stylesheet, to number the oceans using Roman numerals from i to v. +- Solution + + - : Define a rule for list items to use the `lower-roman` list style: + + ```css + li { + list-style: lower-roman; + } + ``` + +### Capital letters + +- Challenge + - : Change your stylesheet to identify the headings with capital letters in parentheses. +- Solution + + - : Add a rule to the body element (parent of the headings) to reset a new counter, and one to display and increment the counter on the headings: + + ```css + /* numbered headings */ + body { + counter-reset: headnum; + } + h3::before { + content: "(" counter(headnum, upper-latin) ") "; + counter-increment: headnum; + } + ``` + +## Boxes + +The challenges on page [Boxes](/en-US/docs/Learn/CSS/Building_blocks) are: + +### Ocean border + +- Challenge + - : Add one rule to your stylesheet, making a wide border all around the oceans in a color that reminds you of the sea. +- Solution + + - : The following rule achieves this effect: + + ```css + ul { + border: 10px solid lightblue; + width: 100px; + } + ``` + +## Layout + +The challenges on page [Layout](/en-US/docs/Learn/CSS/CSS_layout) are: + +### Default image position + +### Fixed image position + +- Challenge + - : Change your sample document, `doc2.html`, adding this tag to it near the end, just before ``: `Yellow map pin` Predict where the image will appear in your document. Then refresh your browser to see if you were correct. +- Solution + - : The image appears to the right of the second list. + ![A list of five placeholder texts is titled Numbered Paragraphs. A yellow pin is placed to the right of a blue box containing the list.](pin_placement.png) +- Challenge + - : Add a rule to your stylesheet that places the image in the top right of your document. +- Solution + + - : The following rule achieves the desired result: + + ```css + #fixed-pin { + position: fixed; + top: 3px; + right: 3px; + } + ``` + +## Tables + +The challenges on page [Tables](/en-US/docs/Learn/CSS/Building_blocks/Styling_tables) are: + +### Borders on data cells only + +- Challenge + - : Change the stylesheet to make the table have a green border around only the data cells. +- Solution + + - : The following rule puts borders around only {{ HTMLElement("td") }} elements that are inside the {{ HTMLElement("tbody") }} element of the table with `id=demo-table`: + + ```css + #demo-table tbody td { + border: 1px solid #7a7; + } + ``` + +## Media + +The challenges on page [Media](/en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries) are: + +### Separate print style file + +- Challenge + - : Move the print-specific style rules to a separate CSS file and import them into your `style4.css` stylesheet. +- Solution + + - : Cut and paste the lines between `/* print only */` and `/* end print only */` into a file named `style4_print.css`. In style4.css, add the following line at the beginning of the file: + + ```css + @import url("style4_print.css") print; + ``` + +### Heading hover color + +- Challenge + - : Make the headings turn blue when the mouse pointer is over them. +- Solution + + - : The following rule achieves the desired result: + + ```css + h1:hover { + color: blue; + } + ``` + +## JavaScript + +### Move box to the right + +- Challenge + - : Change the script so that the square jumps to the right by 20 em when its color changes, and jumps back afterwards. +- Solution + + - : Add lines to modify the `margin-left` property. Be sure to specify it as `marginLeft` in JavaScript. The following script achieves the desired result: + + ```js + // JavaScript demonstration + function doDemo(button) { + const square = document.getElementById("square"); + square.style.backgroundColor = "#fa4"; + square.style.marginLeft = "20em"; + button.setAttribute("disabled", "true"); + setTimeout(clearDemo, 2000, button); + } + + function clearDemo(button) { + const square = document.getElementById("square"); + square.style.backgroundColor = "transparent"; + square.style.marginLeft = "0em"; + button.removeAttribute("disabled"); + } + ``` + +## SVG and CSS + +### Change color of inner petals + +- Challenge + - : Change the stylesheet so that the inner petals all turn pink when the mouse pointer is over any one of them, without changing the way the outer petals work. +- Solution + + - : Move the position of the :hover pseudo-class from a specific petal, to all petals + + ```css + #inner-petals { + --segment-fill-fill-hover: pink; + } + + /* Non-standard way for some older browsers */ + #inner-petals:hover .segment-fill { + fill: pink; + stroke: none; + } + ``` diff --git a/files/en-us/web/guide/css/getting_started/challenge_solutions/pin_placement.png b/files/en-us/web/guide/css/getting_started/challenge_solutions/pin_placement.png new file mode 100644 index 0000000000000000000000000000000000000000..ae6a23d79b8deaee5be5646fb09645fd87b5703e GIT binary patch literal 9489 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 NoV2o3sf1C`{{rXwS>^x$ literal 0 HcmV?d00001 diff --git a/files/en-us/web/guide/index.md b/files/en-us/web/guide/index.md new file mode 100644 index 000000000000000..9352e22cfc3b8eb --- /dev/null +++ b/files/en-us/web/guide/index.md @@ -0,0 +1,70 @@ +--- +title: Developer guides +slug: Web/Guide +page-type: landing-page +--- + + + +There are a number of guides within MDN docs. These articles aim to add additional usage examples, or teach you how to use an API or feature. This page links to some of the most popular material. + +## HTML + +- [Structuring the web with HTML](/en-US/docs/Learn/HTML) + - : The HTML learning area offers tutorials to help you learn HTML from the ground up. +- [HTML basics](/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics) + - : This article will give you a basic understanding of HTML. After following this guide, you can further explore the material in the HTML Learning Area. + +## CSS + +- [Learn to style HTML using CSS](/en-US/docs/Learn/CSS) + - : Our complete CSS tutorial, taking you from first steps through styling text, creating layouts, and more. +- [CSS Layout Guides](/en-US/docs/Web/Guide/CSS/CSS_Layout) + - : There are a large number of guides to CSS Layout across MDN, this page collects them all together. +- [Using CSS animations](/en-US/docs/Web/CSS/CSS_animations/Using_CSS_animations) + - : CSS animations make it possible to animate transitions from one CSS style configuration to another. This guide will help you get started with the animation properties. + +## JavaScript + +- [JavaScript learning area](/en-US/docs/Learn/JavaScript) + - : Whether you are a complete beginner, or hoping to refresh your skills, this is the place to start. + +## Media + +- [Audio and video delivery](/en-US/docs/Web/Media/Audio_and_video_delivery) + - : We can deliver audio and video on the web in several ways, ranging from 'static' media files to adaptive live streams. This article is intended as a starting point for exploring the various delivery mechanisms of web-based media and compatibility with popular browsers. +- [Audio and video manipulation](/en-US/docs/Web/Media/Audio_and_video_manipulation) + - : The beauty of the web is that you can combine technologies to create new forms. Having native audio and video in the browser means we can use these data streams with technologies such as {{htmlelement("canvas")}}, [WebGL](/en-US/docs/Web/API/WebGL_API) or [Web Audio API](/en-US/docs/Web/API/Web_Audio_API) to modify audio and video directly, for example adding reverb/compression effects to audio, or grayscale/sepia filters to video. This article provides a reference to explain what you need to do. + +## APIs + +- [Using FormData objects](/en-US/docs/Web/API/XMLHttpRequest_API/Using_FormData_Objects) + - : The [`FormData`](/en-US/docs/Web/API/FormData) object lets you compile a set of key/value pairs to send using {{domxref("fetch()")}}. It's primarily intended for sending form data, but can be used independently of forms to transmit keyed data. The transmission is in the same format that the form's `submit()` method would use to send the data if the form's encoding type were set to "multipart/form-data". +- [Progressive web apps](/en-US/docs/Web/Progressive_web_apps#core_pwa_guides) + - : Progressive web apps (PWAs) use modern web APIs along with traditional progressive enhancement strategy to create cross-platform web applications. These apps work everywhere and provide several features that give them the same user experience advantages as native apps. This set of guides tells you all you need to know about PWAs. +- [Parsing and serializing XML](/en-US/docs/Web/XML/Parsing_and_serializing_XML) + - : The web platform provides different methods of parsing and serializing XML, each with its pros and cons. + +## Performance + +- [Optimization and performance](/en-US/docs/Web/Performance) + - : When building modern web apps and sites, it's important to make your content work quickly and efficiently. This lets it perform effectively for both powerful desktop systems and weaker handheld devices. + +## Mobile web development + +- [Mobile web development](/en-US/docs/Learn/CSS/CSS_layout/Responsive_Design) + - : This article provides an overview of some main techniques needed to design websites that work well on mobile devices. + +## Fonts + +- [Variable fonts guide](/en-US/docs/Web/CSS/CSS_fonts/Variable_fonts_guide) + - : Find out how to use variable fonts in your designs. +- [The Web Open Font Format (WOFF)](/en-US/docs/Web/CSS/CSS_fonts/WOFF) + - : WOFF (Web Open Font Format) is a font file format that is free for anyone to use on the web. + +## User interface development + +- [User input methods and controls](/en-US/docs/Learn/Forms/User_input_methods) + - : User input goes beyond just a mouse and keyboard: think of touchscreens for example. This article provides recommendations for managing user input and implementing controls in open web apps, along with FAQs, real-world examples, and links to further information for anyone needing more detailed information on the underlying technologies. diff --git a/files/en-us/web/index.md b/files/en-us/web/index.md index 077899379f5246b..48b7655a81a15f8 100644 --- a/files/en-us/web/index.md +++ b/files/en-us/web/index.md @@ -12,6 +12,10 @@ The open Web presents incredible opportunities for developers. To take full adva ## Documentation for Web developers +- [Web Developer Guide](/en-US/docs/Web/Guide) + - : The Web Developer Guide provides useful how-to content to help you actually use Web technologies to do what you want or need to do. +- [Tutorials for Web developers](/en-US/docs/Web/Tutorials) + - : Tutorials to take you step-by-step through learning HTML, CSS, JavaScript, and Web APIs. - [Accessibility](/en-US/docs/Web/Accessibility) - : Enabling as many people as possible to use websites, even when those people's abilities are limited in some way. - [Performance](/en-US/docs/Web/Performance) diff --git a/files/en-us/web/svg/tutorial/svg_and_css/index.md b/files/en-us/web/svg/tutorial/svg_and_css/index.md index f05562bc3374e06..b4da99f51af3e29 100644 --- a/files/en-us/web/svg/tutorial/svg_and_css/index.md +++ b/files/en-us/web/svg/tutorial/svg_and_css/index.md @@ -408,6 +408,12 @@ Notes about this demonstration: - SVG has its own CSS properties and values. Some of them are similar to CSS properties for HTML. +### Challenge + +Change the stylesheet so that the inner petals all turn pink when the mouse pointer is over any one of them, without changing the way the outer petals work. + +[See a solution to this challenge.](/en-US/docs/Web/Guide/CSS/Getting_started/Challenge_solutions#svg_and_css) + ## Simplified structure The SVG structure shown above could be written much more concise by referencing the individual parts of the flower via {{SVGElement("use")}} elements. This [behavior is standardized](https://www.w3.org/TR/SVG2/struct.html#UseStyleInheritance), though only a few browsers support the {{cssxref(":hover")}} pseudo-class and other more complex CSS selectors on elements referenced via `` elements, at the moment. There is [some discussion about what rules apply to such referenced elements](https://github.com/w3c/svgwg/issues/504). diff --git a/files/en-us/web/tutorials/index.md b/files/en-us/web/tutorials/index.md new file mode 100644 index 000000000000000..d921d4726476a79 --- /dev/null +++ b/files/en-us/web/tutorials/index.md @@ -0,0 +1,144 @@ +--- +title: Tutorials +slug: Web/Tutorials +page-type: landing-page +--- + +The links on this page lead to a variety of tutorials and training materials. Whether you are just starting, learning the basics, or are an old hand at web development, you can find helpful resources here for best practices. + +These resources are created by forward-thinking companies and web developers who have embraced open standards and best practices for web development and that provide or allow translations, through an open content license such as Creative Commons. + +## For complete beginners to the Web + +- [Getting started with the Web](/en-US/docs/Learn/Getting_started_with_the_web) + - : _Getting started with the Web_ is a concise series introducing you to the practicalities of web development. You'll set up the tools you need to construct a simple webpage and publish your own simple code. + +## HTML Tutorials + +### Introductory level + +- [Introduction to HTML](/en-US/docs/Learn/HTML/Introduction_to_HTML) + - : This module sets the stage, getting you used to important concepts and syntax, looking at applying HTML to text, how to create hyperlinks, and how to use HTML to structure a webpage. +- [MDN HTML element reference](/en-US/docs/Web/HTML/Element) + - : A comprehensive reference for HTML elements, and how the different browsers support them. +- [Creating a Simple Web Page with HTML](https://www.theblogstarter.com/html-for-beginners/) + - : An HTML guide for beginners that includes explanations of common tags, including HTML tags. Also includes a step-by-step guide to creating a basic web page with code examples. +- [HTML Challenges](https://wikiversity.org/wiki/Web_Design/HTML_Challenges) + - : Use these challenges to hone your HTML skills (for example, "Should I use an \

element or a \ element?"), focusing on meaningful markup. + +### Intermediate level + +- [Multimedia and embedding](/en-US/docs/Learn/HTML/Multimedia_and_embedding) + - : This module explores how to use HTML to include multimedia in your web pages, including the different ways that images can be included, and how to embed video, audio, and even entire other webpages. +- [HTML tables](/en-US/docs/Learn/HTML/Tables) + - : Representing tabular data on a webpage in an understandable, {{glossary("Accessibility", "accessible")}} way can be a challenge. This module covers basic table markup, along with more complex features such as implementing captions and summaries. + +### Advanced level + +- [HTML forms](/en-US/docs/Learn/Forms) + - : Forms are a very important part of the Web — these provide much of the functionality you need for interacting with websites, e.g. registering and logging in, sending feedback, buying products, and more. This module gets you started with creating the client-side parts of forms. +- [Tips for authoring fast-loading HTML pages](/en-US/docs/Learn/HTML/Howto/Author_fast-loading_HTML_pages) + - : Optimize web pages to provide a more responsive site for visitors and reduce the load on your web server and Internet connection. + +## CSS Tutorials + +### Introductory level + +- [CSS basics](/en-US/docs/Learn/Getting_started_with_the_web/CSS_basics) + - : CSS (Cascading Style Sheets) is the code you use to style your webpage. _CSS Basics_ takes you through what you need to get started. We'll answer questions like: How do I make my text black or red? How do I make my content show up in such-and-such a place on the screen? How do I decorate my webpage with background images and colors? +- [CSS first steps](/en-US/docs/Learn/CSS/First_steps) + - : CSS (Cascading Style Sheets) is used to style and lay out web pages — for example, to alter the font, color, size, and spacing of your content, split it into multiple columns, or add animations and other decorative features. This module provides a gentle beginning to your path toward CSS mastery with the basics of how it works, what the syntax looks like, and how you can start using it to add styling to HTML. +- [CSS building blocks](/en-US/docs/Learn/CSS/Building_blocks) + + - : This module carries on where [CSS first steps](/en-US/docs/Learn/CSS/First_steps) left off — now you've gained familiarity with the language and its syntax, and got some basic experience with using it, it's time to dive a bit deeper. This module looks at the cascade and inheritance, all the selector types we have available, units, sizing, styling backgrounds and borders, debugging, and lots more. + + The aim here is to provide you with a toolkit for writing competent CSS and help you understand all the essential theory, before moving on to more specific disciplines like [text styling](/en-US/docs/Learn/CSS/Styling_text) and [CSS layout](/en-US/docs/Learn/CSS/CSS_layout). + +- [Selectors](/en-US/docs/Learn/CSS/Building_blocks/Selectors) + + - : Target HTML elements, including based on element state, with CSS. + +- [Specificity](/en-US/docs/Web/CSS/Specificity) + + - : Understanding the browser algorithm to determine which CSS declarations get applied to an element when there are competing declarations, with a [specificity quiz](https://estelle.github.io/CSS/selectors/exercises/specificity.html) + +- [Cascade & Inheritance](/en-US/docs/Learn/CSS/Building_blocks/Cascade_and_inheritance) + + - : The cascade, specificity, and inheritance control how CSS is applied to HTML and how conflicts between style declarations are resolved. + +- [Styling text](/en-US/docs/Learn/CSS/Styling_text) + - : Here we look at text styling fundamentals, including setting font, boldness, and italics, line and letter spacing, and drop shadows and other text features. We round off the module by looking at applying custom fonts to your page, and styling lists and links. +- [Common CSS Questions](/en-US/docs/Learn/CSS/Howto/CSS_FAQ) + - : Common questions and answers for beginners. + +### Intermediate level + +- [CSS layout](/en-US/docs/Learn/CSS/CSS_layout) + - : At this point we've already looked at CSS fundamentals, how to style text, and how to style and manipulate the boxes that your content sits inside. Now it's time to look at how to place your boxes in the right place in relation to the viewport, and one another. We have covered the necessary prerequisites so can now dive deep into CSS layout, looking at different display settings, traditional layout methods involving float and positioning, and new fangled layout tools like flexbox. +- [CSS reference](/en-US/docs/Web/CSS/Reference) + - : Complete reference to CSS, with details on support by Firefox and other browsers. +- [Fluid Grids](https://alistapart.com/article/fluidgrids/) + - : Design layouts that fluidly resize with the browser window, while still using a typographic grid. +- [CSS Challenges](https://en.wikiversity.org/wiki/Web_Design/CSS_challenges) + - : Flex your CSS skills, and see where you need more practice. + +### Advanced level + +- [Using CSS transforms](/en-US/docs/Web/CSS/CSS_transforms/Using_CSS_transforms) + - : Apply rotation, skewing, scaling, and translation using CSS. +- [CSS transitions](/en-US/docs/Web/CSS/CSS_transitions/Using_CSS_transitions) + - : CSS transitions provide a way to animate changes to CSS properties, instead of having the changes take effect instantly. +- [Canvas tutorial](/en-US/docs/Web/API/Canvas_API/Tutorial) + - : Learn how to draw graphics using scripting using the canvas element. + +## JavaScript Tutorials + +### Introductory level + +- [JavaScript first steps](/en-US/docs/Learn/JavaScript/First_steps) + - : In our first JavaScript module, we first answer some fundamental questions such as "what is JavaScript?", "what does it look like?", and "what can it do?", before moving on to taking you through your first practical experience of writing JavaScript. After that, we discuss some key JavaScript features in detail, such as variables, strings, numbers and arrays. +- [JavaScript building blocks](/en-US/docs/Learn/JavaScript/Building_blocks) + - : In this module, we continue our coverage of all JavaScript's key fundamental features, turning our attention to commonly-encountered types of code blocks such as conditional statements, loops, functions, and events. You've seen this stuff already in the course, but only in passing — here we'll discuss it all explicitly. +- [Getting started with JavaScript](/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics) + - : What is JavaScript and how can it help you? +- [Codecademy](https://www.codecademy.com/) + - : Codecademy is an easy way to learn how to code JavaScript. It's interactive and you can do it with your friends. +- [freeCodeCamp](https://www.freecodecamp.org/learn) + - : freeCodeCamp teaches a variety of languages and frameworks for web development. It also has a [forum](https://forum.freecodecamp.org/), an [internet radio station](https://coderadio.freecodecamp.org), and a [blog](https://www.freecodecamp.org/news). + +### Intermediate level + +- [Introducing JavaScript objects](/en-US/docs/Learn/JavaScript/Objects) + - : In JavaScript, most things are objects, from core JavaScript features like strings and arrays to the browser APIs built on top of JavaScript. You can even create your own objects to encapsulate related functions and variables into efficient packages. The object-oriented nature of JavaScript is important to understand if you want to go further with your knowledge of the language and write more efficient code, therefore we've provided this module to help you. Here we teach object theory and syntax in detail, look at how to create your own objects, and explain what JSON data is and how to work with it. +- [Client-side web APIs](/en-US/docs/Learn/JavaScript/Client-side_web_APIs) + - : When writing client-side JavaScript for websites or applications, you won't go very far before you start to use APIs — interfaces for manipulating different aspects of the browser and operating system the site is running on, or even data from other websites or services. In this module, we will explore what APIs are, and how to use some of the most common APIs you'll come across often in your development work. +- [Eloquent JavaScript](https://eloquentjavascript.net/) + - : A comprehensive guide to intermediate and advanced JavaScript methodologies. +- [Speaking JavaScript](https://exploringjs.com/es5/) + - : For programmers who want to learn JavaScript quickly and properly, and for JavaScript programmers who want to deepen their skills and/or look up specific topics. +- [Essential JavaScript Design Patterns](https://addyosmani.com/resources/essentialjsdesignpatterns/book/) + - : An introduction to essential JavaScript design patterns. +- [JavaScript.info - The Modern JavaScript Tutorial](https://javascript.info/) + - : Part 1: The Language. Part 2: Working with Browsers. + +### Advanced level + +- [JavaScript Guide](/en-US/docs/Web/JavaScript/Guide) + - : A comprehensive, regularly updated guide to JavaScript for all levels of learning from beginner to advanced. +- [You Don't Know JS](https://github.com/getify/You-Dont-Know-JS) + - : A series of books diving deep into the core mechanisms of the JavaScript language. +- [JavaScript Garden](https://github.com/BonsaiDen/JavaScript-Garden) + - : Documentation of the most quirky parts of JavaScript. +- [Exploring ES6](https://exploringjs.com/es6/) + - : Reliable and in-depth information on ECMAScript 2015. +- [JavaScript Patterns](https://github.com/chuanxshi/javascript-patterns) + - : A JavaScript pattern and anti-pattern collection that covers function patterns, jQuery patterns, jQuery plugin patterns, design patterns, general patterns, literals and constructor patterns, object creation patterns, code reuse patterns, DOM. +- [How browsers work](https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/) + - : A detailed research article describing different modern browsers, their engines, page rendering etc. +- [JavaScript Videos](https://github.com/bolshchikov/js-must-watch) + - : A collection of JavaScript videos to watch. + +### Extension Development + +- [WebExtensions](/en-US/docs/Mozilla/Add-ons/WebExtensions) + - : WebExtensions is a cross-browser system for developing browser add-ons. To a large extent, the system is compatible with the [extension API](https://developer.chrome.com/docs/extensions/reference/) supported by Google Chrome and Opera. Extensions written for these browsers will in most cases run in Firefox or [Microsoft Edge](https://docs.microsoft.com/archive/microsoft-edge/legacy/developer/) with [just a few changes](https://extensionworkshop.com/documentation/develop/porting-a-google-chrome-extension/). The API is also fully compatible with [multiprocess Firefox](https://wiki.mozilla.org/Firefox/multiprocess).