Multi-brand stylesheet generation helps you create different looks for multiple brands using one set of styles. It saves time and keeps your code organized.
Multi-brand stylesheet generation in SASS
Start learning this pattern below
Jump into concepts and practice - no test required
$brands: ( brand1: ( primary-color: #ff0000, font-family: "Arial, sans-serif" ), brand2: ( primary-color: #0000ff, font-family: "Georgia, serif" ) ); @each $brand, $settings in $brands { .#{$brand} { --primary-color: #{map-get($settings, primary-color)}; font-family: #{map-get($settings, font-family)}; } }
Use $brands map to store brand-specific settings.
@each loop helps generate styles for each brand automatically.
$brands: ( redbrand: ( primary-color: #e63946, font-family: "Helvetica, sans-serif" ), bluebrand: ( primary-color: #1d3557, font-family: "Times New Roman, serif" ) ); @each $brand, $settings in $brands { .#{$brand} { color: map-get($settings, primary-color); font-family: map-get($settings, font-family); } }
$brands: ( brandA: ( primary-color: #2a9d8f ), brandB: ( primary-color: #e76f51 ) ); @each $brand, $settings in $brands { .#{$brand} { background-color: map-get($settings, primary-color); } }
This HTML file uses Sass to generate styles for two brands: Alpha and Beta. Each brand section has its own color and font style. The styles are applied using CSS custom properties and Sass maps with loops.
Note: Sass code must be compiled to CSS before it can be used in the browser. The Sass code shown in the original example should be placed in a separate .scss file and compiled to CSS, which is then linked or included in the HTML.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Multi-brand Stylesheet Example</title> <style> /* Sass code cannot be used directly inside <style> tags in HTML. It needs to be compiled to CSS first. */ </style> </head> <body> <section class="alpha"> <h1>Alpha Brand</h1> <p>This section uses Alpha brand colors and fonts.</p> </section> <section class="beta"> <h1>Beta Brand</h1> <p>This section uses Beta brand colors and fonts.</p> </section> </body> </html>
Remember to compile Sass to CSS before using it in the browser.
Use CSS custom properties for easier theme switching in runtime.
Keep brand variables organized in maps for easy updates.
Multi-brand stylesheets let you style many brands from one codebase.
Sass maps and loops help generate brand-specific CSS automatically.
Use CSS variables for flexible and maintainable brand styles.
Practice
Solution
Step 1: Understand Sass maps role
Sass maps hold key-value pairs, perfect for storing brand colors and styles centrally.Step 2: Recognize reuse advantage
Using maps lets you reuse brand data easily in loops, avoiding repetition.Final Answer:
They store brand colors and styles in one place for easy reuse. -> Option DQuick Check:
Sass maps = centralized brand styles [OK]
- Thinking maps create HTML elements
- Confusing maps with CSS variables
- Believing maps block styles
$brands to generate brand classes?Solution
Step 1: Identify correct loop type for maps
Sass uses@eachto loop over maps with key and value variables.Step 2: Check syntax correctness
@each $brand, $colors in $brands { .#{$brand} { color: $colors.primary; } } uses@each $brand, $colors in $brands, which is correct syntax for maps.Final Answer:
@each $brand, $colors in $brands { .#{$brand} { color: $colors.primary; } } -> Option AQuick Check:
@each loops maps correctly [OK]
- Using @for or @while for maps
- Writing @map which is invalid
- Missing interpolation for class names
$brands: (red: (primary: #f00), blue: (primary: #00f));
@each $brand, $colors in $brands {
.#{$brand} {
--main-color: #{$colors.primary};
}
}What CSS is generated?
Solution
Step 1: Understand the loop and map values
The loop iterates over two brands: red and blue, each with a primary color hex code.Step 2: Check generated CSS properties
Each brand class sets a CSS variable--main-colorto the brand's primary hex color.Final Answer:
.red { --main-color: #f00; } .blue { --main-color: #00f; } -> Option AQuick Check:
Loop sets CSS variables with brand colors [OK]
- Confusing CSS variable with color property
- Using color names instead of hex codes
- Expecting syntax error from valid code
$brands: (green: (primary: #0f0));
@each $brand, $colors in $brands {
.#{$brand} {
color: $colors-primary;
}
}Solution
Step 1: Check variable access inside map
Accessing nested map values requires dot notation:$colors.primary, not dash.Step 2: Verify other syntax parts
Semicolon after map is optional in Sass; @each is correct for maps; interpolation without quotes is valid.Final Answer:
Incorrect variable access syntax: should use $colors.primary instead of $colors-primary. -> Option BQuick Check:
Use dot notation for nested map keys [OK]
- Using dash instead of dot for map keys
- Confusing @for and @each loops
- Thinking semicolon is mandatory after maps
$brands. Which approach best ensures easy future updates and supports CSS variable overrides?Solution
Step 1: Understand maintainability needs
Using CSS variables inside brand classes allows easy color changes without rewriting styles.Step 2: Use Sass loops to generate variables
Loops automate creating brand classes with variables, making updates simple and consistent.Step 3: Apply variables in button styles
Buttons use the CSS variables, so changing the variable updates all buttons for that brand.Final Answer:
Define CSS variables inside each brand class using Sass loops, then use those variables in button styles. -> Option CQuick Check:
CSS variables + Sass loops = flexible multi-brand styles [OK]
- Hardcoding colors reduces flexibility
- Relying on JavaScript adds complexity
- Managing separate CSS files is error-prone
