Publicidade
Em CSS para selecionar um ou mais elementos(tags) HTML que você deseja estilizar fazemos uso de seletores.
Podemos dividir os seletores CSS em cinco categorias:
O seletor universal (*) seleciona todos os elementos HTML na página.
Exemplo: A regra CSS abaixo afetará todos os elementos HTML na página.
p { color: red }
O seletor de elemento seleciona elementos HTML com base no nome do elemento.
Exemplo: Aqui, todos os elementos <p> na página serão alinhados ao centro, com uma cor de texto vermelha.
p {
text-align: center;
color: red;
}
O seletor id usa o atributo id de um elemento HTML para selecionar um elemento específico.
O id de um elemento é único dentro de uma página, então o seletor de id é usado para selecionar um elemento único!
Para selecionar um elemento com um id específico, escreva um caractere hash (#), seguido do id do elemento.
Exemplo: A regra CSS abaixo será aplicada ao elemento HTML com id="para1".
#para1 {
text-align: center;
color: red;
}
O seletor de classe seleciona elementos HTML com um atributo de classe específico.
Para selecionar elementos com uma classe específica, escreva um caractere ponto (.), seguido do nome da classe.
Exemplo: Neste exemplo, todos os elementos HTML com class="center" serão vermelhos e alinhados ao centro.
.center {
text-align: center;
color: red;
}
Você também pode especificar que apenas elementos HTML específicos devem ser afetados por uma classe.
Exemplo: Neste exemplo, apenas os elementos
com class="center" serão vermelhos e alinhados ao centro.
p.center {
text-align: center;
color: red;
}
Elementos HTML também podem se referir a mais de uma classe.
Exemplo: Neste exemplo, o elemento
será estilizado de acordo com class="center" e class="large".
<p class="center large">This paragraph refers to two classes.</p>
O seletor de agrupamento seleciona todos os elementos e classes HTML com as mesmas definições de estilo.
Veja o seguinte código CSS (os elementos h1, h2 e p têm as mesmas definições de estilo):
h1 {
text-align: center;
color: red;
}
h2 {
text-align: center;
color: red;
}
p {
text-align: center;
color: red;
}
Será melhor agrupar os seletores, para minimizar o código.
Para agrupar seletores, separe cada seletor com uma vírgula.
Exemplo: Neste exemplo agrupamos os seletores do código acima.
h1, h2, p {
text-align: center;
color: red;
}
| Seletor | Exemplo | Descrição do exemplo |
|---|---|---|
| #id | #primeironome | Seleciona o elemento com id="primeironome" |
| .classe | .intro | Seleciona todos os elementos com class="intro" |
| elemento.classe | p.intro | Seleciona apenas elementos <p> com class="intro" |
| * | * | Seleciona todos os elementos |
| elemento | p | Seleciona todos os elementos <p> |
| elemento,elemento,.. | div, p | Seleciona todos os elementos <div> e todos os elementos <p> |
Um combinador é algo que explica a relação entre os seletores.
Um seletor CSS pode conter mais de um seletor simples. Entre os seletores simples, podemos incluir um combinador.
Existem quatro combinadores diferentes em CSS:
O seletor descendente corresponde a todos os elementos que são descendentes de um elemento especificado.
O exemplo a seguir seleciona todos os elementos <p> dentro dos elementos <div>:
Exemplo:
div p {
background-color: yellow;
}
O seletor filho seleciona todos os elementos que são filhos de um elemento especificado.
O exemplo a seguir seleciona todos os elementos <p> que são filhos de um elemento <div>:
Exemplo:
div > p {
background-color: yellow;
}
O seletor irmão adjacente é usado para selecionar um elemento que está diretamente após outro elemento específico.
Elementos irmãos devem ter o mesmo elemento pai, e "adjacente" significa "imediatamente a seguir".
O exemplo a seguir seleciona o primeiro elemento <p> que é colocado imediatamente após os elementos <div>:
Exemplo:
div + p {
background-color: yellow;
}
O seletor irmão geral seleciona todos os elementos que são os próximos irmãos de um elemento especificado.
O exemplo a seguir seleciona todos os elementos <p> que são os próximos irmãos dos elementos <div>:
Exemplo:
div ~ p {
background-color: yellow;
}
| Seletor | Exemplo | Descrição do exemplo |
|---|---|---|
| elemento elemento | div p | Seleciona todos os elementos <p> dentro dos elementos <div> |
| elemento>elemento | div > p | Seleciona todos os elementos <p> em que o pai é um elemento <div> |
| elemento+elemento | div + p | Seleciona o primeiro elemento <p> que é colocado imediatamente após os elementos <div> |
| elemento1~elemento2 | p ~ ul | Seleciona cada elemento <ul> que são precedidos por um elemento <p> |
É possível estilizar elementos HTML que possuem atributos ou valores de atributos específicos.
O [attribute] seletor é usado para selecionar elementos com um atributo especificado.
O exemplo a seguir seleciona todos os elementos <a> com um atributo target:
Exemplo:
a[target] {
background-color: yellow;
}
O [attribute="value"] seletor é usado para selecionar elementos com um atributo e valor especificados.
O exemplo a seguir seleciona todos os elementos <a> com um atributo target="_blank":
Exemplo:
a[target="_blank"] {
background-color: yellow;
}
O [attribute~="value"] seletor é usado para selecionar elementos com um valor de atributo contendo uma palavra especificada.
O exemplo a seguir seleciona todos os elementos com um atributo title que contém uma lista de palavras separadas por espaço, uma das quais é "flor":
Exemplo:
[title~="flower"] {
border: 5px solid yellow;
}
O exemplo acima corresponderá a elementos com title="flower", title="summer flower" e title="flower new", mas não title="my-flower" ou title="flowers".
O [attribute|="value"] seletor é usado para selecionar elementos com o atributo especificado, cujo valor pode ser exatamente o valor especificado, ou o valor especificado seguido de um hífen (-).
Nota: O valor deve ser uma palavra inteira, sozinha, como class="top", ou seguida por um hífen( - ), como class="top-text".
Exemplo:
[class|="top"] {
background: yellow;
}
O [attribute^="value"] seletor é usado para selecionar elementos com o atributo especificado, cujo valor começa com o valor especificado.
O exemplo a seguir seleciona todos os elementos com um valor de atributo de classe que começa com "top":
Nota: O valor não precisa ser uma palavra inteira!
Exemplo:
[class^="top"] {
background: yellow;
}
O [attribute$="value"] seletor é usado para selecionar elementos cujo valor de atributo termina com um valor especificado.
O exemplo a seguir seleciona todos os elementos com um valor de atributo de classe que termina com "test":
Nota: O valor não precisa ser uma palavra inteira!
Exemplo:
[class$="test"] {
background: yellow;
}
O [attribute*="value"] seletor é usado para selecionar elementos cujo valor de atributo contém um valor especificado.
O exemplo a seguir seleciona todos os elementos com um valor de atributo de classe que contém "te":
Nota: O valor não precisa ser uma palavra inteira!
Exemplo:
[class*="te"] {
background: yellow;
}
Os seletores de atributo podem ser úteis para estilizar formulários sem classe ou ID:
Exemplo:
input[type="text"] {
width: 150px;
display: block;
margin-bottom: 10px;
background-color: yellow;
}
input[type="button"] {
width: 120px;
margin-left: 35px;
display: block;
}
| Seletor | Exemplo | Descrição do exemplo |
|---|---|---|
| [atributo] | [target] | Seleciona todos os elementos com um atributo de destino |
| [atributo=valor] | [target=_blank] | Seleciona todos os elementos com target="_blank" |
| [atributo~=valor] | [title~=flower] | Seleciona todos os elementos com um atributo title contendo a palavra "flor" |
| [atributo|=valor] | [lang|=en] | Seleciona todos os elementos com um valor de atributo lang começando com "en" |
| [atributo^=valor] | a[href^="https"] | Seleciona cada elemento <a> cujo valor de atributo href começa com "https" |
| [atributo$=valor] | a[href$=".pdf"] | Seleciona cada elemento <a> cujo valor de atributo href termina com ".pdf" |
| [atributo*=valor] | a[href*="w3schools"] | Seleciona cada elemento <a> cujo valor de atributo href contém a substring "w3escolas" |
O que são pseudoclasses?
Uma pseudo-classe é usada para definir um estado especial de um elemento.
Por exemplo, pode ser usado para:
A sintaxe das pseudoclasses:
Exemplo:
selector:pseudo-class {
property: value;
}
Os links podem ser exibidos de diferentes maneiras:
Exemplo:
/* unvisited link */
a:link {
color: #FF0000;
}
/* visited link */
a:visited {
color: #00FF00;
}
/* mouse over link */
a:hover {
color: #FF00FF;
}
/* selected link */
a:active {
color: #0000FF;
}
Nota: a:hover DEVE vir depois a:linke a:visited na definição CSS para ser eficaz! a:active DEVE vir depois a:hover na definição CSS para ser eficaz! Os nomes de pseudoclasses não diferenciam maiúsculas de minúsculas.
Pseudo-classes podem ser combinadas com classes HTML:
Quando você passa o mouse sobre o link no exemplo, ele muda de cor:
Exemplo:
a.highlight:hover {
color: #ff0000;
}
Passe o mouse em <div> Um exemplo de uso da :hover pseudoclasse em um elemento <div>:
Exemplo:
div:hover {
background-color: blue;
}
Dica de ferramenta simples.
Exemplo: Passe o mouse sobre um elemento <div> para mostrar um elemento <p> (como uma dica de ferramenta).
p {
display: none;
background-color: yellow;
padding: 20px;
}
div:hover p {
display: block;
}
A :first-child pseudoclasse corresponde a um elemento especificado que é o primeiro filho de outro elemento.
Corresponde ao primeiro elemento <p>.
No exemplo a seguir, o seletor corresponde a qualquer elemento <p> que seja o primeiro filho de qualquer elemento:
Exemplo:
p:first-child {
color: blue;
}
No exemplo a seguir, o seletor corresponde ao primeiro elemento <i> em todos os elementos <p>:
Exemplo:
p i:first-child {
color: blue;
}
No exemplo a seguir, o seletor corresponde a todos os elementos <i> em elementos <p> que são o primeiro filho de outro elemento:
Exemplo:
p:first-child i {
color: blue;
}
A :lang pseudo-classe permite definir regras especiais para diferentes idiomas.
No exemplo abaixo, :lang define as aspas para elementos <q> com lang="no":
Exemplo:
<html>
<head>
<style>
q:lang(no) {
quotes: "~""~";
}
</style>
</head>
<body>
<p>Some text <q lang="no">A quote in a paragraph</q> Some text.</p>
</body>
</html>
| Seletor | Exemplo | Descrição do exemplo |
|---|---|---|
| :active | a:active | Seleciona o link ativo |
| :checked | input:checked | Seleciona todos os elementos <input> |
| :disabled | input:disabled | Seleciona todos os elementos <input> |
| :empty | p:empty | Seleciona todos os elementos <p> que não tem filhos |
| :enabled | input:enabled | Seleciona todos os elementos <input> |
| :first-child | p:first-child | Seleciona todos os elementos <p> que é o primeiro filho de seu pai |
| :first-of-type | p:first-of-type | Seleciona todos os elementos <p> que é o primeiro elemento <p> de seu pai |
| :focus | input:focus | Seleciona o elemento <entrada> que tem foco |
| :hover | a:hover | Seleciona links ao passar o mouse |
| :in-range | input:in-range | Seleciona elementos <entrada> com um valor dentro de um intervalo especificado |
| :invalid | input:invalid | Seleciona todos os elementos <entradas> com valor inválido |
| :lang(language) | p:lang(it) | Seleciona cada elemento <p> com um valor de atributo lang começando com "it" |
| :last-child | p:last-child | Seleciona todos os elementos <p> que é o último filho de seu pai |
| :last-of-type | p:last-of-type | Seleciona cada elemento <p> que é o último elemento <p> de seu pai |
| :link | a:link | Seleciona todos os links não visitados |
| :not(selector) | :not(p) | Seleciona todos os elementos que não são um elemento <p> |
| :nth-child(n) | p:nth-child(2) | Seleciona cada elemento <p> que é o segundo filho de seu pai |
| :nth-last-child(n) | p:nth-last-child(2) | Seleciona cada elemento <p> que é o segundo filho de seu pai, contando do último filho |
| :nth-last-of-type(n) | p:nth-last-of-type(2) | Seleciona cada elemento <p> que é o segundo elemento <p> de seu pai, contando do último filho |
| :nth-of-type(n) | p:nth-of-type(2) | Seleciona cada elemento <p> que é o segundo elemento <p> de seu pai |
| :only-of-type | p:only-of-type | Seleciona cada elemento <p> que é o único elemento <p> de seu pai |
| :only-child | p:only-child | Seleciona cada elemento <p> que é o único filho de seu pai |
| :optional | input:optional | Seleciona todos os elementos <entrada> sem atributo "obrigatório" |
| :out-of-range | input:out-of-range | Seleciona todos os elementos <entrada> com um valor fora de um intervalo especificado |
| :read-only | input:read-only | Seleciona todos os elementos <entrada> com um atributo "readonly" especificado |
| :read-write | input:read-write | Seleciona todos os elementos <entrada> sem atributo "readonly" |
| :required | input:required | Seleciona todos os elementos <entrada> com um atributo "obrigatório" especificado |
| :root | root | Seleciona o elemento raiz do documento |
| :target | #news:target | Seleciona o elemento #news ativo atual (clicou em um URL que contém essa âncora nome) |
| :valid | input:valid | Seleciona todos os elementos <entradas> com um valor válido |
| :visited | a:visited | Seleciona todos os links visitados |
O que são pseudo-elementos?
Um pseudo-elemento CSS é usado para estilizar partes especificadas de um elemento.
Por exemplo, pode ser usado para:
A sintaxe dos pseudo-elementos:
Exemplo:
selector::pseudo-element {
property: value;
}
O ::Pseudo-elemento de primeira linha
O ::first-line pseudo-elemento é usado para adicionar um estilo especial à primeira linha de um texto.
O exemplo a seguir formata a primeira linha do texto em todos os elementos <p>:
Exemplo:
p::first-line {
color: #ff0000;
font-variant: small-caps;
}
Nota: O ::first-line pseudo-elemento só pode ser aplicado a elementos de nível de bloco.
As seguintes propriedades se aplicam ao ::first-line pseudo-elemento:
Observe a notação de dois pontos - ::first-line contra :first-line
Os dois pontos substituiu a notação de dois pontos para pseudo-elementos em CSS3. Esta foi uma tentativa do W3C de distinguir entre pseudo-classes e pseudo-elementos.
A sintaxe de dois pontos foi usada para pseudoclasses e pseudo-elementos em CSS2 e CSS1.
Para compatibilidade com versões anteriores, a sintaxe de dois pontos é aceitável para pseudo-elementos CSS2 e CSS1.
O ::first-letter pseudo-elemento é usado para adicionar um estilo especial à primeira letra de um texto.
Exemplo: o exemplo a seguir formata a primeira letra do texto em todos os elementos <p>.
p::first-letter {
color: #ff0000;
font-size: xx-large;
}
Nota: O ::first-letter pseudo-elemento só pode ser aplicado a elementos de nível de bloco.
As seguintes propriedades se aplicam ao pseudo-elemento ::first-letter:
Pseudo-elementos podem ser combinados com classes HTML:
Exemplo:
p.intro::first-letter {
color: #ff0000;
font-size: 200%;
}
O exemplo acima exibirá a primeira letra dos parágrafos com class="intro", em vermelho e em tamanho maior.
Vários pseudo-elementos também podem ser combinados.
No exemplo a seguir, a primeira letra de um parágrafo será vermelha, em um tamanho de fonte xx grande. O resto da primeira linha será azul e em versalete. O restante do parágrafo terá o tamanho e a cor da fonte padrão:
Exemplo:
p::first-letter {
color: #ff0000;
font-size: xx-large;
}
p::first-line {
color: #0000ff;
font-variant: small-caps;
}
O ::before pseudoelemento pode ser usado para inserir algum conteúdo antes do conteúdo de um elemento.
Exemplo: o exemplo a seguir insere uma imagem antes do conteúdo de cada elemento <h1>
h1::before {
content: url(smiley.gif);
}
O ::after pseudo-elemento pode ser usado para inserir algum conteúdo após o conteúdo de um elemento.
Exemplo: o exemplo a seguir insere uma imagem após o conteúdo de cada elemento <h1>
h1::after {
content: url(smiley.gif);
}
O ::marker pseudo-elemento seleciona os marcadores dos itens da lista.
Exemplo: o exemplo a seguir estiliza os marcadores de itens de lista
::marker {
color: red;
font-size: 23px;
}
O ::selection pseudo-elemento corresponde à parte de um elemento selecionado por um usuário.
As seguintes propriedades CSS podem ser aplicadas a ::selection: color, background, cursore outline.
Exemplo: o exemplo a seguir torna o texto selecionado vermelho em um fundo amarelo:
::selection {
color: red;
background: yellow;
}
| Seletor | Exemplo | Descrição do exemplo |
|---|---|---|
| ::after | p::after | Insira o conteúdo após cada elemento <p> |
| ::before | p::before | Insira o conteúdo antes de cada elemento <p> |
| ::first-letter | p::first-letter | Seleciona a primeira letra de cada elemento <p> |
| ::first-line | p::first-line | Seleciona a primeira linha de cada elemento <p> |
| ::selection | p::selection | Seleciona a parte de um elemento que é selecionado por um usuário |