Bird
Raised Fist0
CSSmarkup~8 mins

Element selectors in CSS - Performance & Optimization

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Performance: Element selectors
MEDIUM IMPACT
Element selectors affect how quickly the browser matches CSS rules to HTML elements during style calculation.
Styling all paragraphs on a page
CSS
.intro-text { color: blue; font-size: 1.2rem; }
Targets only paragraphs with the class 'intro-text', reducing the number of elements the browser must match.
📈 Performance Gainreduces style matching scope, speeding up style calculation especially on large documents
Styling all paragraphs on a page
CSS
p { color: blue; font-size: 1.2rem; }
This applies styles to every <p> element, causing the browser to match many nodes, which can slow style calculation on large pages.
📉 Performance Costtriggers style recalculation for all <p> elements, increasing style matching time linearly with number of paragraphs
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Element selector (e.g., p)Matches all <p> elements0Low[OK]
Class selector (e.g., .intro-text)Matches fewer elements0Low[OK] Good
Rendering Pipeline
Element selectors are processed during the Style Calculation stage where the browser matches CSS rules to DOM elements. Broad selectors like element selectors increase the number of matches, making this stage slower.
Style Calculation
⚠️ BottleneckStyle Calculation
Core Web Vital Affected
LCP
Element selectors affect how quickly the browser matches CSS rules to HTML elements during style calculation.
Optimization Tips
1Avoid using broad element selectors on large pages to reduce style calculation time.
2Prefer class or ID selectors to limit the number of matched elements.
3Keep CSS selectors simple and specific to improve rendering speed.
Performance Quiz - 3 Questions
Test your performance knowledge
Why can using broad element selectors slow down page rendering?
ABecause they increase network requests
BBecause they match many elements, increasing style calculation time
CBecause they block JavaScript execution
DBecause they cause images to load slower
DevTools: Performance
How to check: Record a performance profile while loading the page, then look at the Style Calculation section to see how long CSS matching takes.
What to look for: Long style recalculation times or many matched elements indicate inefficient selectors.

Practice

(1/5)
1. What does an element selector in CSS do?
p { color: red; }
easy
A. Styles all <p> elements on the page
B. Styles only the first <p> element
C. Styles elements with class 'p'
D. Styles elements with id 'p'

Solution

  1. Step 1: Understand element selector syntax

    The selector p targets all <p> tags in the HTML.
  2. Step 2: Apply style to all matching elements

    All <p> elements will have their text color changed to red.
  3. Final Answer:

    Styles all <p> elements on the page -> Option A
  4. Quick Check:

    Element selector targets all tags named in selector [OK]
Hint: Element selectors target all tags by name, no class or id needed [OK]
Common Mistakes:
  • Confusing element selector with class or id selectors
  • Thinking it styles only one element
  • Assuming it targets elements with a class or id
2. Which of the following is the correct syntax to select all <h1> elements in CSS?
easy
A. #h1 { font-size: 2rem; }
B. .h1 { font-size: 2rem; }
C. h1 { font-size: 2rem; }
D. *h1 { font-size: 2rem; }

Solution

  1. Step 1: Identify element selector syntax

    Element selectors use the tag name directly, like h1.
  2. Step 2: Check other options

    .h1 { font-size: 2rem; } uses a class selector, #h1 { font-size: 2rem; } uses an id selector, *h1 { font-size: 2rem; } is invalid syntax.
  3. Final Answer:

    h1 { font-size: 2rem; } -> Option C
  4. Quick Check:

    Element selector = tag name only [OK]
Hint: Element selectors are just tag names without dots or hashes [OK]
Common Mistakes:
  • Using dot (.) or hash (#) before tag name
  • Adding invalid characters before tag name
  • Confusing element selector with universal selector
3. Given this HTML:
<div>
  <p>Hello</p>
  <p>World</p>
  <span>!</span>
</div>

And this CSS:
p { color: blue; }

What color will the text inside the <span> be?
medium
A. Blue
B. Default (usually black)
C. Red
D. Green

Solution

  1. Step 1: Identify which elements the selector targets

    The CSS selector p styles only <p> elements, not <span>.
  2. Step 2: Determine the <span> text color

    Since <span> is not targeted, it keeps the default color (usually black).
  3. Final Answer:

    Default (usually black) -> Option B
  4. Quick Check:

    Element selector affects only matching tags [OK]
Hint: Element selectors style only their tag, others stay default [OK]
Common Mistakes:
  • Assuming all text changes color
  • Confusing element selector with universal selector
  • Thinking styles cascade to all child elements automatically
4. What is wrong with this CSS code if the goal is to style all <li> elements?
.li { color: green; }
medium
A. It selects elements with class 'li', not <li> tags
B. It will style all <li> elements correctly
C. It selects elements with id 'li', not <li> tags
D. It is missing a semicolon

Solution

  1. Step 1: Analyze the selector syntax

    The selector .li targets elements with class 'li', not the <li> tag.
  2. Step 2: Identify correct selector for <li>

    To select all <li> elements, use li without a dot.
  3. Final Answer:

    It selects elements with class 'li', not <li> tags -> Option A
  4. Quick Check:

    Dot means class selector, not element selector [OK]
Hint: Dot means class, no dot means element tag [OK]
Common Mistakes:
  • Using dot before tag name
  • Confusing class and element selectors
  • Ignoring selector syntax rules
5. You want to make all <button> elements have a blue background and white text. Which CSS code correctly uses an element selector and ensures accessibility with good contrast?
hard
A. button { background-color: lightblue; color: lightgray; }
B. #button { background-color: blue; color: white; }
C. .button { background-color: blue; color: white; }
D. button { background-color: #0055cc; color: #ffffff; padding: 1rem; border-radius: 0.25rem; }

Solution

  1. Step 1: Confirm element selector usage

    button { background-color: #0055cc; color: #ffffff; padding: 1rem; border-radius: 0.25rem; } uses button without dot or hash, correctly selecting all <button> elements.
  2. Step 2: Check color contrast and styling

    button { background-color: #0055cc; color: #ffffff; padding: 1rem; border-radius: 0.25rem; } uses a dark blue background (#0055cc) and white text (#ffffff), ensuring good contrast and accessibility. It also adds padding and border-radius for better usability.
  3. Final Answer:

    button { background-color: #0055cc; color: #ffffff; padding: 1rem; border-radius: 0.25rem; } -> Option D
  4. Quick Check:

    Element selector + accessible colors = button { background-color: #0055cc; color: #ffffff; padding: 1rem; border-radius: 0.25rem; } [OK]
Hint: Use tag name only and pick colors with strong contrast [OK]
Common Mistakes:
  • Using id or class selectors instead of element selector
  • Choosing low contrast colors hurting accessibility
  • Forgetting padding or border-radius for better button look