7 Advanced CSS Selectors You Should Know

M Mainul Hasan - Sep 19 '23 - - Dev Community

CSS is indispensable when we talk about web design and development. Basic selectors like classes (.) and IDs (#) might be familiar, but some advanced selectors can make your code efficient and elegant. Let’s explore 7 of these lesser-known yet incredibly powerful selectors.

1. Child Selector (>)

parent > child

This selector targets direct child elements of a specified parent, ignoring deeper nested elements.

ul > li { 
    color: blue; 
}
Enter fullscreen mode Exit fullscreen mode

This will style only the direct li children of ul, leaving nested li elements unaffected. Perfect for when you need precision and want to ensure styles don’t unintentionally cascade to nested elements. All modern browsers and as far back as IE7 support this feature.

2. Adjacent Sibling Selector (+)

element1 + element2

If you’ve ever needed to target an element immediately following another, the Adjacent Sibling Selector (+) is your go-to.

h2 + p {
    margin-top: 10px;
}
Enter fullscreen mode Exit fullscreen mode

This provides a 10px top margin to any paragraph immediately following an h2. Especially handy for managing spacing after specific elements.

3. Attribute Selector ([attr=value])

element[attr=value]

Matches elements based on their attribute and their value.

input[type="text"] {
    border: 1px solid gray;
}
Enter fullscreen mode Exit fullscreen mode

Styles all input fields of type text with a gray border. This is useful for styling specific form elements or elements with unique data attributes.

4. Pseudo-classes (:pseudo-class)

element:pseudo-class

This selector focuses on elements by their state, position, or other unique traits rather than their structure.

a:hover {
    color: red;
}
Enter fullscreen mode Exit fullscreen mode

Changes link color to red when hovered over. Enhance interactivity (like hover and focus states) and select elements based on position (like :first-child).

5. Not Selector (:not())

element:not(selector)

The Not Selector :not() excludes specific elements from being styled.

p:not(.special) {
    font-weight: normal;
}
Enter fullscreen mode Exit fullscreen mode

Styles all paragraphs without the class “special” to have a normal font-weight. This allows you to apply broad styles while exempting particular cases.

6. Universal Selector (*)

*

The Universal Selector * is a wildcard that matches every element on a webpage.

* {
    box-sizing: border-box;
}
Enter fullscreen mode Exit fullscreen mode

Assigns the box-sizing property to all elements, making layout calculations more intuitive. Useful for global styles or CSS resets.

7. Grouping Selector (,)

selector1, selector2, …

Last but not least, the Grouping Selector lets you apply the same styles to multiple elements.

h1, h2, h3 {
    font-family: 'Arial', sans-serif;
}
Enter fullscreen mode Exit fullscreen mode

Sets a consistent font across the three header levels. A time-saving approach when various elements share a set of styles.

Conclusion

CSS offers an incredible depth and flexibility that becomes more apparent as you explore its advanced selectors. You might not often use these selectors, but if you know how to use them, you can simplify your code and improve your style.

🖥️ Before you head back to your coding zone, consider these quick actions:

❤️ & 🦄 Show some love or sprinkle some unicorn magic on this article
💬 Curious or have insights? Drop your thoughts in the comments
🔄 Spread the word among our developer community

Your feedback is invaluable. It empowers me to craft even better tech content.

🌟 Thank you for being such a fantastic supporter! Every like, comment, and share shines a light on our tech community.

Feel free to connect with me on Twitter or LinkedIn.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .