CSS • Chapter 52 • Foundations to Production
Color Schemes and User Preferences
Every topic includes a CSS/HTML coding example, ten focused teaching examples, code explanation, expected result, practice, and responsive/translated-layout checks.
52.1 color-scheme
color-scheme is part of the CSS system covered in Chapter 52. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size. The goal is to connect the syntax to the browser's layout and cascade decisions rather than memorize a property name.
For color-scheme in Chapter 52, inspect the matched selector, computed value, containing block or formatting context, intrinsic size, and any min/max constraints. When translation is enabled, also inspect whether longer text or RTL direction changes the available inline space.
Start with one small example for color-scheme, resize the viewport, increase text size, translate the label, and add a competing rule. This shows whether the technique remains predictable under real content rather than only in a fixed desktop mockup. This explanation is specific to Chapter 52, topic 1.
Concept in plain language
color-scheme is part of the CSS system covered in Chapter 52. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size.
10 teaching examples
Example 1: Smallest useful case
Build a minimal pricing table for color-scheme. Keep only the declarations needed to see the behavior clearly, then inspect the computed styles. Chapter 52, topic 1, example 1.
Example 2: Change one value
Change one important CSS value in the lesson sidebar example for color-scheme. Predict the visual difference before reloading the page. Chapter 52, topic 1, example 2.
Example 3: Narrow-screen test
Test color-scheme in the contact form at 320px, 375px, and tablet width. Watch for min-content sizing, unwrapped text, and elements that refuse to shrink. Chapter 52, topic 1, example 3.
Example 4: Translated-text test
Translate the button group into a language with longer labels while using color-scheme. Confirm buttons, headings, and navigation wrap without widening the page. Chapter 52, topic 1, example 4.
Example 5: Arabic/Persian test
Switch the data table to Arabic or Persian. Verify logical spacing, start/end alignment, sidebar direction, and LTR code islands. Chapter 52, topic 1, example 5.
Example 6: Accessibility test
Check color-scheme in the media player with keyboard focus, zoom, reduced motion, forced colors, and high text scaling where relevant. Chapter 52, topic 1, example 6.
Example 7: Cascade test
Add a competing rule to the notification and determine why the declaration for color-scheme wins or loses using the browser's Styles and Computed panels. Chapter 52, topic 1, example 7.
Example 8: Content-stress test
Fill the language selector with very long words, URLs, translated text, images, and nested controls. Adjust color-scheme without hiding meaningful content. Chapter 52, topic 1, example 8.
Example 9: Refactoring test
Rewrite the course card so color-scheme uses reusable tokens, logical properties, or a component class while preserving the same behavior. Chapter 52, topic 1, example 9.
Example 10: Production review
Review color-scheme in the navigation bar for browser support, fallback behavior, RTL, small screens, print, motion preferences, and maintainability. Chapter 52, topic 1, example 10.
CSS/HTML coding example
<!-- HTML -->
<form><input placeholder="System-themed control"></form>
<style>
:root { color-scheme:light dark; }
</style>Step-by-step code explanation
- Identify the selector and declaration that demonstrate color-scheme.
- Read the HTML structure first so you know which box or relationship the CSS is styling.
- color-scheme tells the browser which color schemes the page supports.
- Resize the viewport and test long translated content. Confirm that flex/grid items use min-width:0 where needed and that only code or genuinely wide content scrolls locally.
- Switch to Arabic or Persian and verify logical start/end spacing, text alignment, sidebar direction, and LTR isolation for code.
Expected result: The browser visibly demonstrates color-scheme without requiring the page to exceed the viewport width. If the example contains wide code, only the code block scrolls horizontally. This expected result belongs to Chapter 52, topic 1.
Practice exercise
Build a fresh example for color-scheme from Chapter 52. Change one value, inspect the computed styles, test at 320px and tablet width, translate the visible text, switch the page to RTL, and explain why the final declaration or layout behavior occurs.
52.2 prefers-color-scheme
prefers-color-scheme is part of the CSS system covered in Chapter 52. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size. The goal is to connect the syntax to the browser's layout and cascade decisions rather than memorize a property name.
For prefers-color-scheme in Chapter 52, inspect the matched selector, computed value, containing block or formatting context, intrinsic size, and any min/max constraints. When translation is enabled, also inspect whether longer text or RTL direction changes the available inline space.
Start with one small example for prefers-color-scheme, resize the viewport, increase text size, translate the label, and add a competing rule. This shows whether the technique remains predictable under real content rather than only in a fixed desktop mockup. This explanation is specific to Chapter 52, topic 2.
Concept in plain language
prefers-color-scheme is part of the CSS system covered in Chapter 52. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size.
10 teaching examples
Example 1: Smallest useful case
Build a minimal button group for prefers-color-scheme. Keep only the declarations needed to see the behavior clearly, then inspect the computed styles. Chapter 52, topic 2, example 1.
Example 2: Change one value
Change one important CSS value in the data table example for prefers-color-scheme. Predict the visual difference before reloading the page. Chapter 52, topic 2, example 2.
Example 3: Narrow-screen test
Test prefers-color-scheme in the media player at 320px, 375px, and tablet width. Watch for min-content sizing, unwrapped text, and elements that refuse to shrink. Chapter 52, topic 2, example 3.
Example 4: Translated-text test
Translate the notification into a language with longer labels while using prefers-color-scheme. Confirm buttons, headings, and navigation wrap without widening the page. Chapter 52, topic 2, example 4.
Example 5: Arabic/Persian test
Switch the language selector to Arabic or Persian. Verify logical spacing, start/end alignment, sidebar direction, and LTR code islands. Chapter 52, topic 2, example 5.
Example 6: Accessibility test
Check prefers-color-scheme in the course card with keyboard focus, zoom, reduced motion, forced colors, and high text scaling where relevant. Chapter 52, topic 2, example 6.
Example 7: Cascade test
Add a competing rule to the navigation bar and determine why the declaration for prefers-color-scheme wins or loses using the browser's Styles and Computed panels. Chapter 52, topic 2, example 7.
Example 8: Content-stress test
Fill the article with very long words, URLs, translated text, images, and nested controls. Adjust prefers-color-scheme without hiding meaningful content. Chapter 52, topic 2, example 8.
Example 9: Refactoring test
Rewrite the profile panel so prefers-color-scheme uses reusable tokens, logical properties, or a component class while preserving the same behavior. Chapter 52, topic 2, example 9.
Example 10: Production review
Review prefers-color-scheme in the search form for browser support, fallback behavior, RTL, small screens, print, motion preferences, and maintainability. Chapter 52, topic 2, example 10.
CSS/HTML coding example
<!-- HTML -->
<form><input placeholder="System-themed control"></form>
<style>
:root { color-scheme:light dark; }
</style>Step-by-step code explanation
- Identify the selector and declaration that demonstrate prefers-color-scheme.
- Read the HTML structure first so you know which box or relationship the CSS is styling.
- color-scheme tells the browser which color schemes the page supports.
- Resize the viewport and test long translated content. Confirm that flex/grid items use min-width:0 where needed and that only code or genuinely wide content scrolls locally.
- Switch to Arabic or Persian and verify logical start/end spacing, text alignment, sidebar direction, and LTR isolation for code.
Expected result: The browser visibly demonstrates prefers-color-scheme without requiring the page to exceed the viewport width. If the example contains wide code, only the code block scrolls horizontally. This expected result belongs to Chapter 52, topic 2.
Practice exercise
Build a fresh example for prefers-color-scheme from Chapter 52. Change one value, inspect the computed styles, test at 320px and tablet width, translate the visible text, switch the page to RTL, and explain why the final declaration or layout behavior occurs.
52.3 forced-colors
forced-colors is part of the CSS system covered in Chapter 52. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size. The goal is to connect the syntax to the browser's layout and cascade decisions rather than memorize a property name.
For forced-colors in Chapter 52, inspect the matched selector, computed value, containing block or formatting context, intrinsic size, and any min/max constraints. When translation is enabled, also inspect whether longer text or RTL direction changes the available inline space.
Start with one small example for forced-colors, resize the viewport, increase text size, translate the label, and add a competing rule. This shows whether the technique remains predictable under real content rather than only in a fixed desktop mockup. This explanation is specific to Chapter 52, topic 3.
Concept in plain language
forced-colors is part of the CSS system covered in Chapter 52. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size.
10 teaching examples
Example 1: Smallest useful case
Build a minimal notification for forced-colors. Keep only the declarations needed to see the behavior clearly, then inspect the computed styles. Chapter 52, topic 3, example 1.
Example 2: Change one value
Change one important CSS value in the language selector example for forced-colors. Predict the visual difference before reloading the page. Chapter 52, topic 3, example 2.
Example 3: Narrow-screen test
Test forced-colors in the course card at 320px, 375px, and tablet width. Watch for min-content sizing, unwrapped text, and elements that refuse to shrink. Chapter 52, topic 3, example 3.
Example 4: Translated-text test
Translate the navigation bar into a language with longer labels while using forced-colors. Confirm buttons, headings, and navigation wrap without widening the page. Chapter 52, topic 3, example 4.
Example 5: Arabic/Persian test
Switch the article to Arabic or Persian. Verify logical spacing, start/end alignment, sidebar direction, and LTR code islands. Chapter 52, topic 3, example 5.
Example 6: Accessibility test
Check forced-colors in the profile panel with keyboard focus, zoom, reduced motion, forced colors, and high text scaling where relevant. Chapter 52, topic 3, example 6.
Example 7: Cascade test
Add a competing rule to the search form and determine why the declaration for forced-colors wins or loses using the browser's Styles and Computed panels. Chapter 52, topic 3, example 7.
Example 8: Content-stress test
Fill the dashboard with very long words, URLs, translated text, images, and nested controls. Adjust forced-colors without hiding meaningful content. Chapter 52, topic 3, example 8.
Example 9: Refactoring test
Rewrite the photo gallery so forced-colors uses reusable tokens, logical properties, or a component class while preserving the same behavior. Chapter 52, topic 3, example 9.
Example 10: Production review
Review forced-colors in the pricing table for browser support, fallback behavior, RTL, small screens, print, motion preferences, and maintainability. Chapter 52, topic 3, example 10.
CSS/HTML coding example
<!-- HTML -->
<button class="button">Forced colors</button>
<style>
@media (forced-colors:active){.button{border:1px solid ButtonText}}
</style>Step-by-step code explanation
- Identify the selector and declaration that demonstrate forced-colors.
- Read the HTML structure first so you know which box or relationship the CSS is styling.
- forced-colors allows targeted adjustments when system colors are enforced.
- Resize the viewport and test long translated content. Confirm that flex/grid items use min-width:0 where needed and that only code or genuinely wide content scrolls locally.
- Switch to Arabic or Persian and verify logical start/end spacing, text alignment, sidebar direction, and LTR isolation for code.
Expected result: The browser visibly demonstrates forced-colors without requiring the page to exceed the viewport width. If the example contains wide code, only the code block scrolls horizontally. This expected result belongs to Chapter 52, topic 3.
Practice exercise
Build a fresh example for forced-colors from Chapter 52. Change one value, inspect the computed styles, test at 320px and tablet width, translate the visible text, switch the page to RTL, and explain why the final declaration or layout behavior occurs.
52.4 prefers-contrast
prefers-contrast is part of the CSS system covered in Chapter 52. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size. The goal is to connect the syntax to the browser's layout and cascade decisions rather than memorize a property name.
For prefers-contrast in Chapter 52, inspect the matched selector, computed value, containing block or formatting context, intrinsic size, and any min/max constraints. When translation is enabled, also inspect whether longer text or RTL direction changes the available inline space.
Start with one small example for prefers-contrast, resize the viewport, increase text size, translate the label, and add a competing rule. This shows whether the technique remains predictable under real content rather than only in a fixed desktop mockup. This explanation is specific to Chapter 52, topic 4.
Concept in plain language
prefers-contrast is part of the CSS system covered in Chapter 52. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size.
10 teaching examples
Example 1: Smallest useful case
Build a minimal navigation bar for prefers-contrast. Keep only the declarations needed to see the behavior clearly, then inspect the computed styles. Chapter 52, topic 4, example 1.
Example 2: Change one value
Change one important CSS value in the article example for prefers-contrast. Predict the visual difference before reloading the page. Chapter 52, topic 4, example 2.
Example 3: Narrow-screen test
Test prefers-contrast in the profile panel at 320px, 375px, and tablet width. Watch for min-content sizing, unwrapped text, and elements that refuse to shrink. Chapter 52, topic 4, example 3.
Example 4: Translated-text test
Translate the search form into a language with longer labels while using prefers-contrast. Confirm buttons, headings, and navigation wrap without widening the page. Chapter 52, topic 4, example 4.
Example 5: Arabic/Persian test
Switch the dashboard to Arabic or Persian. Verify logical spacing, start/end alignment, sidebar direction, and LTR code islands. Chapter 52, topic 4, example 5.
Example 6: Accessibility test
Check prefers-contrast in the photo gallery with keyboard focus, zoom, reduced motion, forced colors, and high text scaling where relevant. Chapter 52, topic 4, example 6.
Example 7: Cascade test
Add a competing rule to the pricing table and determine why the declaration for prefers-contrast wins or loses using the browser's Styles and Computed panels. Chapter 52, topic 4, example 7.
Example 8: Content-stress test
Fill the lesson sidebar with very long words, URLs, translated text, images, and nested controls. Adjust prefers-contrast without hiding meaningful content. Chapter 52, topic 4, example 8.
Example 9: Refactoring test
Rewrite the contact form so prefers-contrast uses reusable tokens, logical properties, or a component class while preserving the same behavior. Chapter 52, topic 4, example 9.
Example 10: Production review
Review prefers-contrast in the button group for browser support, fallback behavior, RTL, small screens, print, motion preferences, and maintainability. Chapter 52, topic 4, example 10.
CSS/HTML coding example
<!-- HTML -->
<button class="button">Preference-aware control</button>
<style>
@media (prefers-contrast:more){a{text-decoration-thickness:3px}}
</style>Step-by-step code explanation
- Identify the selector and declaration that demonstrate prefers-contrast.
- Read the HTML structure first so you know which box or relationship the CSS is styling.
- The rule demonstrates prefers-contrast.
- Resize the viewport and test long translated content. Confirm that flex/grid items use min-width:0 where needed and that only code or genuinely wide content scrolls locally.
- Switch to Arabic or Persian and verify logical start/end spacing, text alignment, sidebar direction, and LTR isolation for code.
Expected result: The browser visibly demonstrates prefers-contrast without requiring the page to exceed the viewport width. If the example contains wide code, only the code block scrolls horizontally. This expected result belongs to Chapter 52, topic 4.
Practice exercise
Build a fresh example for prefers-contrast from Chapter 52. Change one value, inspect the computed styles, test at 320px and tablet width, translate the visible text, switch the page to RTL, and explain why the final declaration or layout behavior occurs.
52.5 System Colors
System Colors is part of the CSS system covered in Chapter 52. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size. The goal is to connect the syntax to the browser's layout and cascade decisions rather than memorize a property name.
For System Colors in Chapter 52, inspect the matched selector, computed value, containing block or formatting context, intrinsic size, and any min/max constraints. When translation is enabled, also inspect whether longer text or RTL direction changes the available inline space.
Start with one small example for System Colors, resize the viewport, increase text size, translate the label, and add a competing rule. This shows whether the technique remains predictable under real content rather than only in a fixed desktop mockup. This explanation is specific to Chapter 52, topic 5.
Concept in plain language
System Colors is part of the CSS system covered in Chapter 52. The key is to understand what box, selector, cascade rule, layout algorithm, or user preference the declaration affects, then test the result at more than one viewport size.
10 teaching examples
Example 1: Smallest useful case
Build a minimal search form for System Colors. Keep only the declarations needed to see the behavior clearly, then inspect the computed styles. Chapter 52, topic 5, example 1.
Example 2: Change one value
Change one important CSS value in the dashboard example for System Colors. Predict the visual difference before reloading the page. Chapter 52, topic 5, example 2.
Example 3: Narrow-screen test
Test System Colors in the photo gallery at 320px, 375px, and tablet width. Watch for min-content sizing, unwrapped text, and elements that refuse to shrink. Chapter 52, topic 5, example 3.
Example 4: Translated-text test
Translate the pricing table into a language with longer labels while using System Colors. Confirm buttons, headings, and navigation wrap without widening the page. Chapter 52, topic 5, example 4.
Example 5: Arabic/Persian test
Switch the lesson sidebar to Arabic or Persian. Verify logical spacing, start/end alignment, sidebar direction, and LTR code islands. Chapter 52, topic 5, example 5.
Example 6: Accessibility test
Check System Colors in the contact form with keyboard focus, zoom, reduced motion, forced colors, and high text scaling where relevant. Chapter 52, topic 5, example 6.
Example 7: Cascade test
Add a competing rule to the button group and determine why the declaration for System Colors wins or loses using the browser's Styles and Computed panels. Chapter 52, topic 5, example 7.
Example 8: Content-stress test
Fill the data table with very long words, URLs, translated text, images, and nested controls. Adjust System Colors without hiding meaningful content. Chapter 52, topic 5, example 8.
Example 9: Refactoring test
Rewrite the media player so System Colors uses reusable tokens, logical properties, or a component class while preserving the same behavior. Chapter 52, topic 5, example 9.
Example 10: Production review
Review System Colors in the notification for browser support, fallback behavior, RTL, small screens, print, motion preferences, and maintainability. Chapter 52, topic 5, example 10.
CSS/HTML coding example
<!-- HTML -->
<button class="button">Preference-aware control</button>
<style>
.button{color:ButtonText;background:ButtonFace}
</style>Step-by-step code explanation
- Identify the selector and declaration that demonstrate System Colors.
- Read the HTML structure first so you know which box or relationship the CSS is styling.
- The rule demonstrates System Colors.
- Resize the viewport and test long translated content. Confirm that flex/grid items use min-width:0 where needed and that only code or genuinely wide content scrolls locally.
- Switch to Arabic or Persian and verify logical start/end spacing, text alignment, sidebar direction, and LTR isolation for code.
Expected result: The browser visibly demonstrates System Colors without requiring the page to exceed the viewport width. If the example contains wide code, only the code block scrolls horizontally. This expected result belongs to Chapter 52, topic 5.
Practice exercise
Build a fresh example for System Colors from Chapter 52. Change one value, inspect the computed styles, test at 320px and tablet width, translate the visible text, switch the page to RTL, and explain why the final declaration or layout behavior occurs.
Chapter 52 review — 10 questions and answers
1. What should you inspect first when color-scheme does not work as expected?
Answer: Inspect the matched rules, computed value, box size, layout context, and inherited values for color-scheme. Then reduce the example until the winning declaration is clear.
2. How should color-scheme be checked before publishing?
Answer: Test color-scheme on narrow and wide screens, with long translated text, at increased zoom, and in RTL where direction can affect layout. Add a fallback if browser support or user preferences require one.
3. What should you inspect first when prefers-color-scheme does not work as expected?
Answer: Inspect the matched rules, computed value, box size, layout context, and inherited values for prefers-color-scheme. Then reduce the example until the winning declaration is clear.
4. How should prefers-color-scheme be checked before publishing?
Answer: Test prefers-color-scheme on narrow and wide screens, with long translated text, at increased zoom, and in RTL where direction can affect layout. Add a fallback if browser support or user preferences require one.
5. What should you inspect first when forced-colors does not work as expected?
Answer: Inspect the matched rules, computed value, box size, layout context, and inherited values for forced-colors. Then reduce the example until the winning declaration is clear.
6. How should forced-colors be checked before publishing?
Answer: Test forced-colors on narrow and wide screens, with long translated text, at increased zoom, and in RTL where direction can affect layout. Add a fallback if browser support or user preferences require one.
7. What should you inspect first when prefers-contrast does not work as expected?
Answer: Inspect the matched rules, computed value, box size, layout context, and inherited values for prefers-contrast. Then reduce the example until the winning declaration is clear.
8. How should prefers-contrast be checked before publishing?
Answer: Test prefers-contrast on narrow and wide screens, with long translated text, at increased zoom, and in RTL where direction can affect layout. Add a fallback if browser support or user preferences require one.
9. What should you inspect first when System Colors does not work as expected?
Answer: Inspect the matched rules, computed value, box size, layout context, and inherited values for System Colors. Then reduce the example until the winning declaration is clear.
10. How should System Colors be checked before publishing?
Answer: Test System Colors on narrow and wide screens, with long translated text, at increased zoom, and in RTL where direction can affect layout. Add a fallback if browser support or user preferences require one.