Skip to main content

Command Palette

Search for a command to run...

CSS Selectors 101: Targeting Elements with Precision

Updated
5 min read
CSS Selectors 101: Targeting Elements with Precision
H
CS undergrad | Tech enthusiast | Focusing on Web Dev • DSA • ML | Building skills for real-world impact

TL;DR

Now that we’re familiar with HTML and how it structures a webpage, the next step is learning how to style that structure. CSS selectors allow us to precisely target HTML elements and control their appearance, making web pages visually appealing and well-organized. Understanding selectors is essential for applying styles efficiently and building polished user interfaces.


CSS Selectors: The Foundation of Styling

CSS Selectors are patterns used in CSS to choose and target HTML elements for styling. They tell the browser which elements should have a set of CSS rules, letting you control colors, layout, fonts, spacing, and more.

CSS selectors can be thought of as ways to choose elements on a webpage. Just like you might point to a specific item in a list, selectors tell the browser exactly which HTML elements you want to style.

Why CSS selectors are needed

They allow us to:

  • Apply styles to specific elements instead of everything

  • Keep CSS organized and reusable

  • Separate structure (HTML) from presentation (CSS)

  • Build consistent and maintainable designs

In simple terms, CSS selectors connect CSS styles to HTML elements, making it possible to style specific parts of a webpage with precision.


Different Selectors

Let’s look at the most common selectors, starting simple and building up.

  1. Element Selector

The element selector targets HTML elements by their tag name.

p {
  color: blue;
}

The element selector styles all <p> elements, offering a simple and broad approach useful for basic, global styling.

  1. Class Selector

The class selector targets elements with a specific class attribute.

<p class="highlight">Important text</p>
.highlight {
  background-color: yellow;
}

The class selector starts with a dot (.), can be reused on multiple elements, and is more precise than element selectors.

  1. ID Selector

The ID selector targets a single, unique element.

<h1 id="main-title">Welcome</h1>
#main-title {
  font-size: 32px;
}

The ID selector starts with #, should be used only once per page, and is very specific and powerful.

  1. Group Selector

The group selector lets you apply the same styles to multiple selectors at once.

h1, h2, p {
  font-family: Arial;
}

The group selector reduces repetition and keeps CSS clean and readable.

  1. Descendant Selector

The descendant selector targets elements inside other elements.

div p {
  color: green;
}

Heres, it styles <p> elements only inside a <div>, helping apply styles based on structure.


Basic Selector Priority

When multiple CSS rules target the same element, the browser decides which style to apply based on selector priority (specificity).

At a very basic level, the priority order is:

Element selector  <  Class selector  <  ID selector

where:

  • Element selector (p, div) has the lowest priority

  • Class selector (.box, .highlight) has the higher priority than element selector

  • ID selector (#header, #main) has the highest priority among all

This concludes that if we apply an element selector to a specific HTML tag and then apply a class selector, the CSS will override the element's style with the class selector's style. The same applies to the ID selector as well.

Understanding this basic order helps you predict which CSS rule will be applied, preventing styling conflicts.


Pseudo-Classes

Pseudo-classes are keywords added to selectors that define a special state of an element rather than the element itself. They allow you to style elements based on user interaction or position.

Common examples include:

  • :hover – when the user places the mouse over an element

  • :active – when an element is being clicked

  • :focus – when an input element is selected

  • :first-child – selects the first child of a parent

Example:

button:hover {
  background-color: blue;
}

Here, the button changes color only when hovered.

In simple terms, pseudo-classes let you style how elements behave, not just how they normally look.


Before and After Styling Example

Before CSS:

<div id="container">
  <h1>Main Heading</h1>
  <p class="text">This is a paragraph.</p>
  <p>This is another paragraph.</p>
  <a href="#">Click me</a>
</div>

After CSS:

/*This is element selector*/
p {
  color: gray;
}

/*This is class selector*/
.text {
  color: blue;
  font-weight: bold;
}

/*This is ID selector*/
#container {
  border: 2px solid black;
  padding: 10px;
}

/*This is group selector*/
h1, p {
  font-family: Arial, sans-serif;
}

/*This is descendant selector*/
div p {
  font-size: 18px;
}

/*This is pseudo-class*/ 
a:hover {
  color: red;
  text-decoration: underline;
}

https://codepen.io/rajharsh/embed/KwMQqJy

---

Conclusion

CSS selectors are the foundation of CSS because they decide which elements get styled. No matter how advanced your styles are, they only work if the right elements are selected first. From simple color changes to complex layouts and interactions, everything in CSS starts with selectors. Understanding selectors gives you control, clarity, and confidence when styling webpages, making them one of the most important concepts to master in CSS.


If you enjoyed this article, check out my other blogs on this profile.

🔗 Connect with me:
LinkedIn | GitHub | X (Twitter)