You are currently viewing CSS Selectors: :not() Selector

CSS Selectors: :not() Selector

Imagine you’re throwing a party and want to invite everyone except those who have already attended too many events this month. Instead of checking each person individually, you have a list of exceptions. In web design, the :not() selector in CSS works similarly. It allows you to apply styles to elements that do not match a certain selector, giving you more control and flexibility in your design.

What is the :not() Selector?

The :not() selector is a powerful CSS pseudo-class that selects every element except the one specified. It’s perfect for excluding specific elements from a set of matched elements, making your styles more precise and versatile.

Here’s how it looks:

selector:not(exception) {
  property: value;
}

Why Use the :not() Selector?

  • Precise Targeting: The :not() selector allows you to apply styles to all elements except those that match a specified selector, providing precise control over your designs.
  • Dynamic Styling: It enables you to create more dynamic and flexible styles by excluding certain elements from your styling rules.
  • Simplified Code: Using the :not() selector can reduce the need for complex CSS rules, keeping your code clean and maintainable.

Practical Examples

Let’s explore some practical examples to see how the :not() selector can be used effectively.

Example 1: Styling All Elements Except a Specific Class

You can style all paragraphs except those with a specific class.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Not Selector Example</title>
	
    <style>
	
        p:not(.exclude) {
            color: blue;
            font-weight: bold;
        }
		
    </style>
</head>
<body>

    <p>This paragraph will be styled.</p>
    <p class="exclude">This paragraph will not be styled.</p>
    <p>This paragraph will also be styled.</p>
	
</body>
</html>

In this example, the p:not(.exclude) selector styles all paragraphs except those with the class exclude, making the text blue and bold.

Example 2: Styling All List Items Except the First

You can style all list items except the first one.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Not Selector Example</title>
	
    <style>
	
        li:not(:first-child) {
            background-color: lightgray;
        }
		
    </style>
	
</head>
<body>

    <ul>
        <li>First item</li>
        <li>Second item</li>
        <li>Third item</li>
    </ul>
	
</body>
</html>

Here, the li:not(:first-child) selector applies a light gray background to all list items except the first one, helping to highlight the initial item.

Example 3: Styling All Inputs Except a Specific Type

You can style all input fields except those of a specific type.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Not Selector Example</title>
	
    <style>
	
        input:not([type="submit"]) {
            border: 2px solid green;
            padding: 5px;
        }
		
    </style>
	
</head>
<body>

    <form>
        <input type="text" placeholder="Text input">
        <input type="password" placeholder="Password input">
        <input type="submit" value="Submit">
    </form>
	
</body>
</html>

In this example, the input:not([type="submit"]) selector styles all input fields except those with the type submit, giving them a green border and padding.

Example 4: Styling All Links Except Those With a Specific Attribute

You can style all anchor tags except those with a specific attribute.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Not Selector Example</title>
	
    <style>
	
        a:not([target="_blank"]) {
            color: red;
        }
		
    </style>
</head>
<body>

    <a href="https://example.com" target="_blank">External Link</a>
    <a href="https://another.com">Internal Link</a>
	
</body>
</html>

Here, the a:not([target="_blank"]) selector styles all anchor tags except those with the target="_blank" attribute, making the text red.

Conclusion

The :not() selector is a versatile and powerful tool in CSS, allowing you to apply styles to all elements except those that match a specified selector. By using the :not() selector, you can create more dynamic, flexible, and maintainable styles. Whether you’re excluding specific classes, types, or attributes, the :not() selector helps you achieve precise and effective styling. So, the next time you want to exclude certain elements from your CSS rules, remember the :not() selector — your key to advanced and targeted styling.

Leave a Reply