Carregando...
Referência Completa de Seletores CSS
Este guia completo de seletores CSS foi desenvolvido para fornecer aos desenvolvedores uma referência rápida e confiável de todos os tipos de seletores disponíveis no CSS moderno. Ele cobre seletores básicos, combinadores, atributos, pseudo-classes estruturais, de interação e de formulário, pseudo-elementos, seletores avançados e consultas de mídia. Com exemplos práticos e suporte detalhado de navegador, este guia auxilia no desenvolvimento eficiente de folhas de estilo, prevenindo conflitos de estilo, otimizando código e garantindo compatibilidade em múltiplos ambientes. É ideal para consulta rápida durante o desenvolvimento, planejamento de layouts complexos e implementação de interfaces modernas e responsivas.
📊 Basic Selectors
Selector | Syntax | Description | Example | Browser Support |
---|---|---|---|---|
* | * | Seletor universal - seleciona todos os elementos | * { margin: 0; } | Todos os navegadores |
element | tagname | Seletor de tipo - seleciona todos os elementos do tipo especificado | p { color: blue; } | Todos os navegadores |
.class | .classname | Seletor de classe - seleciona elementos com a classe especificada | .highlight { background: yellow; } | Todos os navegadores |
\#id | #idname | Seletor de ID - seleciona elemento com o ID especificado | #header { width: 100%; } | Todos os navegadores |
📊 Combinator Selectors
Selector | Syntax | Description | Example | Browser Support |
---|---|---|---|---|
descendant | A B | Seleciona elementos B que estão dentro de A | div p { margin: 10px; } | Todos os navegadores |
child | A > B | Seleciona elementos B que são filhos diretos de A | ul > li { list-style: none; } | IE7+ |
adjacent sibling | A + B | Seleciona elemento B imediatamente após A | h1 + p { font-weight: bold; } | IE7+ |
general sibling | A \~ B | Seleciona todos os elementos B irmãos de A que aparecem depois de A | h1 \~ p { color: gray; } | IE7+ |
📊 Attribute Selectors
Selector | Syntax | Description | Example | Browser Support |
---|---|---|---|---|
\[attribute] | \[attr] | Seleciona elementos com o atributo especificado | \[disabled] { opacity: 0.5; } | IE7+ |
\[attribute=value] | \[attr=val] | Seleciona elementos cujo atributo é igual a valor | \[type="text"] { border: 1px solid; } | IE7+ |
\[attribute\~=value] | \[attr\~=val] | Seleciona elementos cujo atributo contém palavra específica | \[class\~="button"] { cursor: pointer; } | IE7+ |
\[attribute^=value] | \[attr^=val] | Seleciona elementos cujo atributo inicia com valor | \[href^="https"] { color: green; } | IE7+ |
\[attribute\$=value] | \[attr\$=val] | Seleciona elementos cujo atributo termina com valor | \[src\$=".jpg"] { border: 2px solid; } | IE7+ |
\[attribute*=value] | \[attr*=val] | Seleciona elementos cujo atributo contém valor em qualquer posição | \[title*="important"] { font-weight: bold; } | IE7+ |
\[attribute="value" i] | \[attr="val" i] | Seleciona elementos ignorando maiúsculas/minúsculas | \[type="EMAIL" i] { text-transform: lowercase; } | Navegadores modernos |
📊 Pseudo-class Selectors - Structural
Selector | Syntax | Description | Example | Browser Support |
---|---|---|---|---|
:first-child | :first-child | Seleciona o primeiro filho | p:first-child { margin-top: 0; } | IE7+ |
:last-child | :last-child | Seleciona o último filho | p:last-child { margin-bottom: 0; } | IE9+ |
:nth-child(n) | :nth-child(n) | Seleciona o n-ésimo filho | tr:nth-child(2n) { background: #f0f0f0; } | IE9+ |
:nth-last-child(n) | :nth-last-child(n) | Seleciona o n-ésimo filho a partir do final | li:nth-last-child(2) { color: red; } | IE9+ |
:nth-of-type(n) | :nth-of-type(n) | Seleciona o n-ésimo elemento do mesmo tipo | h2:nth-of-type(odd) { color: blue; } | IE9+ |
:nth-last-of-type(n) | :nth-last-of-type(n) | Seleciona o n-ésimo elemento do tipo a partir do final | p:nth-last-of-type(1) { font-weight: bold; } | IE9+ |
:first-of-type | :first-of-type | Seleciona o primeiro elemento do tipo | img:first-of-type { float: left; } | IE9+ |
:last-of-type | :last-of-type | Seleciona o último elemento do tipo | p:last-of-type { margin-bottom: 20px; } | IE9+ |
:only-child | :only-child | Seleciona elementos que são filhos únicos | p:only-child { text-align: center; } | IE9+ |
:only-of-type | :only-of-type | Seleciona elementos únicos do tipo | img:only-of-type { display: block; } | IE9+ |
:empty | :empty | Seleciona elementos sem filhos | div:empty { display: none; } | IE9+ |
📊 Pseudo-class Selectors - User Action
Selector | Syntax | Description | Example | Browser Support |
---|---|---|---|---|
:hover | :hover | Seleciona elementos ao passar o mouse | a:hover { color: red; } | Todos os navegadores |
:active | :active | Seleciona elementos clicados | button:active { transform: scale(0.95); } | Todos os navegadores |
:focus | :focus | Seleciona elementos com foco de teclado | input:focus { outline: 2px solid blue; } | Todos os navegadores |
:focus-visible | :focus-visible | Seleciona elementos com foco visível | button:focus-visible { outline: 2px solid; } | Navegadores modernos |
:focus-within | :focus-within | Seleciona elemento que contém elemento com foco | form:focus-within { border: 1px solid blue; } | Navegadores modernos |
📊 Pseudo-class Selectors - Form States
Selector | Syntax | Description | Example | Browser Support |
---|---|---|---|---|
:enabled | :enabled | Seleciona elementos de formulário habilitados | input:enabled { background: white; } | IE9+ |
:disabled | :disabled | Seleciona elementos de formulário desabilitados | input:disabled { background: #f5f5f5; } | IE9+ |
:checked | :checked | Seleciona checkboxes/radios marcados | input:checked + label { font-weight: bold; } | IE9+ |
:indeterminate | :indeterminate | Seleciona checkboxes indefinidos | input:indeterminate { opacity: 0.5; } | IE9+ |
:valid | :valid | Seleciona elementos válidos | input:valid { border-color: green; } | IE10+ |
:invalid | :invalid | Seleciona elementos inválidos | input:invalid { border-color: red; } | IE10+ |
:required | :required | Seleciona campos obrigatórios | input:required { border-left: 3px solid red; } | IE10+ |
:optional | :optional | Seleciona campos opcionais | input:optional { border-left: 3px solid gray; } | IE10+ |
:read-only | :read-only | Seleciona elementos somente leitura | input:read-only { background: #f9f9f9; } | Navegadores modernos |
:read-write | :read-write | Seleciona elementos editáveis | input:read-write { background: white; } | Navegadores modernos |
:placeholder-shown | :placeholder-shown | Seleciona elementos mostrando placeholder | input:placeholder-shown { font-style: italic; } | Navegadores modernos |
:in-range | :in-range | Seleciona elementos com valor dentro do intervalo | input:in-range { border-color: green; } | Navegadores modernos |
:out-of-range | :out-of-range | Seleciona elementos com valor fora do intervalo | input:out-of-range { border-color: red; } | Navegadores modernos |
📊 Pseudo-class Selectors - Link States
Selector | Syntax | Description | Example | Browser Support |
---|---|---|---|---|
:link | :link | Seleciona links não visitados | a:link { color: blue; } | Todos os navegadores |
:visited | :visited | Seleciona links visitados | a:visited { color: purple; } | Todos os navegadores |
:any-link | :any-link | Seleciona todos os links | a:any-link { text-decoration: underline; } | Navegadores modernos |
:target | :target | Seleciona elemento alvo do URL atual | :target { background: yellow; } | IE9+ |
📊 Pseudo-class Selectors - Logical
Selector | Syntax | Description | Example | Browser Support |
---|---|---|---|---|
:not(selector) | :not(sel) | Seleciona elementos que não correspondem ao seletor | p:not(.special) { color: gray; } | IE9+ |
:is(selector) | :is(sel1, sel2) | Seleciona elementos que correspondem a qualquer seletor | :is(h1, h2, h3) { margin-top: 0; } | Navegadores modernos |
:where(selector) | :where(sel1, sel2) | Como :is mas com especificidade zero | :where(h1, h2) { color: blue; } | Navegadores modernos |
:has(selector) | :has(sel) | Seleciona elementos que contêm outro seletor | div:has(img) { border: 1px solid; } | Navegadores modernos |
📊 Pseudo-element Selectors
Selector | Syntax | Description | Example | Browser Support |
---|---|---|---|---|
::before | ::before | Insere conteúdo antes do elemento | p::before { content: "→ "; } | IE9+ (só :before IE8+) |
::after | ::after | Insere conteúdo depois do elemento | p::after { content: " ←"; } | IE9+ (só :after IE8+) |
::first-line | ::first-line | Seleciona a primeira linha do texto | p::first-line { font-weight: bold; } | IE9+ (só :first-line IE6+) |
::first-letter | ::first-letter | Seleciona a primeira letra do texto | p::first-letter { font-size: 2em; } | IE9+ (só :first-letter IE6+) |
::selection | ::selection | Seleciona texto selecionado pelo usuário | ::selection { background: yellow; } | IE9+ |
::placeholder | ::placeholder | Seleciona texto de placeholder | input::placeholder { color: #999; } | Navegadores modernos |
::backdrop | ::backdrop | Seleciona plano de fundo de elemento em fullscreen | dialog::backdrop { background: rgba(0,0,0,0.5); } | Navegadores modernos |
::marker | ::marker | Seleciona marcadores de lista | li::marker { color: red; } | Navegadores modernos |
📊 Advanced Selectors
Selector | Syntax | Description | Example | Browser Support |
---|---|---|---|---|
:root | :root | Seleciona elemento raiz do documento | :root { --main-color: blue; } | IE9+ |
:scope | :scope | Seleciona elemento de escopo | :scope > p { margin: 0; } | Navegadores modernos |
:defined | :defined | Seleciona elementos customizados definidos | custom-element:defined { opacity: 1; } | Navegadores modernos |
:host | :host | Seleciona host de shadow DOM | :host { display: block; } | Navegadores modernos |
:host(selector) | :host(sel) | Seleciona host que corresponde ao seletor | :host(.active) { color: red; } | Navegadores modernos |
:host-context(selector) | :host-context(sel) | Seleciona host em contexto específico | :host-context(.dark) { color: white; } | Navegadores modernos |
::slotted(selector) | ::slotted(sel) | Seleciona conteúdo dentro de slot | ::slotted(p) { margin: 0; } | Navegadores modernos |
📊 Media Query Selectors
Selector | Syntax | Description | Example | Browser Support |
---|---|---|---|---|
@media | @media (condition) | Aplica estilos com base em condições de mídia | @media (max-width: 768px) { .nav { display: none; } } | IE9+ |
@supports | @supports (property: value) | Aplica estilos se navegador suporta recurso | @supports (display: grid) { .layout { display: grid; } } | Navegadores modernos |
@container | @container (condition) | Aplica estilos com base no tamanho do container | @container (min-width: 400px) { .card { flex-direction: row; } } | Navegadores modernos |
Quick Examples
css
CSS Code
/* Combinação de seletores básicos */
.header nav ul li a:hover {
color: #007bff;
text-decoration: none;
}
/* Seletores de atributo para formulários */
input\[type="email"]:focus:valid {
border-color: green;
box-shadow: 0 0 5px rgba(0,255,0,0.3);
}
/* Pseudo-elementos para estilização avançada */
.quote::before {
content: "“";
font-size: 2em;
color: #999;
}
/* Seletores estruturais avançados */
.grid-item:nth-child(3n+1) {
margin-left: 0;
}
/* Seletores lógicos modernos */
:is(h1, h2, h3):not(.no-margin) {
margin-top: 2rem;
}
Melhores práticas e dicas:
- Utilize seletores específicos para evitar conflitos de estilo indesejados.
- Prefira seletores de classe em vez de ID para maior reutilização.
- Combine seletores de forma eficiente para reduzir o tamanho do CSS.
- Teste pseudo-classes em diferentes navegadores.
- Use :not() com cautela, pois pode impactar desempenho.
- Lembre-se que pseudo-elementos criam elementos virtuais no DOM.
- Considere a especificidade ao usar combinações complexas de seletores.
- Use seletores de atributo para estilização dinâmica de formulários.
- Teste seletores modernos como :has() e :is() quanto ao suporte de navegador.
- Agrupe seletores relacionados para melhor organização de código.
- Utilize seletores descendentes com parcimônia para evitar excesso de aninhamento.
- Alguns pseudo-classes funcionam apenas com determinados elementos.
🧠 Teste Seu Conhecimento
Pronto para Começar
Reference Knowledge Check
Teste seu conhecimento sobre seletores CSS e seu uso.
3
Perguntas
70%
Para Passar
∞
Tempo
∞
Tentativas
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo