Questions
48 of 50
1What is a pseudo-class in CSS?
2How are pseudo-classes different from pseudo-elements?
3What is the syntax of a pseudo-class in CSS?
4Give some commonly used pseudo-classes.
5What does the :hover pseudo-class do?
6What’s the purpose of the :active pseudo-class?
7How does the :visited pseudo-class work for links?
8What is the :focus pseudo-class used for?
9What does the :checked pseudo-class do?
10How does the :disabled pseudo-class behave?
11What is the difference between :first-child and :first-of-type?
12How do :nth-child() and :nth-of-type() differ?
13How do you select every odd or even element using pseudo-classes?
14How can you style an element when it’s being hovered over along with its child?
15What does the :not() pseudo-class do?
16How can you use multiple pseudo-classes together?
17What is the difference between :link and :visited?
18What does the :target pseudo-class represent?
19How can you use :empty to detect empty elements?
20How does the :root pseudo-class differ from the html selector?
21What does the :valid and :invalid pseudo-class do?
22How can you use :required and :optional pseudo-classes in forms?
23What is the use of :in-range and :out-of-range?
24What does :read-only and :read-write do?
25How can you style an input field when it’s autofilled?
26How does the :focus-within pseudo-class work?
27What’s the difference between :focus and :focus-visible?
28What is the purpose of the :placeholder-shown pseudo-class?
29How can you style a checkbox when it is checked or unchecked?
30How can you style invalid form inputs without JavaScript?
31Can pseudo-classes be chained together? Give an example.
32What is the specificity of pseudo-classes compared to normal selectors?
33How can you use :not() effectively to exclude elements from styling?
34How does :has() pseudo-class work, and why is it powerful?
35Is :has() supported in all browsers?
36How does :is() differ from :where() in terms of specificity?
37How can you combine :is() or :where() with other selectors for cleaner code?
38What’s the difference between :nth-child() and :nth-last-child()?
39How can you style only the last element of a list using pseudo-classes?
40What does the :lang() pseudo-class do?
41How do you change a button’s color when hovered but not when disabled?
42How can you highlight the current section in a menu using :target?
43How can you style a form field differently when focused and valid?
44How do you style every third list item differently?
45How can you style alternate table rows without adding extra classes?
46How do you hide empty <p> tags using pseudo-classes?
47How can you style the parent when any child inside it is focused?
48How can you highlight a link only when it’s both focused and hovered?
49How can you style the first letter of only the first paragraph using pseudo-classes?
50How would you use :has() to select a <div> that contains an image?
48 / 50

How can you highlight a link only when it’s both focused and hovered?

Highlighting a Link When It’s Both Focused and Hovered in CSS

You can style a link only when it is both focused and hovered using a combined CSS pseudo-class selector. This allows you to apply specific styles only when both interaction states are active simultaneously.

Key Points
  1. 1

    Chain pseudo-classes like :hover and :focus together to target elements in both states.

  2. 2

    This combination improves accessibility and user experience when navigating with both mouse and keyboard.

  3. 3

    The order of pseudo-classes in the selector does not matter; a:focus:hover and a:hover:focus are equivalent.

Example: Highlight a Link When Both Focused and Hovered

In this example, the link changes color when hovered, shows an outline when focused, and highlights with a background color only when both conditions are met. This ensures clear visual feedback for users using both mouse and keyboard navigation.

Best Practices
  1. 1

    Use :focus for keyboard accessibility and :hover for mouse interaction.

  2. 2

    Combine them carefully to enhance interactivity without overwhelming the design.

  3. 3

    Always maintain visible focus indicators for accessibility compliance.

  4. 4

    Test with both mouse and keyboard to ensure consistent behavior.

Difficulty: 6/10
Topics: CSS pseudo-classes, focus-visible, hover-state conflicts

Scenario Questions

0-2 years experience
  1. 1

    How would you write CSS to highlight a link only when a user is both tabbing to it and hovering over it with a mouse?

  2. 2

    What happens if you use :focus:hover instead of :focus-visible:hover — why might that break accessibility?

2-5 years experience
  1. 1

    Our link highlights appear even when users navigate with a keyboard — how would you debug and fix this without breaking screen reader usability?

  2. 2

    A designer says the link should highlight on hover but not on focus — but our accessibility audit says otherwise. How do you reconcile this?

5-8 years experience
  1. 1

    We have a complex navigation component where links are dynamically rendered — how would you ensure the :focus-visible:hover style doesn’t cause layout shifts or performance jank on low-end devices?

  2. 2

    In our design system, hover styles are inherited from a global theme — how would you isolate the focused-and-hovered state without creating specificity wars or breaking other components?

8+ years experience
  1. 1

    We’re migrating from a legacy CSS framework that uses JavaScript to simulate hover+focus states — how would you architect a clean, scalable CSS-only replacement that survives cross-team adoption and future accessibility regulations?

  2. 2

    Our component library is used across 15+ products with different accessibility policies — how do you design the hover+focus highlight behavior to be configurable, testable, and maintainable at scale without forcing a one-size-fits-all solution?

Follow-up Questions

  • What happens if the link is inside a modal that traps focus?
  • How would you handle this if the design system already uses :focus for outline styles?
  • Would this behave differently on mobile touch devices?