<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos nth-child - Web-Zoneware</title>
	<atom:link href="https://webzoneware.com/tag/nth-child/feed/" rel="self" type="application/rss+xml" />
	<link>https://webzoneware.com/tag/nth-child/</link>
	<description>Mais do que apenas uma academia web.</description>
	<lastBuildDate>Thu, 22 Oct 2026 03:23:53 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://webzoneware.com/wp-content/uploads/icon-webzoneware-150x150.png</url>
	<title>Arquivos nth-child - Web-Zoneware</title>
	<link>https://webzoneware.com/tag/nth-child/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Pseudo-classes Estruturais: nth-child no CSS &#124; Web Academy</title>
		<link>https://webzoneware.com/web-academy/curso-css/pseudo-classes-estruturais-nth-child/</link>
					<comments>https://webzoneware.com/web-academy/curso-css/pseudo-classes-estruturais-nth-child/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 03:23:53 +0000</pubDate>
				<category><![CDATA[Curso de CSS e CSS3]]></category>
		<category><![CDATA[curso css3 completo]]></category>
		<category><![CDATA[nth-child]]></category>
		<category><![CDATA[nth-of-type]]></category>
		<category><![CDATA[pseudo-classes estruturais]]></category>
		<category><![CDATA[seletor empty]]></category>
		<category><![CDATA[seletor not]]></category>
		<category><![CDATA[tabelas zebradas]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=29459</guid>

					<description><![CDATA[<p>Chegamos ao grande encerramento do Módulo 4! Em aplicações web corporativas, os dados exibidos na tela são quase sempre dinâmicos: listas de clientes, tabelas de vendas ou feeds de postagens gerados por bancos de dados. Colocar classes manuais em cada linha HTML (como .item-1, .item-2, .item-zebrado) seria inviável. As Pseudo-classes Estruturais capacitam o CSS a [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/pseudo-classes-estruturais-nth-child/">Pseudo-classes Estruturais: nth-child no CSS | Web Academy</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wzw-lesson-lead">
  Chegamos ao grande encerramento do Módulo 4! Em aplicações web corporativas, os dados exibidos na tela são quase sempre dinâmicos: listas de clientes, tabelas de vendas ou feeds de postagens gerados por bancos de dados. Colocar classes manuais em cada linha HTML (como <code>.item-1</code>, <code>.item-2</code>, <code>.item-zebrado</code>) seria inviável. As <strong>Pseudo-classes Estruturais</strong> capacitam o CSS a inspecionar a árvore do DOM e aplicar estilos cirúrgicos com base na posição ordinal, parentesco ou fórmulas matemáticas elegantes. Nesta lição, você dominará o poder de <code>:nth-child</code>, a fórmula <code>An + B</code>, a distinção para <code>:nth-of-type</code>, o seletor de negação <code>:not()</code> e o autolimpante <code>:empty</code>.
</p>
<h2>1. Os Guardiões das Extremidades: <code>:first-child</code>, <code>:last-child</code> e <code>:only-child</code></h2>
<p>
  Antes de mergulhar na matemática avançada, o CSS nos oferece seletores semânticos diretos para os limites de um contêiner:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-73734" data-lang="css">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS3</span>
                                <span class="wzw-ide-lines-count">16 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-73734', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-73734', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-comment">/* Seleciona o primeiro item de uma lista */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-attr">li</span>:first-child {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">font-weight</span>: 700;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">color</span>: <span class="wzw-tk-num">#38bdf8</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* O uso mais clássico da web: remove a borda divisória do último item */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-attr">li</span>:last-child {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">border-bottom</span>: none;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* Estiliza um elemento se ele for o ÚNICO filho dentro do seu pai */</span></span>
<span class="wzw-code-line">.alerta:only-child {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">margin</span>: 0 auto;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">text-align</span>: center;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Seleciona o primeiro item de uma lista */
li:first-child {
  font-weight: 700;
  color: #38bdf8;
}

/* O uso mais clássico da web: remove a borda divisória do último item */
li:last-child {
  border-bottom: none;
}

/* Estiliza um elemento se ele for o ÚNICO filho dentro do seu pai */
.alerta:only-child {
  margin: 0 auto;
  text-align: center;
}</textarea>
        </div>
    </div>
    
</div>
<h2>2. A Matemática Sagrada da Fórmula <code>:nth-child(An + B)</code></h2>
<p>
  A pseudo-classe <strong><code>:nth-child()</code></strong> aceita palavras-chave simples ou uma expressão algébrica linear <code>An + B</code> para varrer elementos em intervalos programados:
</p>
<h3>1. Palavras-Chave Rápidas (Listas e Tabelas Zebradas)</h3>
<ul>
<li><strong><code>:nth-child(odd)</code>:</strong> Seleciona todos os filhos em posições ímpares (1, 3, 5, 7&#8230;).</li>
<li><strong><code>:nth-child(even)</code>:</strong> Seleciona todos os filhos em posições pares (2, 4, 6, 8&#8230;). É a fórmula canônica para zebrar tabelas financeiras!</li>
</ul>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-74182" data-lang="css">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS3</span>
                                <span class="wzw-ide-lines-count">4 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-74182', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-74182', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-comment">/* Linhas pares com fundo sutilmente destacado */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-attr">tr</span>:nth-child(even) {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">background-color</span>: rgba(255, 255, 255, 0.03);</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Linhas pares com fundo sutilmente destacado */
tr:nth-child(even) {
  background-color: rgba(255, 255, 255, 0.03);
}</textarea>
        </div>
    </div>
    
</div>
<h3>2. A Mecânica da Equação <code>An + B</code></h3>
<p>
  Como o navegador computa essa fórmula? Ele executa um laço onde <strong><code>n</code> começa em zero (0)</strong> e incrementa sucessivamente (0, 1, 2, 3, 4&#8230;):
</p>
<ul>
<li><strong><code>A</code></strong> representa a frequência ou intervalo de repetição (o &#8220;passo&#8221;).</li>
<li><strong><code>B</code></strong> representa o ponto de partida inicial (o &#8220;deslocamento&#8221; ou offset).</li>
</ul>
<div class="wzw-table-responsive">
<table class="wzw-table">
<thead>
<tr>
<th>Expressão CSS</th>
<th>Valores de <code>n</code> Calculados</th>
<th>Índices Selecionados no HTML</th>
<th>Aplicação Prática</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>:nth-child(3)</code></td>
<td>Sem variável</td>
<td>Apenas o <strong>3º elemento</strong></td>
<td>Destacar um card de plano específico.</td>
</tr>
<tr>
<td><code>:nth-child(3n)</code></td>
<td>3(1), 3(2), 3(3)&#8230;</td>
<td><strong>3, 6, 9, 12, 15&#8230;</strong></td>
<td>Fim de linha em grades de 3 colunas.</td>
</tr>
<tr>
<td><code>:nth-child(3n + 1)</code></td>
<td>3(0)+1, 3(1)+1, 3(2)+1&#8230;</td>
<td><strong>1, 4, 7, 10, 13&#8230;</strong></td>
<td>Início de linha em grades de 3 colunas.</td>
</tr>
<tr>
<td><code>:nth-child(n + 5)</code></td>
<td>0+5, 1+5, 2+5&#8230;</td>
<td><strong>5, 6, 7, 8&#8230; em diante</strong></td>
<td>Estilizar itens excedentes (<em>&#8220;ver mais&#8221;</em>).</td>
</tr>
<tr>
<td><strong><code>:nth-child(-n + 3)</code></strong></td>
<td>-0+3, -1+3, -2+3</td>
<td><strong>1, 2 e 3 apenas!</strong></td>
<td><strong>O Seletor de Pódio:</strong> destaca os 3 primeiros colocados de um ranking!</td>
</tr>
</tbody>
</table>
</div>
<h2>3. O Duelo Crucial: <code>:nth-child</code> vs. <code>:nth-of-type</code></h2>
<p>
  Existe uma armadilha clássica que derruba milhares de desenvolvedores no CSS. Observe este código HTML:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-89963" data-lang="html">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">HTML5</span>
                                <span class="wzw-ide-lines-count">5 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-89963', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-89963', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;artigo&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">  <span class="wzw-tk-tag">&lt;h1&gt;</span>Título Principal<span class="wzw-tk-tag">&lt;/h1&gt;</span></span>
<span class="wzw-code-line">  <span class="wzw-tk-tag">&lt;p&gt;</span>Primeiro parágrafo.<span class="wzw-tk-tag">&lt;/p&gt;</span></span>
<span class="wzw-code-line">  <span class="wzw-tk-tag">&lt;p&gt;</span>Segundo parágrafo.<span class="wzw-tk-tag">&lt;/p&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/div&gt;</span></span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>&lt;div class=&quot;artigo&quot;&gt;
  &lt;h1&gt;Título Principal&lt;/h1&gt;
  &lt;p&gt;Primeiro parágrafo.&lt;/p&gt;
  &lt;p&gt;Segundo parágrafo.&lt;/p&gt;
&lt;/div&gt;</textarea>
        </div>
    </div>
    
</div>
<p>
  Se você escrever <code>p:nth-child(1)</code>, <strong>nada será estilizado</strong>! Por quê? Porque aos olhos do navegador, o filho de índice 1 dentro da div é o <code>&lt;h1&gt;</code>. Como o filho 1 não é um <code>&lt;p&gt;</code>, a regra falha.
</p>
<div class="wzw-callout wzw-callout-warning">
<p><strong>A Diferença Arquitetural:</strong></p>
<ul>
<li><strong><code>:nth-child</code>:</strong> Conta <em>todos os elementos irmãos indiscriminadamente</em>, independentemente da tag.</li>
<li><strong><code>:nth-of-type</code>:</strong> Filtra a contagem <em>exclusivamente entre irmãos da mesma tag HTML</em>! No exemplo acima, <code>p:nth-of-type(1)</code> selecionará perfeitamente o <code>Primeiro parágrafo</code>.</li>
</ul>
</div>
<h3>Bônus Moderno: A Sintaxe <code>:nth-child(An + B of .classe)</code></h3>
<p>
  O CSS Selectors Level 4 trouxe uma das adições mais pedidas da história: a capacidade de contar filhos que correspondam a uma <strong>classe específica</strong> usando a palavra-chave <code>of</code>:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-81227" data-lang="css">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS3</span>
                                <span class="wzw-ide-lines-count">4 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-81227', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-81227', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-comment">/* Seleciona o 2º item que possui a classe .ativo, ignorando os demais! */</span></span>
<span class="wzw-code-line">.item:nth-child(2 of .ativo) {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">border</span>: <span class="wzw-tk-num">2px</span> solid <span class="wzw-tk-num">#10b981</span>;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Seleciona o 2º item que possui a classe .ativo, ignorando os demais! */
.item:nth-child(2 of .ativo) {
  border: 2px solid #10b981;
}</textarea>
        </div>
    </div>
    
</div>
<h2>4. A Pseudo-classe de Negação: <code>:not()</code></h2>
<p>
  Em vez de aplicar um estilo a todos os elementos e depois criar uma classe especial para desfazê-lo, a pseudo-classe <strong><code>:not()</code></strong> permite excluir alvos diretamente na regra:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-17828" data-lang="css">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS3</span>
                                <span class="wzw-ide-lines-count">10 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-17828', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-17828', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-comment">/* Adiciona separador em todos os itens, EXCETO no último */</span></span>
<span class="wzw-code-line">.lista-item:not(:last-child) {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">border-bottom</span>: <span class="wzw-tk-num">1px</span> solid <span class="wzw-tk-num">#334155</span>;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">margin-bottom</span>: <span class="wzw-tk-num">12px</span>;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* Todos os botões ganham opacidade reduzida quando desativados */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-attr">button</span>:not(:disabled)<span class="wzw-tk-kw">:hover</span> {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">filter</span>: brightness(1.1);</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Adiciona separador em todos os itens, EXCETO no último */
.lista-item:not(:last-child) {
  border-bottom: 1px solid #334155;
  margin-bottom: 12px;
}

/* Todos os botões ganham opacidade reduzida quando desativados */
button:not(:disabled):hover {
  filter: brightness(1.1);
}</textarea>
        </div>
    </div>
    
</div>
<h2>5. A Pseudo-classe Autolimpante: <code>:empty</code></h2>
<p>
  A pseudo-classe <strong><code>:empty</code></strong> seleciona elementos que não contêm absolutamente nada em seu interior (nem elementos filhos, nem nós de texto).
</p>
<p>
  É a solução definitiva para selos e badges de notificação que devem sumir automaticamente quando o contador for zero:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-96962" data-lang="css">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS3</span>
                                <span class="wzw-ide-lines-count">4 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-96962', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-96962', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-comment">/* Se o JavaScript esvaziar o badge, ele desaparece da tela sem deixar buraco! */</span></span>
<span class="wzw-code-line">.badge-contador:empty {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">display</span>: none;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Se o JavaScript esvaziar o badge, ele desaparece da tela sem deixar buraco! */
.badge-contador:empty {
  display: none;
}</textarea>
        </div>
    </div>
    
</div>
<h2>6. Laboratório Prático: Ranking Zebrado e Destaque de Pódio</h2>
<p>
  No exemplo abaixo, combinamos a fórmula matemática de pódio <code>:nth-child(-n + 3)</code> para destacar os 3 líderes de um ranking, zebramos as linhas com <code>:nth-child(even)</code> e usamos <code>:not(:last-child)</code> e <code>:empty</code>:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-15302" data-lang="html">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">HTML5</span>
                                <span class="wzw-ide-lines-count">121 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-15302', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-15302', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-tag">&lt;!DOCTYPE</span><span class="wzw-tk-kw"> html</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;html</span> <span class="wzw-tk-attr">lang</span>=<span class="wzw-tk-str">&quot;pt-BR&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;head&gt;</span></span>
<span class="wzw-code-line">  <span class="wzw-tk-tag">&lt;meta</span> <span class="wzw-tk-attr">charset</span>=<span class="wzw-tk-str">&quot;UTF-8&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">  <span class="wzw-tk-tag">&lt;title&gt;</span>Laboratório de Pseudo-classes Estruturais<span class="wzw-tk-tag">&lt;/title&gt;</span></span>
<span class="wzw-code-line">  <span class="wzw-tk-tag">&lt;style&gt;</span></span>
<span class="wzw-code-line">    body {</span>
<span class="wzw-code-line">      font-family: &#039;Inter&#039;, system-ui, sans-serif;</span>
<span class="wzw-code-line">      background: #0b0f19;</span>
<span class="wzw-code-line">      color: #f8fafc;</span>
<span class="wzw-code-line">      padding: 30px;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    .tabela-ranking {</span>
<span class="wzw-code-line">      width: 100%;</span>
<span class="wzw-code-line">      max-width: 580px;</span>
<span class="wzw-code-line">      border-collapse: collapse;</span>
<span class="wzw-code-line">      background: #1e293b;</span>
<span class="wzw-code-line">      border-radius: 12px;</span>
<span class="wzw-code-line">      overflow: hidden;</span>
<span class="wzw-code-line">      border: 1px solid #334155;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    th, td {</span>
<span class="wzw-code-line">      padding: 14px 20px;</span>
<span class="wzw-code-line">      text-align: left;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    th {</span>
<span class="wzw-code-line">      background: #0f172a;</span>
<span class="wzw-code-line">      color: #94a3b8;</span>
<span class="wzw-code-line">      font-size: 0.85rem;</span>
<span class="wzw-code-line">      text-transform: uppercase;</span>
<span class="wzw-code-line">      letter-spacing: 0.05em;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* 1. SEPARADOR EM TODOS EXCETO O ÚLTIMO (:not(:last-child)) */</span></span>
<span class="wzw-code-line">    tbody tr:not(:last-child) td {</span>
<span class="wzw-code-line">      border-bottom: 1px solid #334155;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* 2. LINHAS ZEBRADAS (:nth-child(even)) */</span></span>
<span class="wzw-code-line">    tbody tr:nth-child(even) {</span>
<span class="wzw-code-line">      background-color: rgba(255, 255, 255, 0.02);</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* 3. O SELETOR DE PÓDIO: TOP 3 MELHORES (:nth-child(-n + 3)) */</span></span>
<span class="wzw-code-line">    tbody tr:nth-child(-n + 3) td:first-child {</span>
<span class="wzw-code-line">      font-weight: 800;</span>
<span class="wzw-code-line">      color: #f59e0b; /* Dourado para o Top 3 */</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    tbody tr:nth-child(1) td:first-child::after { content: &quot; 🥇&quot;; }</span>
<span class="wzw-code-line">    tbody tr:nth-child(2) td:first-child::after { content: &quot; 🥈&quot;; }</span>
<span class="wzw-code-line">    tbody tr:nth-child(3) td:first-child::after { content: &quot; 🥉&quot;; }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* 4. BADGE AUTOLIMPANTE (:empty) */</span></span>
<span class="wzw-code-line">    .badge-trofeu:empty {</span>
<span class="wzw-code-line">      display: none;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    .badge-trofeu {</span>
<span class="wzw-code-line">      background: #3b82f6;</span>
<span class="wzw-code-line">      color: #fff;</span>
<span class="wzw-code-line">      font-size: 0.75rem;</span>
<span class="wzw-code-line">      padding: 3px 8px;</span>
<span class="wzw-code-line">      border-radius: 9999px;</span>
<span class="wzw-code-line">      font-weight: 700;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">  <span class="wzw-tk-tag">&lt;/style&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/head&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;body&gt;</span></span>
<span class="wzw-code-line">  <span class="wzw-tk-tag">&lt;h2</span> <span class="wzw-tk-attr">style</span>=<span class="wzw-tk-str">&quot;color:#38bdf8; margin-top:0;&quot;</span><span class="wzw-tk-tag">&gt;</span>Quadro de Líderes da Web Academy<span class="wzw-tk-tag">&lt;/h2&gt;</span></span>
<span class="wzw-code-line">  <span class="wzw-tk-tag">&lt;p</span> <span class="wzw-tk-attr">style</span>=<span class="wzw-tk-str">&quot;color:#94a3b8; font-size:0.9rem; margin-bottom:20px;&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    Tabela estruturada matematicamente no CSS sem nenhuma classe individual por linha:</span>
<span class="wzw-code-line">  <span class="wzw-tk-tag">&lt;/p&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">  <span class="wzw-tk-tag">&lt;table</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;tabela-ranking&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;thead&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;tr&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;th&gt;</span>Posição<span class="wzw-tk-tag">&lt;/th&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;th&gt;</span>Desenvolvedor<span class="wzw-tk-tag">&lt;/th&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;th&gt;</span>Pontos<span class="wzw-tk-tag">&lt;/th&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;th&gt;</span>Status<span class="wzw-tk-tag">&lt;/th&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;/tr&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;/thead&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;tbody&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;tr&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>1º<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>Carlos Mendes<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>9.840<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span><span class="wzw-tk-tag">&lt;span</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;badge-trofeu&quot;</span><span class="wzw-tk-tag">&gt;</span>Líder<span class="wzw-tk-tag">&lt;/span&gt;</span><span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;/tr&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;tr&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>2º<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>Beatriz Lima<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>9.410<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span><span class="wzw-tk-tag">&lt;span</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;badge-trofeu&quot;</span><span class="wzw-tk-tag">&gt;</span>Pro<span class="wzw-tk-tag">&lt;/span&gt;</span><span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;/tr&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;tr&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>3º<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>Rafael Souza<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>8.950<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span><span class="wzw-tk-tag">&lt;span</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;badge-trofeu&quot;</span><span class="wzw-tk-tag">&gt;</span>Pro<span class="wzw-tk-tag">&lt;/span&gt;</span><span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;/tr&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;tr&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>4º<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>Juliana Ramos<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>7.620<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span><span class="wzw-tk-tag">&lt;span</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;badge-trofeu&quot;</span><span class="wzw-tk-tag">&gt;</span><span class="wzw-tk-tag">&lt;/span&gt;</span><span class="wzw-tk-comment">&lt;!-- Vazio: auto-oculta com :empty! --&gt;</span><span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;/tr&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;tr&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>5º<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>Diego Alves<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span>6.890<span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;td&gt;</span><span class="wzw-tk-tag">&lt;span</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;badge-trofeu&quot;</span><span class="wzw-tk-tag">&gt;</span><span class="wzw-tk-tag">&lt;/span&gt;</span><span class="wzw-tk-comment">&lt;!-- Vazio: auto-oculta com :empty! --&gt;</span><span class="wzw-tk-tag">&lt;/td&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;/tr&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;/tbody&gt;</span></span>
<span class="wzw-code-line">  <span class="wzw-tk-tag">&lt;/table&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/body&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/html&gt;</span></span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;pt-BR&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;title&gt;Laboratório de Pseudo-classes Estruturais&lt;/title&gt;
  &lt;style&gt;
    body {
      font-family: &#039;Inter&#039;, system-ui, sans-serif;
      background: #0b0f19;
      color: #f8fafc;
      padding: 30px;
    }

    .tabela-ranking {
      width: 100%;
      max-width: 580px;
      border-collapse: collapse;
      background: #1e293b;
      border-radius: 12px;
      overflow: hidden;
      border: 1px solid #334155;
    }

    th, td {
      padding: 14px 20px;
      text-align: left;
    }

    th {
      background: #0f172a;
      color: #94a3b8;
      font-size: 0.85rem;
      text-transform: uppercase;
      letter-spacing: 0.05em;
    }

    /* 1. SEPARADOR EM TODOS EXCETO O ÚLTIMO (:not(:last-child)) */
    tbody tr:not(:last-child) td {
      border-bottom: 1px solid #334155;
    }

    /* 2. LINHAS ZEBRADAS (:nth-child(even)) */
    tbody tr:nth-child(even) {
      background-color: rgba(255, 255, 255, 0.02);
    }

    /* 3. O SELETOR DE PÓDIO: TOP 3 MELHORES (:nth-child(-n + 3)) */
    tbody tr:nth-child(-n + 3) td:first-child {
      font-weight: 800;
      color: #f59e0b; /* Dourado para o Top 3 */
    }

    tbody tr:nth-child(1) td:first-child::after { content: &quot; 🥇&quot;; }
    tbody tr:nth-child(2) td:first-child::after { content: &quot; 🥈&quot;; }
    tbody tr:nth-child(3) td:first-child::after { content: &quot; 🥉&quot;; }

    /* 4. BADGE AUTOLIMPANTE (:empty) */
    .badge-trofeu:empty {
      display: none;
    }

    .badge-trofeu {
      background: #3b82f6;
      color: #fff;
      font-size: 0.75rem;
      padding: 3px 8px;
      border-radius: 9999px;
      font-weight: 700;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;h2 style=&quot;color:#38bdf8; margin-top:0;&quot;&gt;Quadro de Líderes da Web Academy&lt;/h2&gt;
  &lt;p style=&quot;color:#94a3b8; font-size:0.9rem; margin-bottom:20px;&quot;&gt;
    Tabela estruturada matematicamente no CSS sem nenhuma classe individual por linha:
  &lt;/p&gt;

  &lt;table class=&quot;tabela-ranking&quot;&gt;
    &lt;thead&gt;
      &lt;tr&gt;
        &lt;th&gt;Posição&lt;/th&gt;
        &lt;th&gt;Desenvolvedor&lt;/th&gt;
        &lt;th&gt;Pontos&lt;/th&gt;
        &lt;th&gt;Status&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td&gt;1º&lt;/td&gt;
        &lt;td&gt;Carlos Mendes&lt;/td&gt;
        &lt;td&gt;9.840&lt;/td&gt;
        &lt;td&gt;&lt;span class=&quot;badge-trofeu&quot;&gt;Líder&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;2º&lt;/td&gt;
        &lt;td&gt;Beatriz Lima&lt;/td&gt;
        &lt;td&gt;9.410&lt;/td&gt;
        &lt;td&gt;&lt;span class=&quot;badge-trofeu&quot;&gt;Pro&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;3º&lt;/td&gt;
        &lt;td&gt;Rafael Souza&lt;/td&gt;
        &lt;td&gt;8.950&lt;/td&gt;
        &lt;td&gt;&lt;span class=&quot;badge-trofeu&quot;&gt;Pro&lt;/span&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;4º&lt;/td&gt;
        &lt;td&gt;Juliana Ramos&lt;/td&gt;
        &lt;td&gt;7.620&lt;/td&gt;
        &lt;td&gt;&lt;span class=&quot;badge-trofeu&quot;&gt;&lt;/span&gt;&lt;!-- Vazio: auto-oculta com :empty! --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;5º&lt;/td&gt;
        &lt;td&gt;Diego Alves&lt;/td&gt;
        &lt;td&gt;6.890&lt;/td&gt;
        &lt;td&gt;&lt;span class=&quot;badge-trofeu&quot;&gt;&lt;/span&gt;&lt;!-- Vazio: auto-oculta com :empty! --&gt;&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;</textarea>
        </div>
    </div>
    
</div>
<p>
  Abra este laboratório no Playground IDE e teste alterar a fórmula <code>:nth-child(-n + 3)</code> para <code>:nth-child(n + 4)</code> e comprove o controle cirúrgico sobre a árvore de elementos:
</p>
<p style="text-align: center; margin: 35px 0;">
  <a href="https://webzoneware.com/web-academy/playground-web/" class="wzw-btn-playground" target="_blank" rel="noopener">⚡ Abrir no Playground IDE &rarr;</a>
</p>
<h2>7. Celebração do Módulo 4 e Boas-Vindas ao Módulo 5</h2>
<p>
  Parabéns por conquistar mais um marco extraordinário! Você concluiu <strong>100% do Módulo 4: CSS Grid &#038; Design Responsivo</strong>!
</p>
<p>
  Ao longo das últimas 10 lições, você adquiriu habilidades de nível sênior:
</p>
<ul>
<li>Compreendeu a arquitetura bidimensional (2D) do <strong>CSS Grid Layout</strong>.</li>
<li>Dominou a unidade fracionária <code>fr</code> e a grade implícita dinâmica.</li>
<li>Criou grades mágicas auto-responsivas sem media queries com <code>repeat()</code>, <code>minmax()</code> e <code>auto-fit</code>.</li>
<li>Unificou o espaçamento moderno com <code>gap</code> no Grid e no Flexbox.</li>
<li>Projetou layouts visuais em ASCII Art com <code>grid-template-areas</code>.</li>
<li>Adotou a mentalidade <strong>Mobile-First</strong> progressiva com a meta viewport.</li>
<li>Dominou a moderna <strong>Sintaxe de Faixa das Media Queries</strong> e preferências de acessibilidade.</li>
<li>Eliminou distorções e o temido CLS com <code>object-fit</code> e <code>aspect-ratio</code>.</li>
<li>E dominou integralmente as pseudo-classes dinâmicas e estruturais com matemática no DOM.</li>
</ul>
<div class="wzw-callout wzw-callout-success">
<p><strong>Rumo à Reta Final:</strong> Entraremos agora no quinto e último módulo da trilha: <strong>Módulo 5: Animações, CSS Moderno &#038; Projeto Final</strong>! Na <strong>Lição 41</strong>, desvendaremos o poder criativo dos <strong>Pseudo-elementos (::before e ::after)</strong>!</p>
</div>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/pseudo-classes-estruturais-nth-child/">Pseudo-classes Estruturais: nth-child no CSS | Web Academy</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webzoneware.com/web-academy/curso-css/pseudo-classes-estruturais-nth-child/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
