CSS Selectors, Simplified
Tags: css, webdev
Published: 2020-08-12 20:52:55

When I started out with CSS, I always used the class and Id selectors and nothing else. 
With time I learnt about some other ways of selecting items in CSS and I'll be sharing them with you with illustrations of how they work.

So, let's get to it.🎾

## What are CSS selectors?
CSS selectors are a means through which we're able to identify, find or call up elements in HTML so we can style it.
The most common selectors are the `name of element` , `class selectors(.)` and `id selectors (#)` which are also referred to as `simple selectors`.
```javascript
<html>
  <head>
     <style>
        body{
        background-color:#000;
        }
        .title{
         color:dodgerblue;
         }
        #wrapper{
        display:flex;
        justify-content: center;
        margin:0;
        padding:0;
    </style>
  </head>
       <body>
       <div id="wrapper">
       <div class="title">
       <p> This is the first text. </p>
       <p class="second-paragraph"> This is the second text. </p>
       </div>
       <p>This is the third paragraph</p>
       </div>
       </body>
</html>
```
In the example above, `body`, `title` class and `wrapper` id were used to refer to the div elements  bearing them.
We can also combine these selectors if we want to:
```javascript
p .second-paragraph{
color:red;
}
```
In the code above, a `name` and `class` selector were used to ensure that only the `p` element with a class `second-paragraph` will be selected.

There are other selectors as well, which are the main focus of this article. 
Let's take a look at the `*`, `>`, `~`,  `space`, `,` and `nth-of-type` selectors, shall we?

### The `*` Selector
This selector is called the **universal Selector** because it is used to select all the elements in a page. This means that any style given to the universal selector, affects every element in that very page.
The code snippet below will style every element of the page to have grey-colored and right-aligned texts.

```javascript
*{
color:grey;
text-align:right;
}
```


### The `>` Selector and The `~` Selector
This selectors are also known as combinators. Both are used to achieve different selection results.
While the `>` is used to select children of a particular element, the `~` selector is used to select all the siblings of a particular parent element.
An example to illustrate.
```javascript
div > p{
color:blue
}
```
The code above is used to select all `<p>` elements that are the children of the div elements.

Now, look at this one
```javascript
div~p{
color:red;
}
Here, every `<p>` element which is a sibling to a `div` element is styled red. In our previous example (the first code snippet), the paragraph which is on the same level and shares the same direct parent with any `<div>` will take up the red color.
```

### The `Space` Selector
A lot of people confuse `>` selector and the `space` selector.
I'll try to clarify that.
The `space` selector is used to select every of a particular element which is inside another element.
For instance
```javascript
div p{
color:green;
}
```
The code above will select all `<p>` tags which are inside the `<div>` element, even if other elements are in between them.
Now, the difference between this and the `>` selector is that the `>` is only used to select a particular element which is a direct descendant.

So if we have
```javascript
div>p{
color:green;
}
```
Only `<p>` elements which are direct descendants of the `<div>` will be colored green.


### The `,` Selector
This, also called the group selector is used to group classes or names with the same styles to avoid repetition of codes.
The code below,
```javascript
h3{
color:blue;
text-align:center;
font-weight:100;
}
p{
color:blue;
text-align:center;
font-weight:100;
}
.mid-text{
color:blue;
text-align:center;
font-weight:100;
}
```

can be rewritten as
```javascript
h3,p,.mid-text{
color:blue;
text-align:center;
font-weight:100;
}
```


### The `nth-of-type` selector
This selector can be used to select the `nth` child of parents elements of a particular type. n can be a number or keyword.
Consider having the following codes:
```javascript
<html>
       <head>
              <style>
                   div:nth-of-type(1){
                    color:red;
                    }
                    div:nth-of-type(2){
                    color:blue;
                    }
                    div:nth-of-type(3){
                    color:green;
                    }
              </style>
       </head>
       <body>
             <div>
                 <p>This is the first paragraph</p>
             </div>
             <div>
                 <p>This is the first paragraph</p>
             </div>
             <div>
                 <p>This is the first paragraph</p>
             </div>
       </body>
</html>
```

Yes, feel free to reach out to me on  [twitter](https://twitter.com/msamarachukwu) , and thanks for reading.