Bird
Raised Fist0
CSSmarkup~20 mins

Before pseudo-element in CSS - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Before Pseudo-element Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
rendering
intermediate
2:00remaining
What will be displayed by this CSS?
Given the HTML and CSS below, what text will appear before the paragraph content in the browser?
CSS
/* HTML */
<p class="note">Remember to save your work.</p>

/* CSS */
p.note::before {
  content: "Note: ";
  color: red;
  font-weight: bold;
}
AThe text 'Remember to save your work.' appears in red and bold with no prefix.
BThe text 'Note: ' appears after the paragraph content.
COnly 'Remember to save your work.' appears with no changes.
DThe text 'Note: ' in red and bold appears before 'Remember to save your work.'
Attempts:
2 left
💡 Hint
The ::before pseudo-element inserts content before the element's actual content.
selector
intermediate
2:00remaining
Which selector correctly applies ::before to all list items?
You want to add a dash before every list item in an unordered list. Which CSS selector correctly targets all
  • elements to add content before them?
  • Aul::before li
    Bul li::before
    Cli::before ul
    Dul li:before
    Attempts:
    2 left
    💡 Hint
    The ::before pseudo-element is attached directly to the element you want to style.
    🧠 Conceptual
    advanced
    2:00remaining
    Why might ::before content not appear?
    Consider this CSS: p::before { content: "Hello"; display: block; width: 0; height: 0; } Why might the 'Hello' text not be visible in the browser?
    ABecause ::before only works on block elements, and <p> is inline.
    BBecause content property is only for images, not text.
    CBecause width and height are zero, the content has no visible area to display.
    DBecause display: block hides the content.
    Attempts:
    2 left
    💡 Hint
    Think about how width and height affect visibility of elements.
    accessibility
    advanced
    2:00remaining
    What is an accessibility concern with ::before content?
    If you add important text using ::before, what accessibility issue might arise?
    AScreen readers may not read the ::before content, so important info can be missed.
    B::before content causes color contrast issues automatically.
    C::before content disables keyboard navigation on the element.
    D::before content is always read first by screen readers, causing confusion.
    Attempts:
    2 left
    💡 Hint
    Think about how assistive technologies read content added by CSS.
    📝 Syntax
    expert
    2:00remaining
    What error occurs with this CSS?
    What happens when you use this CSS code? h1::before { content: Hello; color: blue; }
    CSS
    h1::before {
      content: Hello;
      color: blue;
    }
    AThe browser ignores the content property because Hello is not in quotes, so no text appears.
    BThe browser shows the word Hello before every h1 in blue.
    CA syntax error stops all CSS from loading.
    DThe color property is ignored but content shows correctly.
    Attempts:
    2 left
    💡 Hint
    The content property requires text to be in quotes.

    Practice

    (1/5)
    1. What does the CSS ::before pseudo-element do?
    easy
    A. It changes the background color of an element.
    B. It inserts content before the element's main content without changing HTML.
    C. It removes the element from the page.
    D. It adds content after the element's main content.

    Solution

    1. Step 1: Understand the role of ::before

      The ::before pseudo-element inserts content before the main content of an element without modifying the HTML structure.
    2. Step 2: Compare with other options

      Options B, C, and D describe different CSS behaviors unrelated to ::before. It adds content after the element's main content. describes ::after, not ::before.
    3. Final Answer:

      It inserts content before the element's main content without changing HTML. -> Option B
    4. Quick Check:

      ::before adds content before = A [OK]
    Hint: Remember ::before adds content before element text [OK]
    Common Mistakes:
    • Confusing ::before with ::after
    • Thinking it changes HTML structure
    • Assuming it styles background only
    2. Which CSS property is required to display content with ::before?
    easy
    A. display
    B. visibility
    C. position
    D. content

    Solution

    1. Step 1: Identify the key property for ::before

      The content property is mandatory to show anything with ::before. Without it, no content appears.
    2. Step 2: Check other properties

      Properties like display, position, and visibility affect layout or visibility but do not create content.
    3. Final Answer:

      content -> Option D
    4. Quick Check:

      content property shows ::before content = B [OK]
    Hint: Use content property to show ::before content [OK]
    Common Mistakes:
    • Forgetting to add content property
    • Using display instead of content
    • Assuming position creates content
    3. What will be the visible output of this CSS?
    p::before { content: "Hello "; }
    <p>Given HTML: <p>World</p>
    medium
    A. Hello World
    B. World Hello
    C. Hello
    D. World

    Solution

    1. Step 1: Understand ::before content insertion

      The ::before adds "Hello " before the paragraph's original text "World".
    2. Step 2: Combine the inserted and original text

      The final visible text is "Hello World" because the pseudo-element content appears before the original content.
    3. Final Answer:

      Hello World -> Option A
    4. Quick Check:

      Inserted content before text = D [OK]
    Hint: ::before content appears before element text [OK]
    Common Mistakes:
    • Ignoring the original text
    • Thinking content replaces text
    • Confusing order of content
    4. Identify the error in this CSS code:
    h1::before { content; "Note: "; color: red; }
    medium
    A. Color property cannot be used with ::before
    B. Wrong pseudo-element syntax
    C. Missing colon after content property
    D. content value must be numeric

    Solution

    1. Step 1: Check syntax of content property

      The code uses content; "Note: " which is incorrect. It should be content: "Note: " with a colon.
    2. Step 2: Verify other parts

      The pseudo-element syntax h1::before is correct, color can be used, and content can be any string, so other options are wrong.
    3. Final Answer:

      Missing colon after content property -> Option C
    4. Quick Check:

      Property syntax needs colon = C [OK]
    Hint: Use colon after property names in CSS [OK]
    Common Mistakes:
    • Using semicolon instead of colon after property
    • Miswriting pseudo-element syntax
    • Thinking color can't style ::before
    5. How can you use ::before to add a red asterisk (*) before all required form labels for accessibility?
    hard
    A. label.required::before { content: "*"; color: red; }
    B. label::before { content: "*"; color: red; }
    C. label.required { content: "*"; color: red; }
    D. label.required::after { content: "*"; color: red; }

    Solution

    1. Step 1: Target only required labels

      Use the selector label.required::before to add content only before labels with class "required".
    2. Step 2: Add red asterisk before label text

      Set content: "*" and color: red to show a red star before the label text for accessibility.
    3. Final Answer:

      label.required::before { content: "*"; color: red; } -> Option A
    4. Quick Check:

      Use ::before with content and color on required labels = A [OK]
    Hint: Use class selector with ::before and content '*' [OK]
    Common Mistakes:
    • Using ::after instead of ::before
    • Adding content to label without ::before
    • Applying content property directly on label without pseudo-element