<?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 auto-fit - Web-Zoneware</title>
	<atom:link href="https://webzoneware.com/tag/auto-fit/feed/" rel="self" type="application/rss+xml" />
	<link>https://webzoneware.com/tag/auto-fit/</link>
	<description>Mais do que apenas uma academia web.</description>
	<lastBuildDate>Thu, 22 Oct 2026 02:42:17 +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 auto-fit - Web-Zoneware</title>
	<link>https://webzoneware.com/tag/auto-fit/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>repeat, minmax e auto-fit no CSS Grid &#124; Web Academy</title>
		<link>https://webzoneware.com/web-academy/curso-css/grid-repeat-minmax-auto-fit-fill/</link>
					<comments>https://webzoneware.com/web-academy/curso-css/grid-repeat-minmax-auto-fit-fill/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 02:42:17 +0000</pubDate>
				<category><![CDATA[Curso de CSS e CSS3]]></category>
		<category><![CDATA[auto-fill]]></category>
		<category><![CDATA[auto-fit]]></category>
		<category><![CDATA[curso css3 completo]]></category>
		<category><![CDATA[grid responsivo]]></category>
		<category><![CDATA[minmax css]]></category>
		<category><![CDATA[repeat css grid]]></category>
		<category><![CDATA[sem media queries]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=29445</guid>

					<description><![CDATA[<p>Durante anos, tornar uma galeria de produtos responsiva exigia um trabalho braçal exaustivo: você precisava escrever um bloco com 4 colunas para monitores grandes, adicionar um @media (max-width: 1200px) para 3 colunas, outro @media (max-width: 768px) para 2 colunas e mais um @media (max-width: 480px) para empilhar em 1 coluna no celular. O CSS Grid [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/grid-repeat-minmax-auto-fit-fill/">repeat, minmax e auto-fit no CSS Grid | Web Academy</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wzw-lesson-lead">
  Durante anos, tornar uma galeria de produtos responsiva exigia um trabalho braçal exaustivo: você precisava escrever um bloco com 4 colunas para monitores grandes, adicionar um <code>@media (max-width: 1200px)</code> para 3 colunas, outro <code>@media (max-width: 768px)</code> para 2 colunas e mais um <code>@media (max-width: 480px)</code> para empilhar em 1 coluna no celular. O CSS Grid moderno eliminou completamente essa redundância com a criação da <strong>Grade Mágica Responsiva</strong>: a fusão das funções <code>repeat()</code>, <code>minmax()</code> e as palavras-chave <code>auto-fit</code> e <code>auto-fill</code>.
</p>
<h2>1. A Função <code>repeat()</code>: Exterminando a Repetição de Código</h2>
<p>
  Se você precisar criar uma grade com 12 colunas iguais para o sistema de design da sua aplicação, digitar <code>1fr</code> doze vezes seguidas é tedioso e propenso a erros. A função <strong><code>repeat()</code></strong> compacta essa declaração:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-59252" 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">5 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-59252', 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-59252', 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">/* Em vez de: grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr; */</span></span>
<span class="wzw-code-line">.sistema-12-colunas {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">display</span>: grid;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">grid-template-columns</span>: repeat(12, <span class="wzw-tk-num">1fr</span>);</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Em vez de: grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr; */
.sistema-12-colunas {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
}</textarea>
        </div>
    </div>
    
</div>
<h3>Padrões e Misturas com <code>repeat()</code></h3>
<p>A função aceita padrões rítmicos e pode ser intercalada com faixas estáticas:</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-93112" 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">9 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-93112', 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-93112', 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">/* Cria: 1fr 2fr 1fr 2fr 1fr 2fr */</span></span>
<span class="wzw-code-line">.padrao-ritmico {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">grid-template-columns</span>: repeat(3, <span class="wzw-tk-num">1fr</span> <span class="wzw-tk-num">2fr</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">/* Sidebar de 260px + 4 colunas de 1fr + barra lateral de 60px */</span></span>
<span class="wzw-code-line">.layout-misto {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">grid-template-columns</span>: <span class="wzw-tk-num">260px</span> repeat(4, <span class="wzw-tk-num">1fr</span>) <span class="wzw-tk-num">60px</span>;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Cria: 1fr 2fr 1fr 2fr 1fr 2fr */
.padrao-ritmico {
  grid-template-columns: repeat(3, 1fr 2fr);
}

/* Sidebar de 260px + 4 colunas de 1fr + barra lateral de 60px */
.layout-misto {
  grid-template-columns: 260px repeat(4, 1fr) 60px;
}</textarea>
        </div>
    </div>
    
</div>
<h2>2. A Função <code>minmax()</code>: A Faixa com Piso e Teto</h2>
<p>
  A função <strong><code>minmax(mínimo, máximo)</code></strong> define uma faixa de tamanho flexível para uma coluna ou linha. Ela estabelece uma fronteira de segurança: a coluna nunca será menor do que o valor mínimo e nunca será maior do que o valor máximo:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-35350" 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-35350', 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-35350', 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">.coluna-protegida {</span>
<span class="wzw-code-line">  <span class="wzw-tk-comment">/* Largura mínima de 220px, mas pode esticar até 400px se sobrar espaço */</span></span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">grid-template-columns</span>: minmax(<span class="wzw-tk-num">220px</span>, <span class="wzw-tk-num">400px</span>) <span class="wzw-tk-num">1fr</span>;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.coluna-protegida {
  /* Largura mínima de 220px, mas pode esticar até 400px se sobrar espaço */
  grid-template-columns: minmax(220px, 400px) 1fr;
}</textarea>
        </div>
    </div>
    
</div>
<div class="wzw-callout wzw-callout-info">
<p><strong>A Regra de Ouro do <code>minmax</code>:</strong> O valor mínimo <em>não pode</em> ser uma unidade <code>fr</code> (como <code>minmax(1fr, 300px)</code>, que é inválido perante a W3C). No entanto, o valor máximo <strong>PODE e DEVE ser <code>1fr</code></strong>! Declarar <code>minmax(280px, 1fr)</code> é a chave mágica da responsividade: a coluna terá no mínimo 280px; se houver espaço sobrando, ela se estica para preencher a tela.</p>
</div>
<h2>3. O Santo Graal da Responsividade: A Grade Sem Media Queries</h2>
<p>
  Quando combinamos <code>repeat()</code>, <code>auto-fit</code> e <code>minmax()</code>, acontece uma revolução arquitetural. Observe esta linha única de código CSS:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-94117" 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">5 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-94117', 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-94117', 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">.grade-magica-responsiva {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">display</span>: grid;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">grid-template-columns</span>: repeat(auto-fit, minmax(<span class="wzw-tk-num">280px</span>, <span class="wzw-tk-num">1fr</span>));</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">gap</span>: <span class="wzw-tk-num">20px</span>;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.grade-magica-responsiva {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
}</textarea>
        </div>
    </div>
    
</div>
<h3>Como o Navegador Executa Essa Linha em Tempo Real?</h3>
<ul>
<li><strong>Em um smartphone estreito (360px):</strong> O navegador percebe que só cabe uma única coluna de 280px (com as margens). Ele renderiza <strong>1 coluna</strong> e estica-a até preencher 100% da tela.</li>
<li><strong>Em um tablet (768px):</strong> O navegador calcula: <code>280px + 280px + 20px (gap) = 580px</code>. Duas colunas cabem com folga! Ele renderiza <strong>2 colunas</strong> e estica ambas via <code>1fr</code>.</li>
<li><strong>Em um monitor desktop (1280px):</strong> Cabem perfeitamente <strong>4 colunas</strong> de 280px. O navegador renderiza 4 colunas uniformes.</li>
<li><strong>Em uma TV 4K (2560px):</strong> Cabem <strong>8 colunas</strong> sem que você precise escrever uma única linha adicional de código!</li>
</ul>
<h2>4. O Duelo Crucial: <code>auto-fit</code> vs. <code>auto-fill</code></h2>
<p>
  Tanto <code>auto-fit</code> quanto <code>auto-fill</code> calculam automaticamente quantas colunas de tamanho mínimo cabem no contêiner pai. No entanto, quando você tem <strong>poucos itens na grade</strong> (por exemplo, apenas 2 cartões em um monitor de 1920px), o comportamento deles diverge drasticamente:
</p>
<h3>1. <code>auto-fill</code> (Preenchimento com Faixas Fantasmas)</h3>
<p>
  O navegador calcula quantas colunas cabem e <strong>cria todas as faixas vazias possíveis</strong>, mesmo que não haja conteúdo HTML para preenchê-las. Os 2 cartões existentes permanecem com seus 280px originais colados no canto esquerdo, e o resto da linha fica preenchido por colunas &#8220;fantasmas&#8221; invisíveis.
</p>
<h3>2. <code>auto-fit</code> (Adaptação com Colapso Total)</h3>
<p>
  O navegador calcula as faixas possíveis, mas <strong>colapsa para zero pixels todas as faixas vazias que não têm itens dentro</strong>! Como resultado, os 2 cartões existentes se expandem através do <code>1fr</code> e dividem 50% da largura total da tela cada um, criando um layout imersivo e sem buracos.
</p>
<div class="wzw-table-responsive">
<table class="wzw-table">
<thead>
<tr>
<th>Propriedade</th>
<th>Comportamento com Poucos Itens</th>
<th>Visual na Tela Larga</th>
<th>Uso Mais Recomendado</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong><code>auto-fit</code></strong></td>
<td>Colapsa pistas vazias para <code>0px</code> e estica os itens existentes.</td>
<td>Itens ocupam 100% da largura disponível da linha.</td>
<td><strong>Padrão absoluto</strong> para cartões, dashboards e catálogos.</td>
</tr>
<tr>
<td><strong><code>auto-fill</code></strong></td>
<td>Preserva as colunas vazias como espaços invisíveis reservados.</td>
<td>Itens mantêm tamanho mínimo; vãos vazios à direita.</td>
<td>Quando novos itens serão inseridos dinamicamente via JS.</td>
</tr>
</tbody>
</table>
</div>
<h2>5. Laboratório Prático: Grade Responsiva Mágica em Ação</h2>
<p>
  No exemplo abaixo, observe a fórmula <code>repeat(auto-fit, minmax(220px, 1fr))</code> operando em tempo real. Os cartões se rearranjam automaticamente conforme a largura da tela varia:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-35540" 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">92 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-35540', 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-35540', 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 CSS Grid Responsivo<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">      margin: 0;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* A GRADE MÁGICA: Zero Media Queries! */</span></span>
<span class="wzw-code-line">    .galeria-cursos {</span>
<span class="wzw-code-line">      display: grid;</span>
<span class="wzw-code-line">      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));</span>
<span class="wzw-code-line">      gap: 20px;</span>
<span class="wzw-code-line">      margin-top: 24px;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    .card-curso {</span>
<span class="wzw-code-line">      background: #1e293b;</span>
<span class="wzw-code-line">      border: 1px solid #334155;</span>
<span class="wzw-code-line">      border-radius: 12px;</span>
<span class="wzw-code-line">      padding: 20px;</span>
<span class="wzw-code-line">      display: flex;</span>
<span class="wzw-code-line">      flex-direction: column;</span>
<span class="wzw-code-line">      box-shadow: 0 4px 14px rgba(0,0,0,0.3);</span>
<span class="wzw-code-line">      transition: transform 0.2s ease, border-color 0.2s ease;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    .card-curso:hover {</span>
<span class="wzw-code-line">      transform: translateY(-4px);</span>
<span class="wzw-code-line">      border-color: #38bdf8;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    .card-tag {</span>
<span class="wzw-code-line">      font-size: 0.75rem;</span>
<span class="wzw-code-line">      font-weight: 700;</span>
<span class="wzw-code-line">      color: #38bdf8;</span>
<span class="wzw-code-line">      text-transform: uppercase;</span>
<span class="wzw-code-line">      margin-bottom: 8px;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    .card-curso h4 {</span>
<span class="wzw-code-line">      margin: 0 0 10px 0;</span>
<span class="wzw-code-line">      font-size: 1.1rem;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    .card-curso p {</span>
<span class="wzw-code-line">      margin: 0;</span>
<span class="wzw-code-line">      font-size: 0.85rem;</span>
<span class="wzw-code-line">      color: #94a3b8;</span>
<span class="wzw-code-line">      line-height: 1.5;</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:0;&quot;</span><span class="wzw-tk-tag">&gt;</span>Catálogo Auto-Responsivo com CSS Grid<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;&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    Redimensione a janela do navegador e observe as colunas mudando de 4 para 3, 2 e 1 automaticamente:</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;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;galeria-cursos&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<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;card-curso&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;span</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;card-tag&quot;</span><span class="wzw-tk-tag">&gt;</span>Módulo 01<span class="wzw-tk-tag">&lt;/span&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;h4&gt;</span>HTML5 Semântico<span class="wzw-tk-tag">&lt;/h4&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;p&gt;</span>Estruturação moderna e acessibilidade na base da web.<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>
<span class="wzw-code-line">&nbsp;</span>
<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;card-curso&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;span</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;card-tag&quot;</span><span class="wzw-tk-tag">&gt;</span>Módulo 02<span class="wzw-tk-tag">&lt;/span&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;h4&gt;</span>Fundamentos CSS<span class="wzw-tk-tag">&lt;/h4&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;p&gt;</span>Cascata, herança, especificidade e o Box Model.<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>
<span class="wzw-code-line">&nbsp;</span>
<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;card-curso&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;span</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;card-tag&quot;</span><span class="wzw-tk-tag">&gt;</span>Módulo 03<span class="wzw-tk-tag">&lt;/span&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;h4&gt;</span>Flexbox 1D<span class="wzw-tk-tag">&lt;/h4&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;p&gt;</span>Alinhamentos cirúrgicos e a física dos eixos no CSS.<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>
<span class="wzw-code-line">&nbsp;</span>
<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;card-curso&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;span</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;card-tag&quot;</span><span class="wzw-tk-tag">&gt;</span>Módulo 04<span class="wzw-tk-tag">&lt;/span&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;h4&gt;</span>CSS Grid 2D<span class="wzw-tk-tag">&lt;/h4&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;p&gt;</span>Arquiteturas bidimensionais fluidas sem media queries.<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>
<span class="wzw-code-line">  <span class="wzw-tk-tag">&lt;/div&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 CSS Grid Responsivo&lt;/title&gt;
  &lt;style&gt;
    body {
      font-family: &#039;Inter&#039;, system-ui, sans-serif;
      background: #0b0f19;
      color: #f8fafc;
      padding: 30px;
      margin: 0;
    }

    /* A GRADE MÁGICA: Zero Media Queries! */
    .galeria-cursos {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
      gap: 20px;
      margin-top: 24px;
    }

    .card-curso {
      background: #1e293b;
      border: 1px solid #334155;
      border-radius: 12px;
      padding: 20px;
      display: flex;
      flex-direction: column;
      box-shadow: 0 4px 14px rgba(0,0,0,0.3);
      transition: transform 0.2s ease, border-color 0.2s ease;
    }

    .card-curso:hover {
      transform: translateY(-4px);
      border-color: #38bdf8;
    }

    .card-tag {
      font-size: 0.75rem;
      font-weight: 700;
      color: #38bdf8;
      text-transform: uppercase;
      margin-bottom: 8px;
    }

    .card-curso h4 {
      margin: 0 0 10px 0;
      font-size: 1.1rem;
    }

    .card-curso p {
      margin: 0;
      font-size: 0.85rem;
      color: #94a3b8;
      line-height: 1.5;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;h2 style=&quot;color:#38bdf8; margin:0;&quot;&gt;Catálogo Auto-Responsivo com CSS Grid&lt;/h2&gt;
  &lt;p style=&quot;color:#94a3b8; font-size:0.9rem;&quot;&gt;
    Redimensione a janela do navegador e observe as colunas mudando de 4 para 3, 2 e 1 automaticamente:
  &lt;/p&gt;

  &lt;div class=&quot;galeria-cursos&quot;&gt;
    &lt;div class=&quot;card-curso&quot;&gt;
      &lt;span class=&quot;card-tag&quot;&gt;Módulo 01&lt;/span&gt;
      &lt;h4&gt;HTML5 Semântico&lt;/h4&gt;
      &lt;p&gt;Estruturação moderna e acessibilidade na base da web.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;card-curso&quot;&gt;
      &lt;span class=&quot;card-tag&quot;&gt;Módulo 02&lt;/span&gt;
      &lt;h4&gt;Fundamentos CSS&lt;/h4&gt;
      &lt;p&gt;Cascata, herança, especificidade e o Box Model.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;card-curso&quot;&gt;
      &lt;span class=&quot;card-tag&quot;&gt;Módulo 03&lt;/span&gt;
      &lt;h4&gt;Flexbox 1D&lt;/h4&gt;
      &lt;p&gt;Alinhamentos cirúrgicos e a física dos eixos no CSS.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;card-curso&quot;&gt;
      &lt;span class=&quot;card-tag&quot;&gt;Módulo 04&lt;/span&gt;
      &lt;h4&gt;CSS Grid 2D&lt;/h4&gt;
      &lt;p&gt;Arquiteturas bidimensionais fluidas sem media queries.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</textarea>
        </div>
    </div>
    
</div>
<p>
  Abra este laboratório no Playground IDE e teste redimensionar o painel para comprovar a adaptação mágica do número de colunas sem nenhuma linha de media query:
</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>6. Resumo e Próximos Passos</h2>
<ul>
<li><code>repeat(n, faixa)</code> compacta definições repetitivas de linhas e colunas.</li>
<li><code>minmax(min, max)</code> estabelece limites de segurança rígidos e elásticos para qualquer faixa.</li>
<li>A fórmula <code>repeat(auto-fit, minmax(280px, 1fr))</code> cria grades responsivas que calculam colunas automaticamente sem media queries.</li>
<li><code>auto-fit</code> colapsa colunas vazias para <code>0px</code>, esticando os itens existentes para preencher 100% da tela.</li>
<li><code>auto-fill</code> preserva as colunas vazias fantasmas na linha quando há poucos itens.</li>
</ul>
<div class="wzw-callout wzw-callout-success">
<p><strong>Próximo Passo:</strong> Agora que você domina a geometria das pistas, como gerenciar os respiros entre linhas e colunas sem os erros do passado? Na <strong>Lição 34</strong>, desvendaremos o <strong>Espaçamento com gap no Grid e no Flexbox</strong>!</p>
</div>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/grid-repeat-minmax-auto-fit-fill/">repeat, minmax e auto-fit no CSS Grid | 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/grid-repeat-minmax-auto-fit-fill/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
