<?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 prefers-reduced-motion - Web-Zoneware</title>
	<atom:link href="https://webzoneware.com/tag/prefers-reduced-motion/feed/" rel="self" type="application/rss+xml" />
	<link>https://webzoneware.com/tag/prefers-reduced-motion/</link>
	<description>Mais do que apenas uma academia web.</description>
	<lastBuildDate>Thu, 22 Oct 2026 03:07:26 +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 prefers-reduced-motion - Web-Zoneware</title>
	<link>https://webzoneware.com/tag/prefers-reduced-motion/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Media Queries e Breakpoints Modernos no CSS &#124; Web Academy</title>
		<link>https://webzoneware.com/web-academy/curso-css/media-queries-breakpoints-css/</link>
					<comments>https://webzoneware.com/web-academy/curso-css/media-queries-breakpoints-css/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 03:07:26 +0000</pubDate>
				<category><![CDATA[Curso de CSS e CSS3]]></category>
		<category><![CDATA[breakpoints css]]></category>
		<category><![CDATA[curso css3 completo]]></category>
		<category><![CDATA[design responsivo]]></category>
		<category><![CDATA[media queries]]></category>
		<category><![CDATA[prefers-color-scheme]]></category>
		<category><![CDATA[prefers-reduced-motion]]></category>
		<category><![CDATA[sintaxe de faixa]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=29453</guid>

					<description><![CDATA[<p>Na lição anterior, estabelecemos a filosofia Mobile-First como o alicerce da web moderna. Agora, é hora de dominar o motor que torna essa adaptação tecnicamente viável: as Media Queries (Consultas de Mídia). Com a regra @media, seu código CSS ganha a capacidade de interrogar ativamente o dispositivo do usuário: &#8220;A tela possui mais de 768px [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/media-queries-breakpoints-css/">Media Queries e Breakpoints Modernos 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">
  Na lição anterior, estabelecemos a filosofia Mobile-First como o alicerce da web moderna. Agora, é hora de dominar o motor que torna essa adaptação tecnicamente viável: as <strong>Media Queries (Consultas de Mídia)</strong>. Com a regra <code>@media</code>, seu código CSS ganha a capacidade de interrogar ativamente o dispositivo do usuário: <em>&#8220;A tela possui mais de 768px de largura? O usuário está usando mouse ou tela de toque? O sistema operacional está configurado em Modo Escuro? O usuário solicitou redução de animações por labirintite?&#8221;</em>. Nesta lição, você aprenderá a revolucionária <strong>Sintaxe de Faixa (Range Syntax)</strong>, a definição estratégica de breakpoints e os recursos de acessibilidade do CSS moderno.
</p>
<h2>1. Anatomia Fundamental de uma Media Query</h2>
<p>
  Uma consulta de mídia é composta por um <strong>Tipo de Mídia (Media Type)</strong> opcional e uma ou mais <strong>Expressões de Recursos (Media Features)</strong> combinadas por operadores lógicos:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-20467" 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-20467', 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-20467', 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 Geral: @media [tipo] and (recurso: valor) */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-kw">@media</span> screen and (min-width: <span class="wzw-tk-num">768px</span>) {</span>
<span class="wzw-code-line">  <span class="wzw-tk-comment">/* Regras aplicadas apenas em telas com largura mínima de 768px */</span></span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Sintaxe Geral: @media [tipo] and (recurso: valor) */
@media screen and (min-width: 768px) {
  /* Regras aplicadas apenas em telas com largura mínima de 768px */
}</textarea>
        </div>
    </div>
    
</div>
<h3>Tipos de Mídia (Media Types)</h3>
<ul>
<li><strong><code>all</code>:</strong> Valor padrão. Aplica a regra a todas as categorias de dispositivos.</li>
<li><strong><code>screen</code>:</strong> Destinado exclusivamente a telas digitais (computadores, tablets, smartphones).</li>
<li><strong><code>print</code>:</strong> Ativado quando a página é enviada para a impressora ou visualizada na janela de impressão do navegador (Ctrl+P / Cmd+P).</li>
<li><strong><code>speech</code>:</strong> Voltado para sintetizadores de voz e leitores de tela especializados.</li>
</ul>
<h3>Operadores Lógicos</h3>
<ul>
<li><strong><code>and</code>:</strong> Exige que todas as condições encadeadas sejam verdadeiras.</li>
<li><strong><code>not</code>:</strong> Inverte o resultado da consulta inteira.</li>
<li><strong>Vírgula (<code>,</code>):</strong> Funciona como o operador lógico <strong>OU (OR)</strong>. Se qualquer uma das condições separadas por vírgula for atendida, as regras são executadas.</li>
</ul>
<h2>2. A Revolução: Sintaxe de Faixa (Range Syntax do Media Queries Level 4)</h2>
<p>
  Por mais de uma década, expressar intervalos de tela no CSS exigia fórmulas verbosas e pouco intuitivas com pares de <code>min-width</code> e <code>max-width</code>.
</p>
<p>
  A especificação <strong>Media Queries Level 4</strong> simplificou radicalmente esse processo introduzindo operadores matemáticos universais (<code>&gt;=</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&lt;</code>):
</p>
<div class="wzw-table-responsive">
<table class="wzw-table">
<thead>
<tr>
<th>Objetivo de Design</th>
<th>Sintaxe Legada (Prolixa)</th>
<th>Sintaxe Moderna de Faixa (Recomendada)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Telas a partir de 768px</td>
<td><code>@media (min-width: 768px)</code></td>
<td><code>@media (width &gt;= 768px)</code></td>
</tr>
<tr>
<td>Telas abaixo de 640px</td>
<td><code>@media (max-width: 639px)</code></td>
<td><code>@media (width &lt; 640px)</code></td>
</tr>
<tr>
<td>Intervalo exclusivo entre 768px e 1024px</td>
<td><code>@media (min-width: 768px) and (max-width: 1024px)</code></td>
<td><code>@media (768px &lt;= width &lt;= 1024px)</code></td>
</tr>
</tbody>
</table>
</div>
<div class="wzw-callout wzw-callout-info">
<p><strong>Suporte Universal:</strong> A sintaxe de faixa matemática é suportada por 100% dos navegadores modernos desde 2023. Ela torna seu arquivo de estilos infinitamente mais legível e autoexplicativo!</p>
</div>
<h2>3. Arquitetura de Breakpoints Corporativos</h2>
<p>
  Seguindo o paradigma Mobile-First estabelecido na Lição 36, estruturamos os pontos de quebra em ordem crescente de largura utilizando <code>em</code> (ou <code>px</code>):
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-25473" 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">34 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-25473', 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-25473', 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>
<span class="wzw-code-line">   1. BASE MOBILE: Estilos universais sem media queries</span>
<span class="wzw-code-line">   =================================================== */</span>
<span class="wzw-code-line">.cartao-plano {</span>
<span class="wzw-code-line">  <span class="wzw-tk-attr">width</span>: 100%;</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">/* ===================================================</span>
<span class="wzw-code-line">   2. TABLET PEQUENO / PAISAGEM (sm: &gt;= <span class="wzw-tk-num">640px</span> / <span class="wzw-tk-num">40em</span>)</span>
<span class="wzw-code-line">   =================================================== */</span>
<span class="wzw-code-line"><span class="wzw-tk-kw">@media</span> (width &gt;= <span class="wzw-tk-num">40em</span>) {</span>
<span class="wzw-code-line">  .cartao-plano {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">width</span>: 50%;</span>
<span class="wzw-code-line">  }</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">/* ===================================================</span>
<span class="wzw-code-line">   3. TABLET VERTICAL / DESKTOP MÉDIO (md: &gt;= <span class="wzw-tk-num">768px</span> / <span class="wzw-tk-num">48em</span>)</span>
<span class="wzw-code-line">   =================================================== */</span>
<span class="wzw-code-line"><span class="wzw-tk-kw">@media</span> (width &gt;= <span class="wzw-tk-num">48em</span>) {</span>
<span class="wzw-code-line">  .grade-principal {</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>: <span class="wzw-tk-num">260px</span> <span class="wzw-tk-num">1fr</span>;</span>
<span class="wzw-code-line">  }</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">/* ===================================================</span>
<span class="wzw-code-line">   4. NOTEBOOKS E TELAS LARGAS (lg: &gt;= <span class="wzw-tk-num">1024px</span> / <span class="wzw-tk-num">64em</span>)</span>
<span class="wzw-code-line">   =================================================== */</span>
<span class="wzw-code-line"><span class="wzw-tk-kw">@media</span> (width &gt;= <span class="wzw-tk-num">64em</span>) {</span>
<span class="wzw-code-line">  .cartao-plano {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">width</span>: 33.333%;</span>
<span class="wzw-code-line">  }</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* ===================================================
   1. BASE MOBILE: Estilos universais sem media queries
   =================================================== */
.cartao-plano {
  width: 100%;
}

/* ===================================================
   2. TABLET PEQUENO / PAISAGEM (sm: &gt;= 640px / 40em)
   =================================================== */
@media (width &gt;= 40em) {
  .cartao-plano {
    width: 50%;
  }
}

/* ===================================================
   3. TABLET VERTICAL / DESKTOP MÉDIO (md: &gt;= 768px / 48em)
   =================================================== */
@media (width &gt;= 48em) {
  .grade-principal {
    display: grid;
    grid-template-columns: 260px 1fr;
  }
}

/* ===================================================
   4. NOTEBOOKS E TELAS LARGAS (lg: &gt;= 1024px / 64em)
   =================================================== */
@media (width &gt;= 64em) {
  .cartao-plano {
    width: 33.333%;
  }
}</textarea>
        </div>
    </div>
    
</div>
<div class="wzw-callout wzw-callout-warning">
<p><strong>Por que Usar <code>em</code> em Breakpoints em Vez de <code>px</code>?</strong> Se um usuário com deficiência visual aumentar o tamanho de fonte padrão do navegador de 16px para 24px (zoom tipográfico de acessibilidade), as media queries escritas em <code>px</code> podem manter o site preso no modo desktop, esmagando os textos ampliados. Consultas escritas em <code>em</code> reagem proporcionalmente à escala da fonte do usuário, garantindo uma experiência inclusiva impecável!</p>
</div>
<h2>4. Media Queries de Preferência do Usuário (Acessibilidade e Ergonomia)</h2>
<p>
  As Media Queries modernas vão muito além do tamanho da tela. Elas permitem que o seu site respeite as preferências do sistema operacional do visitante:
</p>
<h3>1. Modo Escuro Nativo: <code>prefers-color-scheme</code></h3>
<p>
  Detecta se o sistema operacional do usuário está configurado para o tema escuro (Dark Mode):
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-45686" 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">13 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-45686', 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-45686', 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">/* Tema Claro padrão */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-kw">:root</span> {</span>
<span class="wzw-code-line">  <span class="wzw-tk-comment">--bg-pagina: #ffffff;</span></span>
<span class="wzw-code-line">  <span class="wzw-tk-comment">--cor-texto: #0f172a;</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">/* Ativação automática de Tema Escuro */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-kw">@media</span> (prefers-color-scheme: dark) {</span>
<span class="wzw-code-line">  <span class="wzw-tk-kw">:root</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--bg-pagina: #0b0f19;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">--cor-texto: #f8fafc;</span></span>
<span class="wzw-code-line">  }</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Tema Claro padrão */
:root {
  --bg-pagina: #ffffff;
  --cor-texto: #0f172a;
}

/* Ativação automática de Tema Escuro */
@media (prefers-color-scheme: dark) {
  :root {
    --bg-pagina: #0b0f19;
    --cor-texto: #f8fafc;
  }
}</textarea>
        </div>
    </div>
    
</div>
<h3>2. Proteção contra Distúrbios Vestibulares: <code>prefers-reduced-motion</code></h3>
<p>
  Pessoas com labirintite, epilepsia ou distúrbios de equilíbrio desativam animações bruscas no sistema operacional. É um requisito essencial da <strong>WCAG 2.2</strong> respeitar essa escolha:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-77266" 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-77266', 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-77266', 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-kw">@media</span> (prefers-reduced-motion: reduce) {</span>
<span class="wzw-code-line">  * {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">animation-duration</span>: <span class="wzw-tk-num">0.01ms</span> <span class="wzw-tk-kw">!important</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">animation-iteration-count</span>: 1 <span class="wzw-tk-kw">!important</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">transition-duration</span>: <span class="wzw-tk-num">0.01ms</span> <span class="wzw-tk-kw">!important</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">scroll-behavior</span>: auto <span class="wzw-tk-kw">!important</span>;</span>
<span class="wzw-code-line">  }</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}</textarea>
        </div>
    </div>
    
</div>
<h3>3. Detecção de Mouse vs. Touchscreen: <code>hover</code> e <code>pointer</code></h3>
<p>
  Em smartphones, passar o dedo sobre um botão dispara o estado <code>:hover</code> e faz com que ele fique &#8220;preso&#8221; visualmente mesmo depois que o usuário tira o dedo da tela. Podemos restringir efeitos de hover apenas para mouses reais:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-27122" 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-27122', 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-27122', 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">/* Aplica efeito de hover apenas se o dispositivo tiver um mouse real */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-kw">@media</span> (hover: hover) and (pointer: fine) {</span>
<span class="wzw-code-line">  .btn-interativo<span class="wzw-tk-kw">:hover</span> {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">transform</span>: translateY(-<span class="wzw-tk-num">2px</span>);</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">box-shadow</span>: 0 <span class="wzw-tk-num">8px</span> <span class="wzw-tk-num">20px</span> rgba(0,0,0,0.4);</span>
<span class="wzw-code-line">  }</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Aplica efeito de hover apenas se o dispositivo tiver um mouse real */
@media (hover: hover) and (pointer: fine) {
  .btn-interativo:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(0,0,0,0.4);
  }
}</textarea>
        </div>
    </div>
    
</div>
<h2>5. Estilizando para Impressão: <code>@media print</code></h2>
<p>
  Quando o usuário precisa imprimir um artigo ou recibo do site, o papel exige uma diagramação completamente diferente da tela:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-24084" 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">12 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-24084', 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-24084', 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-kw">@media</span> print {</span>
<span class="wzw-code-line">  <span class="wzw-tk-comment">/* Oculta barras de navegação, botões e vídeos no papel */</span></span>
<span class="wzw-code-line">  nav, footer, .sidebar, .btn-acao {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">display</span>: none <span class="wzw-tk-kw">!important</span>;</span>
<span class="wzw-code-line">  }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">  body {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background</span>: <span class="wzw-tk-num">#fff</span> <span class="wzw-tk-kw">!important</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">color</span>: <span class="wzw-tk-num">#000</span> <span class="wzw-tk-kw">!important</span>;</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">font-size</span>: 12pt;</span>
<span class="wzw-code-line">  }</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>@media print {
  /* Oculta barras de navegação, botões e vídeos no papel */
  nav, footer, .sidebar, .btn-acao {
    display: none !important;
  }

  body {
    background: #fff !important;
    color: #000 !important;
    font-size: 12pt;
  }
}</textarea>
        </div>
    </div>
    
</div>
<h2>6. Laboratório Prático: Media Queries Modernas em Ação</h2>
<p>
  No código interativo abaixo, combinamos a <strong>sintaxe de faixa matemática</strong> (<code>width &gt;= 680px</code>), suporte automático ao <strong>Dark Mode</strong> e o respeito ao <strong>prefers-reduced-motion</strong>:
</p>
<div class="wzw-code-wrapper">
    <div class="wzw-ide-card" id="wzw-code-84967" 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">95 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-84967', 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-84967', 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;meta</span> <span class="wzw-tk-attr">name</span>=<span class="wzw-tk-str">&quot;viewport&quot;</span> <span class="wzw-tk-attr">content</span>=<span class="wzw-tk-str">&quot;width=device-width, initial-scale=1.0&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 Media Queries Modernas<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">    :root {</span>
<span class="wzw-code-line">      <span class="wzw-tk-comment">--bg: #f8fafc;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-comment">--card-bg: #ffffff;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-comment">--text: #0f172a;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-comment">--border: #e2e8f0;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-comment">--accent: #2563eb;</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">/* 1. DETECÇÃO DE MODO ESCURO AUTOMÁTICO */</span></span>
<span class="wzw-code-line">    @media (prefers-color-scheme: dark) {</span>
<span class="wzw-code-line">      :root {</span>
<span class="wzw-code-line">        <span class="wzw-tk-comment">--bg: #0b0f19;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-comment">--card-bg: #1e293b;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-comment">--text: #f8fafc;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-comment">--border: #334155;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-comment">--accent: #38bdf8;</span></span>
<span class="wzw-code-line">      }</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    body {</span>
<span class="wzw-code-line">      background-color: var(--bg);</span>
<span class="wzw-code-line">      color: var(--text);</span>
<span class="wzw-code-line">      font-family: &#039;Inter&#039;, system-ui, sans-serif;</span>
<span class="wzw-code-line">      padding: 30px;</span>
<span class="wzw-code-line">      margin: 0;</span>
<span class="wzw-code-line">      transition: background-color 0.3s ease, color 0.3s ease;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* 2. BASE MOBILE (COLUNA ÚNICA) */</span></span>
<span class="wzw-code-line">    .container-planos {</span>
<span class="wzw-code-line">      display: grid;</span>
<span class="wzw-code-line">      grid-template-columns: 1fr;</span>
<span class="wzw-code-line">      gap: 16px;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    .card {</span>
<span class="wzw-code-line">      background: var(--card-bg);</span>
<span class="wzw-code-line">      border: 1px solid var(--border);</span>
<span class="wzw-code-line">      border-radius: 12px;</span>
<span class="wzw-code-line">      padding: 24px;</span>
<span class="wzw-code-line">      transition: transform 0.2s ease;</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    .card h3 { margin: 0 0 8px 0; color: var(--accent); }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* 3. SINTAXE DE FAIXA MATEMÁTICA: width &gt;= 680px */</span></span>
<span class="wzw-code-line">    @media (width &gt;= 680px) {</span>
<span class="wzw-code-line">      .container-planos {</span>
<span class="wzw-code-line">        grid-template-columns: 1fr 1fr; /* 2 colunas */</span>
<span class="wzw-code-line">        gap: 24px;</span>
<span class="wzw-code-line">      }</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* 4. HOVER APENAS EM MOUSES REAIS */</span></span>
<span class="wzw-code-line">    @media (hover: hover) and (pointer: fine) {</span>
<span class="wzw-code-line">      .card:hover {</span>
<span class="wzw-code-line">        transform: translateY(-4px);</span>
<span class="wzw-code-line">      }</span>
<span class="wzw-code-line">    }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-comment">/* 5. ACESSIBILIDADE VESTIBULAR */</span></span>
<span class="wzw-code-line">    @media (prefers-reduced-motion: reduce) {</span>
<span class="wzw-code-line">      body, .card {</span>
<span class="wzw-code-line">        transition: none !important;</span>
<span class="wzw-code-line">        transform: none !important;</span>
<span class="wzw-code-line">      }</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;margin-top:0;&quot;</span><span class="wzw-tk-tag">&gt;</span>Media Queries Inteligentes Level 4<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:#64748b; font-size:0.9rem; margin-bottom:24px;&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    Este laboratório adapta-se à largura da tela com a sintaxe <span class="wzw-tk-tag">&lt;code&gt;</span>width &gt;= 680px<span class="wzw-tk-tag">&lt;/code&gt;</span> e altera suas cores automaticamente com base no Modo Escuro do seu sistema!</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;container-planos&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&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;h3&gt;</span>Web Academy Pro<span class="wzw-tk-tag">&lt;/h3&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;p&gt;</span>Acesso a todos os cursos com laboratórios interativos em tempo real.<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&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;h3&gt;</span>Dev Studio Enterprise<span class="wzw-tk-tag">&lt;/h3&gt;</span></span>
<span class="wzw-code-line">      <span class="wzw-tk-tag">&lt;p&gt;</span>Suporte prioritário e ferramentas de engenharia de alta performance.<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;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;title&gt;Laboratório de Media Queries Modernas&lt;/title&gt;
  &lt;style&gt;
    :root {
      --bg: #f8fafc;
      --card-bg: #ffffff;
      --text: #0f172a;
      --border: #e2e8f0;
      --accent: #2563eb;
    }

    /* 1. DETECÇÃO DE MODO ESCURO AUTOMÁTICO */
    @media (prefers-color-scheme: dark) {
      :root {
        --bg: #0b0f19;
        --card-bg: #1e293b;
        --text: #f8fafc;
        --border: #334155;
        --accent: #38bdf8;
      }
    }

    body {
      background-color: var(--bg);
      color: var(--text);
      font-family: &#039;Inter&#039;, system-ui, sans-serif;
      padding: 30px;
      margin: 0;
      transition: background-color 0.3s ease, color 0.3s ease;
    }

    /* 2. BASE MOBILE (COLUNA ÚNICA) */
    .container-planos {
      display: grid;
      grid-template-columns: 1fr;
      gap: 16px;
    }

    .card {
      background: var(--card-bg);
      border: 1px solid var(--border);
      border-radius: 12px;
      padding: 24px;
      transition: transform 0.2s ease;
    }

    .card h3 { margin: 0 0 8px 0; color: var(--accent); }

    /* 3. SINTAXE DE FAIXA MATEMÁTICA: width &gt;= 680px */
    @media (width &gt;= 680px) {
      .container-planos {
        grid-template-columns: 1fr 1fr; /* 2 colunas */
        gap: 24px;
      }
    }

    /* 4. HOVER APENAS EM MOUSES REAIS */
    @media (hover: hover) and (pointer: fine) {
      .card:hover {
        transform: translateY(-4px);
      }
    }

    /* 5. ACESSIBILIDADE VESTIBULAR */
    @media (prefers-reduced-motion: reduce) {
      body, .card {
        transition: none !important;
        transform: none !important;
      }
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;h2 style=&quot;margin-top:0;&quot;&gt;Media Queries Inteligentes Level 4&lt;/h2&gt;
  &lt;p style=&quot;color:#64748b; font-size:0.9rem; margin-bottom:24px;&quot;&gt;
    Este laboratório adapta-se à largura da tela com a sintaxe &lt;code&gt;width &gt;= 680px&lt;/code&gt; e altera suas cores automaticamente com base no Modo Escuro do seu sistema!
  &lt;/p&gt;

  &lt;div class=&quot;container-planos&quot;&gt;
    &lt;div class=&quot;card&quot;&gt;
      &lt;h3&gt;Web Academy Pro&lt;/h3&gt;
      &lt;p&gt;Acesso a todos os cursos com laboratórios interativos em tempo real.&lt;/p&gt;
    &lt;/div&gt;

    &lt;div class=&quot;card&quot;&gt;
      &lt;h3&gt;Dev Studio Enterprise&lt;/h3&gt;
      &lt;p&gt;Suporte prioritário e ferramentas de engenharia de alta performance.&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 sintaxe de faixa 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>Media Queries adaptam o CSS com base no tipo de dispositivo e recursos de tela.</li>
<li>A <strong>Sintaxe de Faixa (Range Syntax)</strong> substitui <code>min-width</code> por operadores matemáticos elegantes como <code>width &gt;= 768px</code> ou <code>768px &lt;= width &lt;= 1024px</code>.</li>
<li>Breakpoints devem ser ordenados de forma crescente (Mobile-First) e usar preferencialmente unidades <code>em</code> para respeitar o zoom de acessibilidade do usuário.</li>
<li><code>prefers-color-scheme: dark</code> detecta o Modo Escuro do sistema operacional sem necessidade de JavaScript.</li>
<li><code>prefers-reduced-motion: reduce</code> é mandatório para proteger usuários com distúrbios vestibulares contra animações bruscas.</li>
<li><code>@media (hover: hover)</code> restringe efeitos de ponteiro exclusivamente a mouses reais, eliminando bugs visuais no toque móvel.</li>
</ul>
<div class="wzw-callout wzw-callout-success">
<p><strong>Próximo Passo:</strong> Um dos maiores desafios da responsividade é lidar com fotos e gráficos de proporções diferentes. Como garantir que uma imagem preencha um cartão sem achatar, distorcer ou transbordar? Na <strong>Lição 38</strong>, desvendaremos <strong>Imagens Responsivas, object-fit &#038; aspect-ratio</strong>!</p>
</div>
<p>O post <a href="https://webzoneware.com/web-academy/curso-css/media-queries-breakpoints-css/">Media Queries e Breakpoints Modernos 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/media-queries-breakpoints-css/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
