Comece criando o arquivo HTML:
Primeiro vamos conhecer o :nth-child, que permite escolhe filhos específicos de um determinado tipo:
li:nth-child(2) {
    color: #f00;
}

li:nth-child(3n) {
    color: #00f;
}
  1. No CSS também temos seletores para diversos estados específicos, como o hover, ou seja, ao passar o cursos sobre o elemento:Obs.: outros estados como o focus seguem o mesmo princípio. li:hover { background-color: #999; }
li:hover {
    background-color: #999;
}
Também temos o que chamamos de pseudo-elementos. Cada elemento no HTML pode possuir dois elementos extras associados a ele, um antes e outro depois. Podemos referenciar esses pseudo-elementos através dos seletores ::before e ::after:
li::before {
  content: "(antes) ";
}

li::after {
  content: " (depois)";
}

Semelhante ao nth-child, temos o first-child e last-child para primeiros e últimos filhos de um tipo de elemento, respectivamente:
li:first-child {
    color: rgb(255, 174, 0);
}

li:last-child {
    color: rgb(255, 0, 179);
}
Por fim, também temos o :not(), que permite “negar”, ou inverter, um determinado seletor. Nesse exemplo o usamos para estilizar os filhos que não são o primeiro:
li:not(:first-child) {
    color: rgb(0, 255, 255);
}
Existem muitos outros seletores, então não temos como falar sobre todos eles agora. Mas sua utilização é parecida com esses que vimos, que são os mais comuns, então a partir de agora você deve ser capaz de pesquisar na documentação e utilizar novos seletores a medida que forem necessários.