<?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 layouts legados - Web-Zoneware</title>
	<atom:link href="https://webzoneware.com/tag/layouts-legados/feed/" rel="self" type="application/rss+xml" />
	<link>https://webzoneware.com/tag/layouts-legados/</link>
	<description>Mais do que apenas uma academia web.</description>
	<lastBuildDate>Thu, 22 Oct 2026 01:46:58 +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 layouts legados - Web-Zoneware</title>
	<link>https://webzoneware.com/tag/layouts-legados/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Layouts com float, clear e Clearfix no CSS &#124; Web Academy</title>
		<link>https://webzoneware.com/web-academy/curso-css/layouts-float-clear-legados/</link>
					<comments>https://webzoneware.com/web-academy/curso-css/layouts-float-clear-legados/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 01:46:58 +0000</pubDate>
				<category><![CDATA[Curso de CSS e CSS3]]></category>
		<category><![CDATA[block formatting context]]></category>
		<category><![CDATA[clear css]]></category>
		<category><![CDATA[clearfix]]></category>
		<category><![CDATA[curso css3 completo]]></category>
		<category><![CDATA[display flow-root]]></category>
		<category><![CDATA[float css]]></category>
		<category><![CDATA[layouts legados]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=29431</guid>

					<description><![CDATA[<p>Antes do surgimento do Flexbox e do CSS Grid, a construção de layouts na web viveu uma era heroica e caótica. Para colocar duas ou três colunas lado a lado, desenvolvedores do mundo inteiro sequestraram uma propriedade criada originalmente com um propósito muito mais humilde e editorial: o float. Compreender como o float funciona, por [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/layouts-float-clear-legados/">Layouts com float, clear e Clearfix 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">
  Antes do surgimento do Flexbox e do CSS Grid, a construção de layouts na web viveu uma era heroica e caótica. Para colocar duas ou três colunas lado a lado, desenvolvedores do mundo inteiro sequestraram uma propriedade criada originalmente com um propósito muito mais humilde e editorial: o <strong><code>float</code></strong>. Compreender como o <code>float</code> funciona, por que ele causava o temido colapso de altura dos contêineres e como limpá-lo com o clássico <em>Clearfix</em> e o moderno <code>display: flow-root</code> é indispensável tanto para manter sistemas legados quanto para diagramar artigos editoriais de alta classe.
</p>
<h2>1. O Propósito Original: Diagramação Editorial e Envoltório de Texto</h2>
<p>
  A propriedade <code>float</code> foi concebida na especificação CSS1 inspirando-se na tipografia tradicional de jornais e revistas: permitir que uma foto, ilustração ou citação flutuasse para a margem esquerda ou direita, enquanto os parágrafos de texto fluíam suavemente ao seu redor.
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-86900" 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-86900', 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-86900', 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">.foto-artigo {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">float</span>: left;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">margin</span>: 0 <span class="wzw-tk-num">20px</span> <span class="wzw-tk-num">20px</span> 0; /* Espaço para o texto não colar na foto */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.foto-artigo {
  float: left;
  margin: 0 20px 20px 0; /* Espaço para o texto não colar na foto */
}</textarea>
        </div>
    </div>
    
</div>
<h3>A Diferença Crucial entre <code>float</code> e <code>position: absolute</code></h3>
<p>
  Tanto <code>float</code> quanto <code>position: absolute</code> retiram a caixa do fluxo normal vertical de blocos. No entanto:
</p>
<ul>
<li>Com <code>position: absolute</code>, o texto seguinte ignora completamente o elemento e passa por baixo dele como se não houvesse nada ali.</li>
<li>Com <code>float</code>, o navegador cria uma área de exclusão: as caixas de bloco continuam passando por trás, mas <strong>o conteúdo em linha (as linhas de texto) é empurrado e contorna o contorno do elemento flutuante</strong>.</li>
</ul>
<h2>2. A Era dos Layouts com Float e o Colapso do Pai (Collapsing Parent)</h2>
<p>
  Entre 2002 e 2015, frameworks célebres como o <em>960 Grid System</em> e as versões 2 e 3 do <em>Bootstrap</em> usavam <code>float: left</code> com larguras percentuais para criar grades inteiras de páginas:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-40374" 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-40374', 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-40374', 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">/* Como se faziam colunas antes do Flexbox */</span></span>
<span class="wzw-code-line">.coluna-esquerda {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">float</span>: left;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">width</span>: 70%;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.coluna-direita {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">float</span>: right;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">width</span>: 30%;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Como se faziam colunas antes do Flexbox */
.coluna-esquerda {
  float: left;
  width: 70%;
}

.coluna-direita {
  float: right;
  width: 30%;
}</textarea>
        </div>
    </div>
    
</div>
<h3>O Fenômeno do Colapso de Altura</h3>
<p>
  No momento em que todos os filhos de um contêiner recebem <code>float</code>, surge o maior pesadelo dos desenvolvedores daquela era: <strong>o elemento pai encolhe para zero pixels de altura (<code>height: 0</code>)</strong>!
</p>
<p>
  Como os elementos flutuantes saíram do fluxo normal de blocos, o elemento pai calcula que não possui nenhum filho ocupando altura vertical. O resultado?
</p>
<ul>
<li>A cor de fundo e a borda do contêiner pai desaparecem completamente da tela.</li>
<li>O elemento seguinte no HTML (como um rodapé <code>&lt;footer&gt;</code>) sobe e fica esmagado ou sobreposto por baixo das colunas flutuantes!</li>
</ul>
<h2>3. A Propriedade <code>clear</code></h2>
<p>
  Para dizer a um elemento que ele <strong>não deve</strong> ficar ao lado de nenhum irmão flutuante anterior, usamos a propriedade <code>clear</code>:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-18910" 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">3 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-18910', 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-18910', 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">.rodape {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">clear</span>: both; /* Desce para baixo de qualquer float à esquerda ou à direita */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.rodape {
  clear: both; /* Desce para baixo de qualquer float à esquerda ou à direita */
}</textarea>
        </div>
    </div>
    
</div>
<p>Os valores disponíveis para <code>clear</code> são:</p>
<ul>
<li><code>left</code>: O topo do elemento deve ficar abaixo de qualquer elemento com <code>float: left</code> que veio antes dele.</li>
<li><code>right</code>: O topo do elemento deve ficar abaixo de qualquer elemento com <code>float: right</code>.</li>
<li><code>both</code>: O topo do elemento deve ficar abaixo de todos os elementos flutuantes (o valor mais utilizado).</li>
<li><code>none</code>: Valor padrão; permite que elementos flutuantes fiquem em ambos os lados.</li>
</ul>
<h2>4. A Evolução do Clearfix: Do Hack ao Padrão Moderno</h2>
<p>
  Para evitar ter que colocar <code>clear: both</code> manualmente em elementos seguintes, a comunidade web desenvolveu quatro gerações de técnicas para fazer o elemento pai englobar seus filhos flutuantes:
</p>
<h3>1ª Geração: A Div Vazia (Anti-padrão)</h3>
<p>
  Inseria-se uma <code>&lt;div style="clear: both;"&gt;&lt;/div&gt;</code> inútil logo antes de fechar o contêiner pai. Poluía o HTML com código semântico lixo.
</p>
<h3>2ª Geração: O Hack do <code>overflow: hidden</code></h3>
<p>
  Descobriu-se que aplicar <code>overflow: hidden</code> no pai forçava a criação de um novo <em>Block Formatting Context (BFC)</em>, obrigando o pai a conter a altura dos floats. O problema? Cortava sombras (<code>box-shadow</code>) e impedia menus dropdown e tooltips com posicionamento absoluto de saírem do cartão!
</p>
<h3>3ª Geração: O Micro Clearfix de Nicolas Gallagher</h3>
<p>
  A técnica consagrada mundialmente que usava pseudoelementos CSS sem tocar no HTML:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-45384" 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">6 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-45384', 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-45384', 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">/* O clássico Micro Clearfix */</span></span>
<span class="wzw-code-line">.clearfix::after {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">content</span>: <span class="wzw-tk-str">&quot;&quot;</span>;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">display</span>: table;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">clear</span>: both;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* O clássico Micro Clearfix */
.clearfix::after {
  content: &quot;&quot;;
  display: table;
  clear: both;
}</textarea>
        </div>
    </div>
    
</div>
<h3>4ª Geração (CSS Moderno): <code>display: flow-root</code></h3>
<p>
  A W3C finalmente resolveu o problema de forma definitiva introduzindo o valor <strong><code>display: flow-root</code></strong>. Ele cria um novo Contexto de Formatação de Bloco nativo de propósito específico, contendo todos os floats internos perfeitamente sem nenhum pseudoelemento e sem cortar sombras ou menus!
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-37729" 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-37729', 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-37729', 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">/* A Solução Moderna e Elegante */</span></span>
<span class="wzw-code-line">.conteiner-pai {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">display</span>: flow-root; /* Contém todos os floats filhos automaticamente! */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* A Solução Moderna e Elegante */
.conteiner-pai {
  display: flow-root; /* Contém todos os floats filhos automaticamente! */
}</textarea>
        </div>
    </div>
    
</div>
<h2>5. Quando Usar <code>float</code> Hoje em Dia?</h2>
<div class="wzw-callout wzw-callout-warning">
<p><strong>A Regra de Ouro da Web Moderna:</strong></p>
<ul>
<li>❌ <strong>NUNCA use <code>float</code> para estruturar layouts:</strong> Para grades, colunas de páginas, barras de navegação ou cards, use <strong>Flexbox</strong> ou <strong>CSS Grid</strong>.</li>
<li>✅ <strong>USE <code>float</code> exclusivamente para o seu propósito original:</strong> Diagramação de texto ao redor de imagens, fotos de autores e destaques visuais (<em>pull-quotes</em>) dentro de artigos de blogs e notícias.</li>
</ul>
</div>
<h3>Bônus Moderno: Recortes com <code>shape-outside</code></h3>
<p>
  Ao combinar <code>float</code> com a propriedade moderna <strong><code>shape-outside</code></strong>, o texto não contorna apenas uma caixa retangular rígida, mas pode seguir a curvatura circular de uma foto ou um polígono orgânico!
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-37776" 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">8 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-37776', 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-37776', 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">.avatar-redondo {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">float</span>: left;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">width</span>: <span class="wzw-tk-num">140px</span>;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">height</span>: <span class="wzw-tk-num">140px</span>;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">border-radius</span>: 50%;</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">shape-outside</span>: circle(50%); /* O texto se curva perfeitamente em arco! */</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">margin</span>: 0 <span class="wzw-tk-num">24px</span> <span class="wzw-tk-num">16px</span> 0;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.avatar-redondo {
  float: left;
  width: 140px;
  height: 140px;
  border-radius: 50%;
  shape-outside: circle(50%); /* O texto se curva perfeitamente em arco! */
  margin: 0 24px 16px 0;
}</textarea>
        </div>
    </div>
    
</div>
<h2>6. Laboratório Prático: Diagramação com Float e <code>display: flow-root</code></h2>
<p>
  No exemplo abaixo, observe uma imagem flutuando à esquerda com o texto contornando o conteúdo, e como o contêiner com <code>display: flow-root</code> abraça a altura total da imagem sem colapsar:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-80722" 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">76 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-80722', 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-80722', 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 Float e Clear CSS<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: #0f172a;</span>
<span class="wzw-code-line">      color: #e2e8f0;</span>
<span class="wzw-code-line">      padding: 30px;</span>
<span class="wzw-code-line">      line-height: 1.7;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* Contêiner com display: flow-root contendo o float sem colapsar */</span></span>
<span class="wzw-code-line">    .artigo-box {</span>
<span class="wzw-code-line">      max-width: 640px;</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: 24px;</span>
<span class="wzw-code-line">      margin-bottom: 30px;</span>
<span class="wzw-code-line">      display: flow-root; /* Experimente comentar esta linha para ver o colapso! */</span>
<span class="wzw-code-line">      box-shadow: 0 10px 25px rgba(0,0,0,0.3);</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* Imagem flutuante com texto correndo em volta */</span></span>
<span class="wzw-code-line">    .imagem-flutuante {</span>
<span class="wzw-code-line">      float: left;</span>
<span class="wzw-code-line">      width: 160px;</span>
<span class="wzw-code-line">      height: 160px;</span>
<span class="wzw-code-line">      background: linear-gradient(135deg, #3b82f6, #8b5cf6);</span>
<span class="wzw-code-line">      border-radius: 12px;</span>
<span class="wzw-code-line">      margin: 0 20px 14px 0;</span>
<span class="wzw-code-line">      display: flex;</span>
<span class="wzw-code-line">      align-items: center;</span>
<span class="wzw-code-line">      justify-content: center;</span>
<span class="wzw-code-line">      color: #fff;</span>
<span class="wzw-code-line">      font-weight: 700;</span>
<span class="wzw-code-line">      text-align: center;</span>
<span class="wzw-code-line">      padding: 10px;</span>
<span class="wzw-code-line">      box-sizing: border-box;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    .rodape-artigo {</span>
<span class="wzw-code-line">      background: #0b0f19;</span>
<span class="wzw-code-line">      padding: 12px 18px;</span>
<span class="wzw-code-line">      border-radius: 8px;</span>
<span class="wzw-code-line">      border: 1px solid #1e293b;</span>
<span class="wzw-code-line">      font-size: 0.85rem;</span>
<span class="wzw-code-line">      color: #94a3b8;</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;&quot;</span><span class="wzw-tk-tag">&gt;</span>Demonstração de Float Editorial Moderno<span class="wzw-tk-tag">&lt;/h2&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;artigo-box&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;imagem-flutuante&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">      Foto Flutuante (float: left)</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;p</span> <span class="wzw-tk-attr">style</span>=<span class="wzw-tk-str">&quot;margin-top:0;&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">      Este parágrafo de texto demonstra o funcionamento clássico do <span class="wzw-tk-tag">&lt;code&gt;</span>float: left<span class="wzw-tk-tag">&lt;/code&gt;</span>. Observe atentamente como as linhas de texto contornam o retângulo colorido à esquerda, preenchendo o espaço disponível com harmonia editorial.</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;p&gt;</span></span>
<span class="wzw-code-line">      Graças à declaração <span class="wzw-tk-tag">&lt;code&gt;</span>display: flow-root<span class="wzw-tk-tag">&lt;/code&gt;</span> na caixa pai, o fundo azul-escuro e a borda englobam a altura total da imagem flutuante, impedindo que o rodapé abaixo seja engolido!</span>
<span class="wzw-code-line">    <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;rodape-artigo&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    📄 Eu sou um rodapé subsequente. Como o pai do artigo usou <span class="wzw-tk-tag">&lt;code&gt;</span>display: flow-root<span class="wzw-tk-tag">&lt;/code&gt;</span>, eu permaneço respeitosamente posicionado abaixo de todo o conteúdo.</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 Float e Clear CSS&lt;/title&gt;
  &lt;style&gt;
    body {
      font-family: &#039;Inter&#039;, system-ui, sans-serif;
      background: #0f172a;
      color: #e2e8f0;
      padding: 30px;
      line-height: 1.7;
    }

    /* Contêiner com display: flow-root contendo o float sem colapsar */
    .artigo-box {
      max-width: 640px;
      background: #1e293b;
      border: 1px solid #334155;
      border-radius: 12px;
      padding: 24px;
      margin-bottom: 30px;
      display: flow-root; /* Experimente comentar esta linha para ver o colapso! */
      box-shadow: 0 10px 25px rgba(0,0,0,0.3);
    }

    /* Imagem flutuante com texto correndo em volta */
    .imagem-flutuante {
      float: left;
      width: 160px;
      height: 160px;
      background: linear-gradient(135deg, #3b82f6, #8b5cf6);
      border-radius: 12px;
      margin: 0 20px 14px 0;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #fff;
      font-weight: 700;
      text-align: center;
      padding: 10px;
      box-sizing: border-box;
    }

    .rodape-artigo {
      background: #0b0f19;
      padding: 12px 18px;
      border-radius: 8px;
      border: 1px solid #1e293b;
      font-size: 0.85rem;
      color: #94a3b8;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;h2 style=&quot;color:#38bdf8;&quot;&gt;Demonstração de Float Editorial Moderno&lt;/h2&gt;

  &lt;div class=&quot;artigo-box&quot;&gt;
    &lt;div class=&quot;imagem-flutuante&quot;&gt;
      Foto Flutuante (float: left)
    &lt;/div&gt;

    &lt;p style=&quot;margin-top:0;&quot;&gt;
      Este parágrafo de texto demonstra o funcionamento clássico do &lt;code&gt;float: left&lt;/code&gt;. Observe atentamente como as linhas de texto contornam o retângulo colorido à esquerda, preenchendo o espaço disponível com harmonia editorial.
    &lt;/p&gt;

    &lt;p&gt;
      Graças à declaração &lt;code&gt;display: flow-root&lt;/code&gt; na caixa pai, o fundo azul-escuro e a borda englobam a altura total da imagem flutuante, impedindo que o rodapé abaixo seja engolido!
    &lt;/p&gt;
  &lt;/div&gt;

  &lt;div class=&quot;rodape-artigo&quot;&gt;
    📄 Eu sou um rodapé subsequente. Como o pai do artigo usou &lt;code&gt;display: flow-root&lt;/code&gt;, eu permaneço respeitosamente posicionado abaixo de todo o conteúdo.
  &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</textarea>
        </div>
    </div>
    
</div>
<p>
  Abra este laboratório no Playground IDE e teste remover o <code>display: flow-root</code> para ver visualmente o efeito desastroso do colapso de pai em ação:
</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. Resumo e Próximos Passos</h2>
<ul>
<li><code>float: left</code> e <code>float: right</code> removem o elemento do fluxo de blocos, mas forçam o texto em linha a contornar o contorno.</li>
<li>Elementos flutuantes fazem com que contêineres pais sofram <strong>colapso de altura</strong> (<code>height: 0</code>).</li>
<li>A propriedade <code>clear: both</code> instrui um elemento a descer para baixo de qualquer float anterior.</li>
<li>O <em>Micro Clearfix</em> foi a solução mais famosa da era CSS2.1, utilizando <code>::after</code> com <code>clear: both</code>.</li>
<li>O padrão oficial moderno para conter floats e criar um novo BFC sem efeitos colaterais é <strong><code>display: flow-root</code></strong>.</li>
</ul>
<div class="wzw-callout wzw-callout-success">
<p><strong>A Revolução Começa Aqui:</strong> Agora que você conhece as dificuldades históricas dos layouts legados, prepare-se para a tecnologia que transformou o design web para sempre! Na <strong>Lição 27</strong>, daremos as boas-vindas ao <strong>Flexbox: Introdução, Conceito de Eixos (Main Axis &#038; Cross Axis)</strong>!</p>
</div>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/layouts-float-clear-legados/">Layouts com float, clear e Clearfix 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/layouts-float-clear-legados/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
