<?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 align-self - Web-Zoneware</title>
	<atom:link href="https://webzoneware.com/tag/align-self/feed/" rel="self" type="application/rss+xml" />
	<link>https://webzoneware.com/tag/align-self/</link>
	<description>Mais do que apenas uma academia web.</description>
	<lastBuildDate>Thu, 22 Oct 2026 02:14:25 +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 align-self - Web-Zoneware</title>
	<link>https://webzoneware.com/tag/align-self/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Flex Items: flex-grow, shrink, basis e order &#124; Web Academy</title>
		<link>https://webzoneware.com/web-academy/curso-css/flex-items-grow-shrink-basis-order/</link>
					<comments>https://webzoneware.com/web-academy/curso-css/flex-items-grow-shrink-basis-order/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 02:14:25 +0000</pubDate>
				<category><![CDATA[Curso de CSS e CSS3]]></category>
		<category><![CDATA[align-self]]></category>
		<category><![CDATA[curso css3 completo]]></category>
		<category><![CDATA[flex items]]></category>
		<category><![CDATA[flex shorthand]]></category>
		<category><![CDATA[flex-basis]]></category>
		<category><![CDATA[flex-grow]]></category>
		<category><![CDATA[flex-shrink]]></category>
		<category><![CDATA[order css]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=29437</guid>

					<description><![CDATA[<p>Nas lições anteriores, configuramos o elemento pai (o Flex Container) como o maestro do layout. Agora, passamos a batuta para os músicos individuais: os Flex Items. Cada elemento filho direto possui propriedades exclusivas para decidir como reagir quando há espaço de sobra no contêiner, como se defender para não ser esmagado quando a tela diminui, [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/flex-items-grow-shrink-basis-order/">Flex Items: flex-grow, shrink, basis e order | Web Academy</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wzw-lesson-lead">
  Nas lições anteriores, configuramos o elemento pai (o Flex Container) como o maestro do layout. Agora, passamos a batuta para os músicos individuais: os <strong>Flex Items</strong>. Cada elemento filho direto possui propriedades exclusivas para decidir como reagir quando há espaço de sobra no contêiner, como se defender para não ser esmagado quando a tela diminui, como desobedecer o alinhamento geral do pai com <code>align-self</code> e como alterar sua ordem visual com <code>order</code>.
</p>
<h2>1. <code>flex-basis</code> — O Ponto de Partida Geométrico</h2>
<p>
  A propriedade <code>flex-basis</code> define o <strong>tamanho ideal inicial</strong> de um item flexível antes que qualquer crescimento (<code>flex-grow</code>) ou encolhimento (<code>flex-shrink</code>) seja calculado pelo navegador:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-88901" 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-88901', 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-88901', 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">.item {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">flex-basis</span>: <span class="wzw-tk-num">260px</span>; /* Base inicial de <span class="wzw-tk-num">260px</span> ao longo do Eixo Principal */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.item {
  flex-basis: 260px; /* Base inicial de 260px ao longo do Eixo Principal */
}</textarea>
        </div>
    </div>
    
</div>
<ul>
<li>Se o Eixo Principal for horizontal (<code>flex-direction: row</code>), <code>flex-basis</code> atua como uma largura inicial (<code>width</code>).</li>
<li>Se o Eixo Principal for vertical (<code>flex-direction: column</code>), <code>flex-basis</code> atua como uma altura inicial (<code>height</code>).</li>
<li><strong><code>flex-basis: auto</code> (Padrão):</strong> O navegador consulta a largura/altura declarada do item. Se nenhuma dimensão for definida, ele assume o tamanho exato do conteúdo interno (<em>content-size</em>).</li>
</ul>
<h2>2. <code>flex-grow</code> — A Conquista do Espaço Sobressalente</h2>
<p>
  Quando todos os itens são posicionados e ainda sobra espaço vazio no Eixo Principal, a propriedade <strong><code>flex-grow</code></strong> define a capacidade de um item se expandir para absorver essa fatia restante:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-17277" 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-17277', 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-17277', 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">.item-expandir {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">flex-grow</span>: 1; /* Valor numérico sem unidade (fator de proporção) */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.item-expandir {
  flex-grow: 1; /* Valor numérico sem unidade (fator de proporção) */
}</textarea>
        </div>
    </div>
    
</div>
<div class="wzw-callout wzw-callout-info">
<p><strong>A Matemática do <code>flex-grow</code>:</strong> O valor padrão é <code>0</code> (o item não cresce, mantendo sua base). Se você tem três itens e todos recebem <code>flex-grow: 1</code>, o espaço livre restante é dividido em 3 partes iguais. Se o Item A receber <code>flex-grow: 2</code> e os Itens B e C receberem <code>flex-grow: 1</code>, o espaço livre é fatiado em 4 cotas (2 + 1 + 1): o Item A abocanha 50% de todo o espaço vago, e B e C recebem 25% cada!</p>
</div>
<h2>3. <code>flex-shrink</code> — A Defesa Contra o Esmagamento</h2>
<p>
  O inverso do crescimento é o encolhimento. Se o contêiner encolher e o espaço total for insuficiente para abrigar a soma dos <code>flex-basis</code> dos itens, a propriedade <strong><code>flex-shrink</code></strong> define como eles devem ceder espaço para evitar transbordamento (<em>overflow</em>):
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-74820" 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-74820', 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-74820', 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,</span>
<span class="wzw-code-line">.icone-menu {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">flex-shrink</span>: 0; /* IMUNIDADE: Nunca encolhe nem se deforma! */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.avatar,
.icone-menu {
  flex-shrink: 0; /* IMUNIDADE: Nunca encolhe nem se deforma! */
}</textarea>
        </div>
    </div>
    
</div>
<ul>
<li><strong>O Padrão é <code>1</code>:</strong> Por padrão, todos os itens flexíveis aceitam ser espremidos proporcionalmente.</li>
<li><strong>O Poder de <code>flex-shrink: 0</code>:</strong> Um dos truques mais cruciais da web moderna! Ao colocar <code>flex-shrink: 0</code> em fotos de perfil, logotipos, badges e botões laterais, você impede que o texto vizinho esmague a imagem em telas de smartphone estreitas.</li>
</ul>
<h2>4. O Atalho Consagrado: <code>flex</code></h2>
<p>
  Na prática profissional, raramente escrevemos as três propriedades separadas. A própria especificação da W3C recomenda enfaticamente o uso do atalho unificado <strong><code>flex</code></strong>:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-76753" 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-76753', 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-76753', 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">/* Sintaxe: flex: [flex-grow] [flex-shrink] [flex-basis]; */</span></span>
<span class="wzw-code-line">.card {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">flex</span>: 1 1 <span class="wzw-tk-num">280px</span>;</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Sintaxe: flex: [flex-grow] [flex-shrink] [flex-basis]; */
.card {
  flex: 1 1 280px;
}</textarea>
        </div>
    </div>
    
</div>
<h3>Os 4 Presets Mais Famosos do Mundo Real</h3>
<div class="wzw-table-responsive">
<table class="wzw-table">
<thead>
<tr>
<th>Declaração Abreviação</th>
<th>Equivalente Longo</th>
<th>Comportamento no Layout</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong><code>flex: initial;</code></strong></td>
<td><code>flex: 0 1 auto;</code></td>
<td>Padrão do navegador. Não cresce, encolhe se faltar espaço, tamanho baseado no conteúdo.</td>
</tr>
<tr>
<td><strong><code>flex: auto;</code></strong></td>
<td><code>flex: 1 1 auto;</code></td>
<td>Totalmente elástico. Cresce e encolhe respeitando o tamanho original do conteúdo.</td>
</tr>
<tr>
<td><strong><code>flex: none;</code></strong></td>
<td><code>flex: 0 0 auto;</code></td>
<td>Totalmente rígido. Não cresce nem encolhe sob nenhuma hipótese (ideal para barras fixas).</td>
</tr>
<tr>
<td><strong><code>flex: 1;</code></strong></td>
<td><code>flex: 1 1 0%;</code></td>
<td><strong>A Fórmula Mágica de Colunas Iguais:</strong> Zera a base de conteúdo e divide o contêiner em fatias matematicamente idênticas!</td>
</tr>
</tbody>
</table>
</div>
<h2>5. <code>align-self</code> — A Rebeldia Individual na Transversal</h2>
<p>
  Se o contêiner pai declarou <code>align-items: center</code>, todos os filhos ficarão centralizados verticalmente. Mas e se um único botão precisar ficar colado no topo ou esticado na base? Para isso usamos <strong><code>align-self</code></strong> no elemento filho:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-57227" 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-57227', 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-57227', 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">.botao-fechar {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">align-self</span>: flex-start; /* Ignora o alinhamento do pai e sobe para o topo! */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.botao-fechar {
  align-self: flex-start; /* Ignora o alinhamento do pai e sobe para o topo! */
}</textarea>
        </div>
    </div>
    
</div>
<p>Valores aceitos: <code>auto</code> (herda o valor de <code>align-items</code> do pai), <code>flex-start</code>, <code>flex-end</code>, <code>center</code>, <code>baseline</code> e <code>stretch</code>.</p>
<h2>6. <code>order</code> e o Perigo de Acessibilidade (WCAG)</h2>
<p>
  Por padrão, os itens flexíveis são renderizados na exata ordem em que aparecem no código HTML (<code>order: 0</code>). A propriedade <code>order</code> permite reorganizar visualmente essa sequência sem alterar o HTML:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-81914" 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">7 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-81914', 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-81914', 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">.destaque-vip {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">order</span>: -1; /* Pula para o início de toda a fila visual */</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">.item-secundario {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">order</span>: 10; /* Vai para o fim da fila */</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>.destaque-vip {
  order: -1; /* Pula para o início de toda a fila visual */
}

.item-secundario {
  order: 10; /* Vai para o fim da fila */
}</textarea>
        </div>
    </div>
    
</div>
<div class="wzw-callout wzw-callout-warning">
<p><strong>Aviso Crítico de Acessibilidade:</strong> A propriedade <code>order</code> altera exclusivamente a <strong>apresentação visual óptica</strong>. Ela <strong>NÃO</strong> altera a ordem do código na Árvore DOM, a ordem de leitura por sintetizadores de voz para deficientes visuais e nem a navegação via tecla <code>Tab</code> do teclado! Trocar itens de lugar visualmente com <code>order</code> sem cuidado cria graves barreiras de acessibilidade (WCAG 2.2 Critério 1.3.2).</p>
</div>
<h2>7. Matriz das Propriedades dos Flex Items</h2>
<div class="wzw-table-responsive">
<table class="wzw-table">
<thead>
<tr>
<th>Propriedade</th>
<th>Tipo de Valor</th>
<th>Padrão</th>
<th>Objetivo Principal</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>flex-basis</code></td>
<td>Comprimento (<code>px</code>, <code>%</code>) ou <code>auto</code></td>
<td><code>auto</code></td>
<td>Define o tamanho base inicial antes de crescer ou encolher.</td>
</tr>
<tr>
<td><code>flex-grow</code></td>
<td>Número positivo (&ge; 0)</td>
<td><code>0</code></td>
<td>Dita a proporção de absorção do espaço livre sobressalente.</td>
</tr>
<tr>
<td><code>flex-shrink</code></td>
<td>Número positivo (&ge; 0)</td>
<td><code>1</code></td>
<td>Dita a proporção de encolhimento caso falte espaço físico.</td>
</tr>
<tr>
<td><code>flex</code></td>
<td>Atalho (3 valores)</td>
<td><code>0 1 auto</code></td>
<td>Combina grow, shrink e basis em uma única linha padronizada.</td>
</tr>
<tr>
<td><code>align-self</code></td>
<td>Valores de alinhamento</td>
<td><code>auto</code></td>
<td>Sobrescreve o <code>align-items</code> do pai para este filho específico.</td>
</tr>
<tr>
<td><code>order</code></td>
<td>Número inteiro (&plusmn;)</td>
<td><code>0</code></td>
<td>Modifica a ordem visual de exibição na tela.</td>
</tr>
</tbody>
</table>
</div>
<h2>8. Laboratório Prático: Componente de Notificação com Itens Flexíveis</h2>
<p>
  No exemplo abaixo, combinamos um avatar protegido contra encolhimento (<code>flex-shrink: 0</code>), um corpo de mensagem que se expande para ocupar todo o espaço (<code>flex-grow: 1</code>) e um botão que se alinha sozinho no topo (<code>align-self: flex-start</code>):
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-87879" 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">89 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-87879', 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-87879', 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 Flex Items<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: #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">    <span class="wzw-tk-comment">/* O Contêiner Pai */</span></span>
<span class="wzw-code-line">    .notificacao-card {</span>
<span class="wzw-code-line">      display: flex;</span>
<span class="wzw-code-line">      align-items: center; /* Alinha o centro por padrão */</span>
<span class="wzw-code-line">      gap: 16px;</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: 14px;</span>
<span class="wzw-code-line">      padding: 18px 22px;</span>
<span class="wzw-code-line">      max-width: 520px;</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">/* Filho 1: Avatar blindado contra deformação */</span></span>
<span class="wzw-code-line">    .avatar {</span>
<span class="wzw-code-line">      flex-shrink: 0; /* Nunca esmaga o círculo! */</span>
<span class="wzw-code-line">      width: 48px;</span>
<span class="wzw-code-line">      height: 48px;</span>
<span class="wzw-code-line">      border-radius: 50%;</span>
<span class="wzw-code-line">      background: linear-gradient(135deg, #3b82f6, #8b5cf6);</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">      font-weight: 700;</span>
<span class="wzw-code-line">      color: #fff;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* Filho 2: Mensagem que absorve todo o espaço vago */</span></span>
<span class="wzw-code-line">    .conteudo-texto {</span>
<span class="wzw-code-line">      flex-grow: 1; /* Ocupa todo o miolo disponível */</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    .conteudo-texto h4 {</span>
<span class="wzw-code-line">      margin: 0 0 4px 0;</span>
<span class="wzw-code-line">      font-size: 0.95rem;</span>
<span class="wzw-code-line">      color: #38bdf8;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    .conteudo-texto 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.4;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* Filho 3: Botão de fechar rebelde alinhado ao topo */</span></span>
<span class="wzw-code-line">    .btn-fechar {</span>
<span class="wzw-code-line">      align-self: flex-start; /* Sobe para o topo ignorando o centro do pai */</span>
<span class="wzw-code-line">      background: transparent;</span>
<span class="wzw-code-line">      border: none;</span>
<span class="wzw-code-line">      color: #64748b;</span>
<span class="wzw-code-line">      font-size: 1.2rem;</span>
<span class="wzw-code-line">      cursor: pointer;</span>
<span class="wzw-code-line">      padding: 0;</span>
<span class="wzw-code-line">      line-height: 1;</span>
<span class="wzw-code-line">      transition: color 0.2s ease;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    .btn-fechar:hover {</span>
<span class="wzw-code-line">      color: #ef4444;</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:#e2e8f0; margin-top:0;&quot;</span><span class="wzw-tk-tag">&gt;</span>Demonstração Prática de Flex Items<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;notificacao-card&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;avatar&quot;</span><span class="wzw-tk-tag">&gt;</span>AG<span class="wzw-tk-tag">&lt;/div&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;conteudo-texto&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;h4&gt;</span>Atualização de Sistema Concluída<span class="wzw-tk-tag">&lt;/h4&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;p&gt;</span>O motor da Web Academy foi atualizado com sucesso para a versão 2.0. Aproveite os novos laboratórios interativos!<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;button</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;btn-fechar&quot;</span> <span class="wzw-tk-attr">title</span>=<span class="wzw-tk-str">&quot;Fechar&quot;</span><span class="wzw-tk-tag">&gt;</span>×<span class="wzw-tk-tag">&lt;/button&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 Flex Items&lt;/title&gt;
  &lt;style&gt;
    body {
      font-family: &#039;Inter&#039;, system-ui, sans-serif;
      background: #0f172a;
      color: #f8fafc;
      padding: 30px;
    }

    /* O Contêiner Pai */
    .notificacao-card {
      display: flex;
      align-items: center; /* Alinha o centro por padrão */
      gap: 16px;
      background: #1e293b;
      border: 1px solid #334155;
      border-radius: 14px;
      padding: 18px 22px;
      max-width: 520px;
      box-shadow: 0 10px 25px rgba(0,0,0,0.3);
    }

    /* Filho 1: Avatar blindado contra deformação */
    .avatar {
      flex-shrink: 0; /* Nunca esmaga o círculo! */
      width: 48px;
      height: 48px;
      border-radius: 50%;
      background: linear-gradient(135deg, #3b82f6, #8b5cf6);
      display: flex;
      align-items: center;
      justify-content: center;
      font-weight: 700;
      color: #fff;
    }

    /* Filho 2: Mensagem que absorve todo o espaço vago */
    .conteudo-texto {
      flex-grow: 1; /* Ocupa todo o miolo disponível */
    }

    .conteudo-texto h4 {
      margin: 0 0 4px 0;
      font-size: 0.95rem;
      color: #38bdf8;
    }

    .conteudo-texto p {
      margin: 0;
      font-size: 0.85rem;
      color: #94a3b8;
      line-height: 1.4;
    }

    /* Filho 3: Botão de fechar rebelde alinhado ao topo */
    .btn-fechar {
      align-self: flex-start; /* Sobe para o topo ignorando o centro do pai */
      background: transparent;
      border: none;
      color: #64748b;
      font-size: 1.2rem;
      cursor: pointer;
      padding: 0;
      line-height: 1;
      transition: color 0.2s ease;
    }

    .btn-fechar:hover {
      color: #ef4444;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;h2 style=&quot;color:#e2e8f0; margin-top:0;&quot;&gt;Demonstração Prática de Flex Items&lt;/h2&gt;

  &lt;div class=&quot;notificacao-card&quot;&gt;
    &lt;div class=&quot;avatar&quot;&gt;AG&lt;/div&gt;
    &lt;div class=&quot;conteudo-texto&quot;&gt;
      &lt;h4&gt;Atualização de Sistema Concluída&lt;/h4&gt;
      &lt;p&gt;O motor da Web Academy foi atualizado com sucesso para a versão 2.0. Aproveite os novos laboratórios interativos!&lt;/p&gt;
    &lt;/div&gt;
    &lt;button class=&quot;btn-fechar&quot; title=&quot;Fechar&quot;&gt;×&lt;/button&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 contêiner ou remover o <code>flex-shrink: 0</code> do avatar para constatar a diferença:
</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>9. Resumo e Próximos Passos</h2>
<ul>
<li><code>flex-basis</code> determina o ponto de partida do tamanho do item antes de crescer ou encolher.</li>
<li><code>flex-grow</code> define a proporção para absorver o espaço sobressalente livre do contêiner.</li>
<li><code>flex-shrink: 0</code> imuniza um elemento contra esmagamentos quando o contêiner encolhe.</li>
<li>O atalho <code>flex: 1</code> (equivalente a <code>1 1 0%</code>) é a fórmula definitiva para colunas de larguras idênticas.</li>
<li><code>align-self</code> permite que um filho ignore a regra de <code>align-items</code> do pai.</li>
<li><code>order</code> reorganiza visualmente os itens na tela, mas exige cautela redobrada com acessibilidade.</li>
</ul>
<div class="wzw-callout wzw-callout-success">
<p><strong>A Grande Conclusão do Módulo 3:</strong> Agora que você conhece todas as propriedades do pai e dos filhos, é hora de colocar tudo à prova em projetos reais! Na <strong>Lição 30</strong>, fecharemos o Módulo 3 com chave de ouro: <strong>Layouts Práticos com Flexbox (Navbars, Cards de Preço, Media Objects e Rodapés Grudados)</strong>!</p>
</div>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/flex-items-grow-shrink-basis-order/">Flex Items: flex-grow, shrink, basis e order | 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/flex-items-grow-shrink-basis-order/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
