{"showable":false,"id":160,"slug":"web-design-responsivo","nome":"Web Design Responsivo: Páginas que se adaptam do mobile ao desk","metadescription":"Web Design Responsivo: Páginas que se adaptam do mobile ao desk","meta_title":"","categoria":{"nome":"Front-end","slug":"front-end","ordem":0,"cor":null,"cor_auxiliar":null,"subcategorias":null,"cursos":null,"numero_cursos":null,"guides":null},"categorias":[{"nome":"Front-end","slug":"front-end","ordem":0,"cor":null,"cor_auxiliar":null,"subcategorias":null,"cursos":null,"numero_cursos":null,"guides":null}],"subcategoria":{"slug":"html-css","nome":"HTML e CSS","metaTitle":null,"metaDescription":null,"description":null,"guides":"","cursos":[]},"subcategorias":[{"slug":"html-css","nome":"HTML e CSS","metaTitle":null,"metaDescription":null,"description":null,"guides":"","cursos":[]}],"quantidade_aulas":8,"minutos_video":149,"nota":0.0,"nota_disponivel":false,"quantidade_avaliacoes":7453,"quantidade_alunos":17724,"carga_horaria":10,"quantidade_atividades":64,"data_criacao":"2014-05-05","data_atualizacao":"2023-02-07","video_1a_aula":"https://gnarus-video.4986a99d4a6ebf7ab87ee6461d95b58b.r2.cloudflarestorage.com/alura/105792073-sd.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260421T032942Z&X-Amz-SignedHeaders=host&X-Amz-Credential=099e678757b68a07f650f27240529bce%2F20260421%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Expires=604800&X-Amz-Signature=63210606551b3aa5389521f7911a7bcd7b5999cae12b2fcc2e71be6fbe9fbef9","publico_alvo":"Interessados em aprender a trabalhar com a web em dispositivos de tamanho diferentes e que tem conhecimento a html e css","chamadas":["Conheça a diferença de sites mobiles e design responsivos\r","Aprenda Técnicas de design fluído \r","Conheça a tag viewport\r","Faça debug remotos \r","Conheças boas práticas de usabilidade mobile"],"ementa":[{"capitulo":"Web Design Responsivo","secoes":["Site mobile ou design responsivo?","Base do responsivo","Pensando em proporções"]},{"capitulo":"Layout fluído e medidas flexíveis","secoes":["Uso de porcentagens","O font-size","A medida 'em'","Técnicas de design fluído","Imagens fluídas"]},{"capitulo":"Media queries","secoes":["Layout condicional","CSS2 Media types e CSS3 Media queries","Sintaxe","Breakpoints de conteúdo","Mobile-first"]},{"capitulo":"Viewport & Workflow","secoes":["Meta tag viewport","Estratégia de testes","Desktop browsers","Emuladores mobile","Dispositivos reais","Debug remoto (iOS, Android, Weinre, Windows Phone)","Device lab"]},{"capitulo":"Menu Responsivo","secoes":["Grandes adaptações com media queries","JavaScript para controlar o menu"]},{"capitulo":"Imagens responsivas","secoes":["Telas de alta resolução","Device Pixel Ratio","Cases de imagens responsivas","Media queries para troca de imagens","Srcset e picture","Compressive images","Performance"]},{"capitulo":"Imagens vetoriais","secoes":["Efeitos CSS","Texto","Icon Fonts","SVG","Estratégias crossbrowser e fallbacks"]},{"capitulo":"Usabilidade mobile & estratégias resposivas","secoes":["Content parity","Não existe contexto mobile","Touch-first","Usabilidade em touch screens","Exemplos de más práticas de UX mobile"]}],"instrutores":[{"twitter":"https://twitter.com/sergio_caelum","linkedin":"https://www.linkedin.com/in/sergiolopesjr/","username":"sergiolopes","githubProfileLink":"","fotos":{"50":"https://www.gravatar.com/avatar/ff41e839cab613a02a5c96c6165e3a31.png?r=PG&size=50x50&date=2026-04-21&d=https%3A%2F%2Fcursos.alura.com.br%2Fassets%2Fimages%2Fforum%2Favatar_s.png","100":"https://www.gravatar.com/avatar/ff41e839cab613a02a5c96c6165e3a31.png?r=PG&size=100x100&date=2026-04-21&d=https%3A%2F%2Fcursos.alura.com.br%2Fassets%2Fimages%2Fforum%2Favatar_s.png","200":"https://www.gravatar.com/avatar/ff41e839cab613a02a5c96c6165e3a31.png?r=PG&size=200x200&date=2026-04-21&d=https%3A%2F%2Fcursos.alura.com.br%2Fassets%2Fimages%2Fforum%2Favatar_s.png"},"sobre":"Sérgio é diretor e líder do time de diversos times no Grupo Caelum, formado em Ciência da Computação pela USP. É reconhecido por sua atuação em Front-end, Performance, Mobile e Arquitetura de software e tem vasta experiência com ensino, tanto presencial quanto online. Gerencia os projetos internos da empresa e atua na definição de rumos dos\r\nprodutos e da empresa em geral.","nome":"Sérgio Lopes"}],"carreiras":[],"musicas":[],"depoimentos":[{"texto":"Vi a nova versão do curso, só terminei este pq na minha formação a nova versão não contou","aluno":"Matheus Andrade","fotos":{"50":"https://cdn2.gnarususercontent.com.br/1/55462/9c778e58-a7e3-4bb5-9bc2-e94b268cf854.jpg?width=50&height=50&aspect_ratio=1:1","100":"https://cdn2.gnarususercontent.com.br/1/55462/9c778e58-a7e3-4bb5-9bc2-e94b268cf854.jpg?width=100&height=100&aspect_ratio=1:1","200":"https://cdn2.gnarususercontent.com.br/1/55462/9c778e58-a7e3-4bb5-9bc2-e94b268cf854.jpg?width=200&height=200&aspect_ratio=1:1"},"data_criacao":"2021-05-24","curso":{"urlName":"web-design-responsivo","id":160,"slug":"web-design-responsivo","nome":"Web Design Responsivo: Páginas que se adaptam do mobile ao desk","quantidade_aulas":0,"minutos_video":0,"tempo_estimado":10,"chamadas":[],"quantidade_musicas":0,"data_publicacao":null,"highlightedExtraField":null},"nota_nps":10},{"texto":"Curso bom, mas confuso, em algumas aulas não fica bem explicado como fazer o exercício e só nas telas seguintes que dá a explicação, achei uma experiencia ruim, pois a gente fica preso um tempão em um tópico sem saber como fazer.","aluno":"Carla Fernanda Coutinho Pontes Alves","fotos":{"50":"https://cdn2.gnarususercontent.com.br/1/419182/f1f36cf3-7bef-4f20-ad78-515cb8c54566.jpeg?width=50&height=50&aspect_ratio=1:1","100":"https://cdn2.gnarususercontent.com.br/1/419182/f1f36cf3-7bef-4f20-ad78-515cb8c54566.jpeg?width=100&height=100&aspect_ratio=1:1","200":"https://cdn2.gnarususercontent.com.br/1/419182/f1f36cf3-7bef-4f20-ad78-515cb8c54566.jpeg?width=200&height=200&aspect_ratio=1:1"},"data_criacao":"2020-09-02","curso":{"urlName":"web-design-responsivo","id":160,"slug":"web-design-responsivo","nome":"Web Design Responsivo: Páginas que se adaptam do mobile ao desk","quantidade_aulas":0,"minutos_video":0,"tempo_estimado":10,"chamadas":[],"quantidade_musicas":0,"data_publicacao":null,"highlightedExtraField":null},"nota_nps":9},{"texto":"Para mim é melhor quando o instrutor vai fazendo junto os exemplos.","aluno":"Ederson Schmeing","fotos":{"50":"https://cdn2.gnarususercontent.com.br/1/5990/04109f57-c235-4a51-9457-3c425440c100.jpg?width=50&height=50&aspect_ratio=1:1","100":"https://cdn2.gnarususercontent.com.br/1/5990/04109f57-c235-4a51-9457-3c425440c100.jpg?width=100&height=100&aspect_ratio=1:1","200":"https://cdn2.gnarususercontent.com.br/1/5990/04109f57-c235-4a51-9457-3c425440c100.jpg?width=200&height=200&aspect_ratio=1:1"},"data_criacao":"2019-03-16","curso":{"urlName":"web-design-responsivo","id":160,"slug":"web-design-responsivo","nome":"Web Design Responsivo: Páginas que se adaptam do mobile ao desk","quantidade_aulas":0,"minutos_video":0,"tempo_estimado":10,"chamadas":[],"quantidade_musicas":0,"data_publicacao":null,"highlightedExtraField":null},"nota_nps":7}],"formacoes":[],"curso_substituto":null,"alunos_ativos":null,"parceiros":[],"requerimentos":["HTML e CSS: trabalhando com responsividade e publicação de projetos"],"highlightedExtraField":" ","transcriptions":[{"sectionName":"Design Fluído","taskName":"Design Fluído","transcription":"<p>Olá! Bem-vindo ao curso online de Web Design Responsivo do Alura. Nesse curso, nós vamos\nver um pouco sobre como trabalhar com a web, pensando principalmente em novos dispositivos -\ncomo dispositivos móveis de smartphones, tablets -, mas também em desktop, e em como fazer para os sites adaptarem-se para essas diferentes possibilidades de hoje em dia. </p>\n<p>Quando nós trabalhamos com design responsivo, pensamos em atacar os dispositivos móveis.\nGeralmente, a primeira pergunta que fazemos é: eu quero um site mobile ou um com design responsivo?\nO que eu quero dizer com isso?\nBom, veja, por exemplo, o site do UOL:</p>\n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/capitulo1-imagem-9.png\" />\n\n<p>Abri o UOL aqui no meu desktop (você já deve ter visto essa página alguma vez) e eu tenho várias nóticias, colunas, um menu grande etc. Se eu abrir o mesmo site, agora em um mobile, eu vou ver essa tela aqui:</p>\n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/01.01_001_imagem10.png\" />\n\n<p>Repare que tenho agora um site adaptado para mobile, bem diferente daquele para desktop, mas, principalmente, eu tenho até um endereço novo: m.uol.com.br.\nEsse é um claro exemplo de um grande portal do Brasil. Há vários outros possíveis, mas, para nós vermos um contraponto de qual seria a outra alternativa, ainda nesse assunto de notícias, peguei um outro. Por exemplo, o site do Boston Globe:</p>\n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/capitulo1-imagem-11.png\" />\n\n<p>bostonglobe.com, um site americano de notícias. Aqui, estou abrindo ele no desktop. Aliás, peguei-o, não por que não temos bons exemplos\nno Brasil, mas porque esse site é famoso nessa parte de responsivo, por ter sido um dos grandes primeiros projetos com responsivo no mundo. Inclusive, a pessoa que criou o termo web design responsivo, Ethan Marcotte, participou desse projeto, então ele acabou ficando famoso por isso.\nMas, veja bem, esse é um site em sua versão desktop. E o que acontece se o abro no tablet? Dê uma olhada:</p>\n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/capitulo1-imagem-12.png\" />\n\n<p>Eu tenho o mesmo site, no mesmo endereço, com a mesma URL, mesmo design e mesmo código. A diferença é que ele se adapta a essa resolução um pouco menor.\nEntão, aqui, você vê, por exemplo, duas notícias de coluna.\nSe eu abrir no celular, agora:</p>\n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/capitulo1-imagem-13.png\" />\n\n<p>Dando uma olhada vê-se que é o mesmo site novamente, mesma URL, mesmo endereço e mesma HTML. Só que tenho uma coluna de conteúdo, um menu compactado etc. Isso é design responsivo.</p>\n<p>Então, estamos nessa dúvida: se fazemos um site mobile específico, como vimos no caso do UOL, ou um design responsivo, como nesse caso do Boston Globe.</p>\n<p>Mais um exemplo:</p>\n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/01.01_002_imagem14.png\" />\n\n<p>Olhe a página do site da Caelum que peguei. Gravei, inclusive, um vídeo para você dar uma olhada de como o site se adapta com as diferentes resoluções. Voce vê que uma coluna viram duas, e então viram três. Você percebe as fotos aumentando de tamanho; e o texto e o menu adaptando-se. Tudo isso mostra a ideia de que a mesma página adapta-se a diferentes resoluções, inclusive, a vários intervalos dessas resoluções, como mostrei nesse vídeo.</p>\n<p>Então, pensando de novo naquela dúvida - site mobile ou design responsivo? -, \nessa pergunta tem um detalhe que queria discutir. Quando falamos de mobile, o que é mobile exatamente?</p>\n<p>Vamos tentar definir mobile. Quando você pensa em fazer um site mobile, uma página para dispositivos móveis, o que separa esses dispositivos de outros que não são mobile? </p>\n<p>Vamos pensar. Seria uma tela pequena?\nEntão, tendo uma tela pequena, quer dizer que ele é um dispositivo móvel?\nBom, se eu tiver um tablet, ele não é móvel? \nNão é bem isso, certo?</p>\n<p>Vamos tentar de novo. Talvez seja a portabilidade.\nTenho um dispositivo que posso usar em qualquer lugar: na praça, na rua. Bom, então, se eu levar meu notebook para praça, ele seria mobile? \nTalvez não.</p>\n<p>Vamos pensar. Talvez, então, seja as redes móveis. \nO fato de eu poder acessar meu dispositivo através de 3G ou 4G define que é mobile. Bom, assim, se eu comprar aquele 3G USB de plugar no computador, eu estou em um mobile?\nÉ, veja bem. Talvez não.</p>\n<p>Então, vamos tentar mais um: touch screen.\nTalvez o que define mobile seja uma tela de touch. Então, se você tem um computador híbrido, com Windows 8, por exemplo, os primeiros computadores com touch, você está em um dispositivo mobile? \nAí você pensa: então, não sei. É difícil.</p>\n<p>A grande questão, na verdade, é que não existe mobile. Tentar fazer essa separação entre o que é  e o que não é mobile é problemática. Existe, claro, os extremos. Se mostrar um smartphone pequenininho, você falará para mim que ele é um mobile; se mostrar um computador desktop grandão, ele, obviamente, não será mobile. Mas a questão é que, no meio, entre esses dois dispositivos, existem várias possibilidades, e elas são díficeis de definirmos.\nÀs vezes você tem um tablet tão grande quanto um notebook, mas às vezes você tem um notebook híbrido que vira tablet. Às vezes você tem touch screen, às vezes não, como pode ser que tenha também 3G, como também não. </p>\n<p>Enfim. A grande questão é que não interessa, não importa. Não existe mobile, logo não nos interessa essa divisão. O que existe são vários dispositivos diferentes, com características diferentes e nós queremos que o nosso site suporte todos eles.</p>\n<p>Então, se voltarmos para aquela nossa questão, o design responsivo é a única maneira de atingir todos esses dispositivos diferentes através de uma única web, uma única página.</p>\n<p>Podemos tentar fazer um site mobile separado, como vimos no exemplo do UOL, porém, a grande questão é: onde passaríamos o traço? Onde defino o que é mobile e o que não é?\nIsso é o que acabamos de ver. Essa linha é muito tênue e complicada de ser definida.</p>\n<p>Aí você decide trabalhar com design responsivo. Mas, quais são os princípios? \nO grande coração do design responsivo é o uso de layout fluido. \nO que significa isso?</p>\n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/capitulo1-imagem-29.png\" />\n\n<p>Peguei essa página do site da Caelum, por exemplo. Uma página simples, que serve para os usuários entrarem em contato. Temos lá um menu, um banner e duas colunas de conteúdo: uma com um formulário e outra com alguns endereços da Caelum.</p>\n<p>Uma página com layout fixo, não fluido. Se você for dar uma olhada, tenho medidas em pixels para cada uma dessas partes do texto do site: </p>\n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/capitulo1-imagem-30.png\" />\n\n<p>Veja que coloquei os pedaços mais importantes, em especial o banner. Vou colocá-lo em um grid de 960 pixels, e depois dividir o conteúdo em duas colunas, que coloquei em 470 pixels, certo?</p>\n<p>A grande questão é que estou definindo as coisas em pixels. Quando eu faço isso, como se fazia bastante antigamente na web, eu estou indo contra a questão de design responsivo, impedindo a página de se adaptar.</p>\n<p>Preciso transformar tudo isso em design definido. Ou seja, usar medidas flexíveis. Como assim?\nA medida flexível mais importante é a porcentagem.\nQuando trabalho com porcentagens, é possível fazer meu site se adaptar em diferentes resoluções.\nVamos voltar lá no exemplo.</p>\n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/capitulo1-imagem-30.png\" />\n\n<p>Seria eu olhar para esse mesmo grid, e em vez de enxergar os pixels, ver porcentagens. Por exemplo, quero dividir em duas colunas, então em vez de colocar 470px, colocar isso em porcentagens.</p>\n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/capitulo1-imagem-34.png\" />\n\n<p>Coloquei 49%, pois dividi no meio e deixei um espacinho. Logo, se você quer dividir duas colunas, fará 50% para cada lado; se forem três colunas, 33%; e se forem quatro, 25%. </p>\n<p>Enfim. A questão é parar de pensar em pixels e começar a pensar nas proporções do design.\nEssa é a grande mudança do design responsivo quando falamos de layout fluido.\nÉ parar de pegar aquela medida em pixel exata - que você pega, por exemplo, no Photoshop e coloca no CSS -, e começar a enxergar no seu design, naquela sua criação, as proporções naturais entre os conteúdos. Então, se há duas colunas, obviamente é a proporção de 1 pra 1, 50% pra cada lado. E você transforma em código depois.</p>\n<p>Vamos pegar, por exemplo, de novo essa nossa página: </p>\n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/capitulo1-imagem-34.png\" />\n\n<p>Já pensando em porcentagens, como é que eu decodificaria isso?\nEntão, eu preciso do código. Se eu tiver a classe <em>banner</em>, que representa o banner lá de cima, ele teria a largura de 100%:</p>\n<pre class=\"prettyprint\"><code>.banner {\n    width: 100%;\n}</code></pre><p>Se você for trabalhar com as duas colunas, teremos a coluna do <em>formulario</em>, com a largura de 49%. Darei um <em>float left</em> para ela ficar na esquerda.</p>\n<pre class=\"prettyprint\"><code>.formulario{\n    width: 49%;\n    float: left;\n}</code></pre><p>E aí eu coloco agora a coluna das <em>unidades</em>, com um <em>width</em> de 49% e também com <em>float right</em> para ficar na direita.</p>\n<pre class=\"prettyprint\"><code>.unidades {\n    width: 49%;\n    float: right;\n}</code></pre><p>Um código CSS simples que não tem grande segredo, mas que fará nós deixarmos essa nossa página com um layout mais fluido, usando as medidas flexíveis.\nEssa é a grande questão.</p>\n<p>Bom, o que é que vimos nessa primeira aula de design responsivo, nesse começo de teoria?\nVimos que vamos trabalhar com design responsivo, principalmente, porque não há outra alternativa. Se quiser fazer um site mobile, eu não consigo traçar a diferença entre mobile e o resto. E a questão é que isso só &#34;vai piorar&#34; para o futuro. Teremos, cada vez mais, dispositivos com características diferentes. Logo, o design responsivo é a única alternativa, já que não existe mobile.</p>\n<p>Vimos também que para implementar isso, precisamos trabalhar com layout fluido. E o grande coração dele são as medidas flexíveis, em especial as porcentagens, que vimos no exemplo.</p>\n<p>E a grande mudança do pensamento quando se está começando com design responsivo é começar a olhar para o seu design e  a pensar nas proporções dele. É você conseguir enxergar em seu projeto as proporções entre os desenhos das coisas: entre as colunas e os outros elementos; e não mais em pixels fixos.</p>\n<p>Temos alguns exercícios agora e continuaremos na próxima aula.</p>\n","videoUrl":"https://gnarus-video.4986a99d4a6ebf7ab87ee6461d95b58b.r2.cloudflarestorage.com/alura/105792073-sd.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260421T032942Z&X-Amz-SignedHeaders=host&X-Amz-Credential=099e678757b68a07f650f27240529bce%2F20260421%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Expires=604800&X-Amz-Signature=63210606551b3aa5389521f7911a7bcd7b5999cae12b2fcc2e71be6fbe9fbef9"},{"sectionName":"Mais Design Fluído","taskName":"Mais Design Fluído","transcription":"<p>LAYOUT FLUÍDO</p>\n<p>Continuando nossos estudos, agora de design responsivo, a gente vai se aprofundar um pouco nas questões do layout fluído, que é justamente o grande pilar da responsividade de nossas [páginas],certo? Para isso, peguei alguns exemplos pra gente dar uma estudada. </p>\n<p>MEDIDAS FLEXÍVEIS</p>\n<p>Primeiro a gente tem que lembrar o seguinte: que o ponto central do layout fluído são as medidas flexíveis. Então vamos ver várias medidas agora e como elas ajudam a implementar esse tipo de coisa. Lembrando que a porcentagem é a principal.</p>\n<p>Mas como funcionam as porcentagens na web exatamente? Bom, pegue esse exemplo: </p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image1.jpg\" /></p>\n<p>Imaginemos uma página com um <code>body</code> e dentro dessa página eu criei um elemento chamado de <code>main</code>. E aí, no <code>CSS</code>, estou encurtando o código aqui, eu coloco que a largura dele é de 90%. O que isso significa na prática? É 90% do que? Do <code>body</code>, da página inteira. </p>\n<p>Se fôssemos colocar isso graficamente, significa, se eu centralizar esse elemento na tela que ele ocupa 90%,</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image2.jpg\" /></p>\n<p>e tem margens de 5% dos dois lados.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image3.jpg\" /></p>\n<p>Em números, o que isso significa? Se abrimos em um <code>desktop</code>, por exemplo, com resolução de 1280 pixels, </p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image4.jpg\" /></p>\n<p>isso significa que esse nosso <code>main</code> vai ter 1152 pixels, 90%,</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image5.jpg\" /></p>\n<p>e cada uma das duas margens com 54 pixels:</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image6.jpg\" /></p>\n<p>Mas como estamos trabalhando com porcentagens, a grande questão é que isso deve se adaptar a diferentes resoluções.</p>\n<p>Então, se abrirmos em uma resolução menor, de 360 pixels, por exemplo,</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image7.jpg\" /></p>\n<p>Isso significa que o <code>main</code>, vai ter 324 pixels e as margens terão 18 pixels, cada.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image8.jpg\" /></p>\n<p>Ou seja, tudo é <code>pixel</code>, claro, a quantidade de pixels que será desenhada na tela. No entanto, por estarmos usando a porcentagem na definição do elemento, teremos esse cálculo feito automaticamente, conforme a resolução que estiver sendo usada.</p>\n<p>Voltando para o <code>main</code>, vamos colocar dois elementos para definir duas colunas diferentes. Por exemplo, </p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image9.jpg\" /></p>\n<p>Para definir duas colunas, fácil, 50%. Mas aqui tem um ponto importante: cuidado ao definir dois elementos dentro do <code>main</code>, dividindo o meio, é 50% do <code>main</code> e não 50% do <code>body</code>. O que se quer dizer com isso? Não se coloca, por exemplo, 45%, o que seria a metade de 90%, mas sim, coloca-se 50% do <code>body</code>. Isso quer dizer que, para se chegar ao tamanho final da <code>section</code>, o navegador vai calcular o tamanho do <code>body</code>, o tamanho do <code>main</code> e o tamanho da <code>section</code>, multiplicando as porcentagens de cada um deles.</p>\n<p>Por isso é fácil, se eu quiser dentro de cada uma dessas <code>sections</code> um <code>grid</code> de três colunas, que estão dentro de um elemento composto de duas colunas, dentro de outro elemento que é 90%, parece meio confuso, mas não, é fácil: três colunas, 33%:</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image10.jpg\" /></p>\n<p>Então, divide-se em 33% cada um desses elementos. Ou seja, estamos usando porcentagens para definir os elementos trabalhados.</p>\n<p>As porcentagens podem ser utilizadas também em outros contextos, em especial, o <code>font-size</code>.</p>\n<p>FONT SIZE %</p>\n<p>No <code>font-size</code> as porcentagens têm outro significado. Antes falávamos de significado da largura dos elementos, agora tem-se uma <code>font-size</code> ou porcentagem que quer dizer outra coisa.</p>\n<p>Tem-se aqui um exemplo:</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image11.jpg\" /></p>\n<p>É o mesmo <code>body</code> com alguns outros elementos lá dentro. Imagine um elemento <code>main</code> onde se define um <code>font-size</code> de 125%. Depois se adiciona um parágrafo, sem nenhum <code>font-size</code>, ele vai herdar o <code>font-size</code>. Depois coloca-se uma <code>section</code> com <code>font-size</code> de 90% e um título com <code>font-size</code> de 150%, lá dentro da <code>section</code>, e mais dois parágrafos sem <code>font-size</code>:</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image12.jpg\" /></p>\n<p>Partindo deste caso, a questão é: qual será o tamanho das fontes de cada um desses elementos? Quando se fala em 125%, isto é em relação a quê?</p>\n<p>O grande ponto é o seguinte: quando se usa porcentagem nos <code>font-size</code>, está se usando uma multiplicação com relação ao <code>font-size</code> do elemento <code>pai</code>, ou seja, se colocarmos 125% no <code>main</code>, estamos dizendo que ele é 125% maior do que a fonte do <code>body</code>. </p>\n<p>Mas aí, pode-se argumentar que o <code>body</code> não teve fonte. Se não se colocar nenhuma fonte no <code>body</code>, assume-se que fonte-padrão do navegador, que vale na <code>tag</code> <code>HTML</code>, na <code>tag]</code>body&#96;, é 16 pixels. </p>\n<p>E então faremos as contas levando isso em consideração: 1,25 vezes 16 chega-se em 20 pixels e o parágrafo herda esses 20 pixels, porque não tem nenhuma definição de fonte.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image13.jpg\" /></p>\n<p>Aqui, uma definição importante ao chegar na <code>section</code>: é 90% do valor que temos no elemento-pai, ou seja, 90% dos 20 pixels, daí o resultado de 18 pixels. E aí, novamente, quando se vai calcular no <code>h1</code>, é 150 vezes o elemento-pai imediato, que é 18 pixels, resultando nos 27 pixels, e o parágrafo herdará os 18 pixels.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image14.jpg\" /></p>\n<p>Então, estamos trabalhando com porcentagem, multiplicando os elementos-pai até chegar a um valor em <code>pixel</code>, no valor real, que será desenhada aquela fonte na tela.</p>\n<p>Um ponto importante: por que falamos que a porcentagem, nesse caso das fontes, é uma medida flexível? Porque aqui tem o seguinte detalhe: se mudamos a fonte inicial de 16 pixels lá no <code>body</code>, todo o cálculo que é feito em porcentagem embaixo, mudará também. Ou seja, é muito fácil se alterar algum elemento e causar uma alteração em cascata na página. Isso é bem interessante em uma página responsiva, por exemplo, para evitar a redefinição do tamanho de cada um dos elementos o tempo todo.</p>\n<p>Vamos ver um caso na figura seguinte:</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image15.jpg\" /></p>\n<p>Se trocarmos para 20 pixels lá no <code>body</code>, pode-se perceber que todos os elementos trocaram: o <code>main</code> fica com 25 pixels, a <code>section</code> fica com 22 pixels, o <code>h1</code> com 33 pixels e assim por diante. Tudo é recalculado automaticamente.</p>\n<p>Por isso, fala-se que a porcentagem na fonte facilita a mudança em um lugar somente, a qual será replicada em cascata, aumentando-se proporcionalmente todas as fontes da página, alterando-se apenas a fonte do <code>body</code>.</p>\n<p>Outro ponto interessante. Veja-se a figura a seguir:</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image16.jpg\" /></p>\n<p>Substitui-se as porcentagens para <code>em</code>, que é outro tipo de medida utilizada nas fontes. Repare que foi mudado apenas um detalhe no <code>main</code>: em vez de 125%, foi utilizado 1.25em. O <code>font-size</code> da <code>section</code>, transformou-se em .9em e no <code>h1</code>, 1.5em. O mesmo valor usado em porcentagem, é utilizado em <code>em</code>. Notando que o cálculo final em pixels é o mesmo. </p>\n<p>FONT-SIZE: 120% &#61; FONT-SIZE: 1.2em</p>\n<p>Isso quer dizer que a porcentagem e o <code>em</code> têm o mesmo significado, ou seja, 120% e 1.2em querem dizer a mesma coisa.</p>\n<p>Esse raciocínio vale quando se está utilizando <code>font-size</code>, ou seja, nas fontes a porcentagem e o <code>em</code> têm o mesmo significado. Isso é importante porque se a porcentagem é utilizada nas larguras, como visto anteriormente, está claro que seu significado será diferente, quando, então, indicará a largura do elemento-pai.</p>\n<p>Interessante é que o <code>em</code> pode ser utilizado fora dos <code>font-size</code>, quando então pode-se ver a diferença entre as duas medidas.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image17.jpg\" /></p>\n<p>Por exemplo, na Fig.20, onde se tem um <code>body</code>, um <code>main</code> e alguns parágrafos lá dentro. Repare que as margens são definidas e o <code>width</code> do parágrafo utilizando <code>em</code>. </p>\n<p>O que significa trabalhar com <code>em</code>? Isso quer dizer que uma margem de 1em é proporcional ao texto, ao tamanho da fonte, que estiver sendo utilizada no elemento em determinado momento. </p>\n<p>Lembre-se que o valor-padrão é 16 pixels, no caso de não haver nada definido. </p>\n<p>Assim, tem-se uma margem proporcional ao tamanho da fonte. A mesma coisa ao <code>width</code>: se o <code>max-with</code> é 40em, seu aumento será proporcional ao aumento da fonte.</p>\n<p>Isso é interessante porque, se repararmos, a margem entre os parágrafos deve mudar proporcionalmente ao tamanho do texto, afinal é uma medida textual. Se tivermos uma fonte muito grande, a margem será maior. O [<code>line-date</code>] deverá aumentar também, assim como o tamanho da linha. Ou seja, sempre que tiver coisas que são relacionadas ao tamanho do texto, à proporção que tem a ver com tamanho do texto, o <code>em</code> é uma boa medida para isso.</p>\n<p>E teremos o mesmo efeito de antes:</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image18.jpg\" /></p>\n<p>Se trocarmos o <code>em</code> do elemento-pai, por exemplo, o <code>main</code> para 1.5em, o tamanho de todos os elementos seguintes é afetado internamente. Nota-se que o cálculo do <code>em</code> é proporcional, como visto antes. A grande diferença é que o <code>em</code>, nesse caso, está sendo utilizado em elementos que não são apenas <code>font-size</code>, mas são propriedade, como margem e <code>width</code>, que devem ser proporcionais ao parágrafo e ao texto que se está utilizando. Isso é o nosso <code>em</code>.</p>\n<p>A aplicação de tudo isso na prática, porcentagem, <code>em</code>, exige alguns detalhes a mais, os quais serão demonstrados a seguir, que devem ser tratados antes de partirmos para os exercícios, aplicando as porcentagens em alguns cenários mais interessantes.</p>\n<p>TÉCNICAS DE DESIGN FLEXÍVEL</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image19.jpg\" /></p>\n<p>Imagine, por exemplo, uma página já construída, a qual se aplica a vários dispositivos, desde o pequeno celular até um computador, um notebook ou um computador maior, tudo isso funcionando com <code>width</code> de 100%, para ocupar largura completa.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image20.jpg\" /></p>\n<p>Porém, pretende-se colocar a página em uma TV gigantesca, com 4K, com 3800 pixels de largura. </p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image21.jpg\" /></p>\n<p>O <code>width</code> de 100% vai funcionar, ocupará tudo, mas talvez não fique tão interessante, tão bonito, por quê? Ficará meio largo demais, pois a TV não é tão otimizada para o tamanho do <code>site</code> que fizemos. </p>\n<p>Está claro que é possível ajustar o site para ser utilizado em todos os meios possíveis, desde um minúsculo <code>smart</code> em relógios, até uma TV gigantesca, enfim, porém isso nem sempre é prático. Pode ser que se queira limitar até onde o site fique responsivo, isto é, a face [...] possui uma variedade de resoluções, mas quando chegar em um limite muito grande, por exemplo, uma TV gigantesca, decide-se parar [...]. Como isso ocorre?\nImagine-se que o site responsivo, quando chegar na TV grande, deve ficar centralizado no meio de uma largura fixa. Coloca-se um limite no responsivo.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image22.jpg\" /></p>\n<p> Isso é possível, bastando trabalhar com <code>max-width</code>, que é onde se define o tamanho máximo que a página terá, [...] sem ultrapassá-lo. Ele será responsivo para valores abaixo do valor máximo fixado, do qual não passará.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image23.jpg\" /></p>\n<p>Coloca-se margens zero auto para o site ficar centralizado.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image24.jpg\" /></p>\n<p>Através do <code>max-width</code>, e também do <code>min-width</code> (que funciona ao contrário), limita-se as bordas até quanto se entender necessário para o objetivo que se deseja para o [design] responsivo funcionar. </p>\n<p>Isso seria interessante também, porque em termos práticos é impossível atingir todos os dispositivos existentes, por isso a necessidade de limitar para os dispositivos mais comuns.</p>\n<p>Nesse caso, talvez 1200 ou 1400 pixels seja uma medida suficiente para 99.9% dos dispositivos que existem atualmente. É claro que, futuramente, tais números possam ser revistos, mediante o avanço tecnológico.</p>\n<p>Agora, vejamos este caso.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image25.jpg\" /></p>\n<p>Como se implementa um design com duas colunas em CSS? Coloca-se uma [classe painel], um <code>width</code> de 50%, um <code>float</code> <code>left</code>, e os painéis ficarão flutuando lado a lado, formando duas colunas.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image26.jpg\" /></p>\n<p>A discussão gira em torno da seguinte questão: quando se diminui a resolução para um tamanho minúsculo, a <code>width</code> de 50% será respeitada, mas o tamanho talvez fique pequeno demais, muito apertado. </p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image27.jpg\" /></p>\n<p>O que se pode fazer para resolver o problema? De fato, o site deve continuar ocupando os 50%, isto é, que ele seja flexível de acordo com a resolução, mas, ao chegar em resoluções muito pequenas, queremos que o site fique com um tamanho mínimo, impedindo que fique muito pequeno. </p>\n<p>Graficamente seria o seguinte: coloca-se duas colunas lado a lado e quando o site atingir o tamanho mínimo, uma coluna escorrega para baixo da outra sem ficar muito apertado.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image28.jpg\" /></p>\n<p>Essa solução pode ser implementada, em <code>CSS</code> da seguinte forma: utililza-se classe painel, <code>width</code> 50% e um <code>min-width</code> de 250 pixels. Isso significa que o site vai ficar com 50% em várias resoluções, porém nunca abaixo de 250 pixels, se ficar abaixo disso, uma das colunas escorrega para a linha de baixo.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image29.jpg\" /></p>\n<p>O comportamento de escorregar uma das colunas para a linha de baixo, pode ser feito de diferentes formas, como, por exemplo, um <code>inline block</code>, alinhado no topo.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image30.jpg\" /></p>\n<p>Aqui, a ideia é demonstrar que tanto o <code>min-width</code>, quanto o do <code>max-width</code>, como no exemplo anterior, podem ser boas ferramentas para ajudar a limitar a responsividade do site, nos extremos onde eles não fazem mais sentido.</p>\n<p>IMAGENS FLUÍDAS</p>\n<p>Por último, para continuarmos essa parte básica de layout fluído, vamos falar de imagens fluídas. </p>\n<p>Pode-se colocar imagens na página criada, mas estas costumam ser o grande inimigo do design responsivo, porque se pensarmos bem, considerando que todos os elementos possuem medidas flexíveis, a imagem é uma coisa que basicamente se constitui de pixels, mas como estamos tratando de design responsivo, não é possível usar pixels fixos, porém somente percentuais flexíveis. E as imagens não tem como: são transportadas do Photoshop, por exemplo, em pixels e como poderia ser transportada a imagem em pixels para o mundo das formas flexíveis do design responsivo?</p>\n<p>Mais adiante veremos detalhadamente como lidar com imagens, mas por agora vamos trabalhar com o cenário apresentado na Fig. 35:</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image31.jpg\" /></p>\n<p>Temos uma imagem que ocupa determinado espaço, no texto de um elemento, a qual é pouco menor que o texto, isto é, digamos que a imagem tenha 400 pixels e o elemento laranja tenha 600 pixels. Em [...] ela ocupa o seu espaço sem qualquer problema. Tudo está definido como porcentagem, o tamanho, a largura do elemento, o que significa que se o elemento for diminuído, os seus componentes vão se ajustando.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image32.jpg\" /></p>\n<p>Porém, lembre-se de que a imagem é constituída de pixels fixos e se o elemento for reduzido um pouco mais, a imagem começará a vazar, <code>estourando</code> tamanho do elemento principal.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image33.jpg\" /></p>\n<p>Isso ocorre porque a imagem é fixa e o elemento ficou menor que aquilo. Contudo, é fácil corrigir o problema, ou seja, o que se quer é que a imagem fique grudada dentro do elemento.</p>\n<p>Usa-se a classe da imagem, com <code>width</code> de 100% (lembre-se que a porcentagem é sempre relativa ao elemento-pai) ao que se tem no conteúdo laranja. Na prática significa que a imagem vai ficar contida ali dentro, como se vê na Fig. 38:</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image34.jpg\" /></p>\n<p>Há um detalhe importante: resolvemos o caso da imagem estourar o layout, porém no momento em que aumentar novamente, a imagem aumenta proporcionalmente, afinal a largura foi definida como 100% e assim sempre será.</p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image35.jpg\" /></p>\n<p>Repare que a imagem vai ocupar 100%, não interessando se a tela aumentar até 1000 pixels, acompanhando sempre o tamanho total da tela. Porém, lembremos que a imagem inicial tinha 400 pixels de largura e se for colocada em uma tela de 1000 pixels, vai aumentar e esticar, se tornando <code>pixelizada</code>, aquele efeito de zoom em uma foto digital em que se enxerga todos os pixels. A qualidade não fica boa.</p>\n<p>O que se pretende é que nesse layout maior a imagem fique do tamanho certo, não estoure o seu maior tamanho e, por outro lado, se ajuste a um layout pequeno, sem qualquer vazamento. Isto é obtido utilizando-se o <code>max-width</code> de 100%. </p>\n<p><img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-2/image36.jpg\" /></p>\n<p>Assim a imagem não vai estourar o tamanho do contêiner, sem forçar a imagem a ficar sempre do tamanho do contêiner. Ela ficará em seu tamanho natural quando em situações grandes e do tamanho máximo para encaixar dentro do contêiner, quando precisar ser reduzida.</p>\n<p>Essa regra da imagem com <code>max-width</code> 100% é clássica em sites responsivos, e na criação de sites deve ser um dos primeiros comandos a serem escritos, justamente para evitar o problema das imagens ficarem estourando.</p>\n<p>Mais adiante veremos mais detalhes de imagens responsivas.</p>\n<p>RESUMO</p>\n<p>1) Sobre o layout fluído, trabalhamos com porcentagens e <code>em</code>, analisando o funcionamento de ambos os tipos de medida na prática e os cálculos, como o navegador chega naqueles valores; </p>\n<p>2) Vimos também como faz diferença o uso de porcentagens e <code>em</code> nas fontes e nas medidas, como <code>width</code>, margem e tudo mais; </p>\n<p>3) Foi mostrado como se trabalha com <code>inline-block</code> e também com <code>max</code> e <code>min-width</code>, para criar aquelas ideias de limitar o design responsivo, colocar uma coluna embaixo da outra, o que for necessário; </p>\n<p>4) Por fim, demonstramos um pouco com a ideia de imagens fluídas trabalhando com <code>max-width</code> de 100%.</p>\n<p>Agora vamos aplicar vários desses conceitos na prática em um exercício que temos no curso, continuando na próxima aula.</p>\n","videoUrl":"https://gnarus-video.4986a99d4a6ebf7ab87ee6461d95b58b.r2.cloudflarestorage.com/alura/105792076-sd.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260421T032942Z&X-Amz-SignedHeaders=host&X-Amz-Credential=099e678757b68a07f650f27240529bce%2F20260421%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Expires=604800&X-Amz-Signature=ea37ccdeed9c18e1deebf67bc1311b938cbf14fdd96df5d5d155fa316063f2a2"},{"sectionName":"Media Queries","taskName":"Media Queries","transcription":"<p>MEDIA QUERIES</p>\n<p>Já foi discutido sobre a aplicação do design responsivo e como implementar um design fluído eficiente. Porém, o design fluído resolve somente metade do problema de um site responsivo.</p>\n<p>DESIGN FLUÍDO RESOLVE SÓ METADE DO PROBLEMA</p>\n<p>Porque quando se trabalha com medidas flexíveis, como as porcentagens, os <code>em</code> etc., teremos um site que se adapta muito bem para variadas resoluções, à medida que vai se redimensionando, mas como existem muitos tipos de resolução, por exemplo, desde um desktop até um celular pequeno, talvez as adaptações não fiquem tão boas nos extremos, com acontece no caso do exercício para criação de um site com três colunas.</p>\n<p>As três colunas flexíveis vão se adaptando a várias resoluções, porém quando se chega em um layout menor pode acontecer o seguinte:</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image1.jpg\" />\nFig1\n\n\n<p>Veja-se que o layout está colocado no tamanho de um smartphone. Repare que o limite responsivo é limitado, as medidas flexíveis, as porcentagens, fazendo as três colunas. Contudo, nesse caso as três colunas estão muito apertadas, pois a tela é pequena para os 33% que foram estabelecidos. </p>\n<p>Talvez para telas pequenas o interessante fosse parar de trabalhar com três colunas e trabalhar, por exemplo, com uma coluna:</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image2.jpg\" />\nFig2\n\n\n<p>Se fosse somente uma coluna, o texto teria espaço para fluir etc. Pode ser que se fizermos com uma coluna, o <code>scroll</code> da página vai aumentar, mas isso não é exatamente um problema, pois quando se trabalha com mobile é comum um <code>scroll</code> maior, o usuário já está acostumado com isso.</p>\n<p>O importante aqui é que, ao mesmo tempo em que o design tem apenas uma coluna no mobile, ele deve ter três colunas na versão desktop, ou seja, queremos dois layouts diferentes dependendo do tipo de dispositivo que se vai trabalhar. Na prática, este é o chamado layout condicional.</p>\n<p>LAYOUT CONDICIONAL</p>\n<p>Queremos mudar o layout, a partir de alguma condição, que ficará assim quando dito em código: imagine-se uma classe chamada seção, que representa cada uma daquelas seções de notícias. </p>\n<p>Por exemplo, na versão desktop ele deve ter <code>width</code> 100%, ou seja, somente uma coluna. </p>\n<p>Em uma versão intermediária, um tablet, por exemplo, ele terá <code>width</code> 50%, o que resultará em duas colunas.</p>\n<p>Já na versão mobile pequeno, o <code>width</code> será 33,33%, trabalhando com três colunas.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image3.jpg\" />\nFig3\n\n\n<p>Imagine-se esses três códigos, todos corretos, porém cada um para um tipo de cenário específico: desktop, mobile e tablet.</p>\n<p>A intenção é aplicar esse código diferente em cada uma das situações, o que pode ser feito por meio das media queries.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image4.jpg\" />\nFig4\n\n\n<p>Primeiramente se envolve os blocos de código em blocos de <code>min-width</code>. </p>\n<p>O que seria o <code>&#64;media (min-width: 768px)</code>? Este bloco está indicando que aquele determinado pedaço de código se aplica somente em telas que tenham, no mínimo, uma largura de 768 <code>pixels</code>;  e no código seguinte, <code>&#64;media (min-width: 1024px)</code>, uma largura de, no mínimo, 1024 <code>pixels</code>.</p>\n<p>Percebam que se abrirmos o site em um celular pequeno, nem 768px, nem 1024px, valerá somente a primeira regra: <code>width 100%</code>.</p>\n<p>Se o site for aberto em uma tela um pouco maior, que tenha por volta de 768 px ou 800px, uma média entre as duas media queries, valerá o código intermediário <code>width 50%</code>.</p>\n<p>Ao se abrir o site em uma tela de desktop, valerá o terceiro código <code>width 33,33%</code>, ficando com três colunas.</p>\n<p>Esse procedimento é chamado de <code>CSS3 Media Queries</code>.</p>\n<p>CSS3 MEDIA QUERIES</p>\n<p>Trata-se de um recurso do <code>CSS</code> que permite implementar a ideia de layout condicional. Um grande pilar do design responsivo. Pois não é possível, na grande maioria dos casos, fazer um design responsivo somente com o design fluído, é preciso também das media queries.</p>\n<p>SINTAXE</p>\n<p>Quanto à sintaxe das media queries, vejamos que primeiramente deve ser colocado um bloco <code>&#64;media</code>, o qual recebe como parâmetro a condição que será testada. Na Fig.5 temos um <code>min-width: 400px</code>:</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image5.jpg\" />\nFig5\n\n\n<p>Somente para entender o histórico dessa sintaxe, lembremos que isto foi inspirado no procedimento das <code>media types</code> do <code>CSS2</code>, já existindo há um bom tempo.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image6.jpg\" />\nFig6\n\n\n<p>A diferença é que naquele sistema não se podia fazer, por exemplo, uma busca por <code>width</code>. Deveria ser feito como na Fig. 6, onde somente era possível definir qual o tipo de mídia que está se acessando, como, por exemplo, um <code>media screen</code>, uma tela. Então quando for acessado em uma tela, os anúncios são exibidos. Já o <code>media print</code>, a mídia de impressão, quando o usuário quer imprimir, os anúncios ficam escondidos, afinal um anúncio em uma impressão talvez não faça muito sentido.</p>\n<p>O <code>&#64;media print</code> é bastante comum na construção de sites há muito tempo, tendo sua origem nos <code>media types</code>. Mais recentemente ocorreu a extensão do <code>&#64;media screen</code>, como se vê na Fig. 7, um exemplo em que não as duas coisas não estão misturadas:</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image7.jpg\" />\nFig7\n\n\n\n<p>De onde se retira, que a <code>media querie</code> vai avaliar verdadeira se estiver em uma tela, digamos que a impressão não valeria, cujo tamanho seja, no mínimo, 400px e qualquer outro valor acima de 400.</p>\n<p>Funciona bem a mistura de <code>media types</code> com media queries, devendo-se lembrar do cuidado com <code>browsers</code> muito antigos, como, por exemplo, um <code>IE6</code>, que ainda não suporta as novidades das media queries, mas já suportava as <code>media types</code>. Devido a essa posição intermediária, um código como aquele apresentado na Fig. 7, pode ser interpretado como somente <code>&#64;media screen</code>, ignorando o restante porque não entende e avaliando como verdadeiro [...].</p>\n<p>Nas media queries novas essa sintaxe foi modificada para alocar a palavra-chave <code>only</code>. Na prática nada muda, fazendo apenas a filtragem dos navegadores antigos, ou seja, eles não vão entender o <code>only</code>, passando a ignorar o media query inteiro, o que estaria mais correto.</p>\n<p>Quanto à Fig. 7, lembre-se que ela foi apresentada somente porque é muito comum em vários tutoriais, na internet, encontrarmos essa sintaxe, <code>only screen and (min-width...)</code>, embora, durante a construção de um site, não a usemos muito.</p>\n<p>Voltando à media query inicial (Fig. 5), que tem simplesmente um <code>min-width</code>, a indicar somente o tamanho da tela, é suficiente para 99% dos casos. Lembrando que esta media query será usada nos códigos e exercícios que faremos.</p>\n<p>Temos falado sempre em <code>min-width</code>, mas existem várias media queries possíveis, como, por exemplo o <code>max-width</code>, que é o inverso.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image8.jpg\" />\nFig8\n\n\n\n<p>Quando se fala em <code>min-width: 400px</code>, significa que queremos um tamanho de 400px para mais, ou seja, no mínimo 400px. Por outro lado, quando se coloca <code>max-width 400px</code>, indica-se um tamanho máximo de 400px, isto é, de 400px para baixo. Ambas são válidas, dependendo do cenário como veremos mais adiante.</p>\n<p>Além do <code>min</code> e do <code>max</code>, há também o <code>width</code> exato, por exemplo, <code>width 400px</code>, vai pegar a tela exatamente de 400px.</p>\n<p>Existem ainda variações para altura, <code>height</code>, e mais duas: <code>device-width</code> e <code>device-height</code>.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image9.jpg\" />\nFig9\n\n\n\n<p>A diferença do <code>device-width</code> para o <code>width</code> é que o primeiro pega a resolução nativa da tela inteira, a tela física que o usuário está trabalhando. Já o <code>width</code> pega o tamanho da janela do navegador.</p>\n<p>No mobile, geralmente, esses dois valores são os mesmos, mas nem sempre alguns navegadores podem ser redimensionados, notando-se melhor a diferença nas telas de um desktop, por exemplo, em que o <code>width</code> ou <code>height</code> serão diferentes de seus <code>device</code>.</p>\n<p>Existem mais algumas media queries que podemos usar, como a orientação retrato ou paisagem.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image10.jpg\" />\nFig10\n\n\n<p>Podemos pegar um dispositivo que possa ser girado, colocando-o na posição vertical (retrato) ou horizontal (paisagem), utilizando algum recurso a mais no código que está sendo inserido, em um design específico para esses cenários.</p>\n<p>A quantidade de media queries existentes é muito grande, mas, na prática, algumas são mais utilizadas. </p>\n<p>Como, por exemplo, a <code>width</code>. Se tivermos uma <code>width 400px</code>, que significa exatamente a largura da tela, exatamente 400px, um <code>pixel</code> a mais ou um a menos, já não funciona. Não parece tão útil, melhor seria retirar a <code>width</code> fixa da lista de media queries mais utilizadas. Pois, nesse caso, deseja-se quo <code>CSS</code> se aplique especificamente para uma largura de tela, o que não interessaria no momento em que se estiver trabalhando com uma grande variedade de dispositivos, pois o interessante é ter códigos o mais flexíveis possível. Então retira-se a <code>width</code> fixa da lista.</p>\n<p>Outra media query que pode ser cortada na maioria dos casos é a <code>height</code>. Em geral, na web fazemos conteúdos que a altura é orientada em <code>scroll</code>, em que a limitação das páginas se dá pela largura. Não é muito comum uma página com <code>scroll</code> horizontal. De uma forma geral, faz-se o <code>scroll</code> vertical e a limitação da página é a largura.</p>\n<p>As media queries tipo <code>device</code> também podem ser colocadas de lado, pois dificilmente haverá interesse pelo usuário do tamanho real da tela do dispositivo utilizado, interessando bem mais o tamanho da tela do navegador, e se este estiver em tela cheia não haverá problemas, os números serão os mesmos. Porém, se o navegador estiver redimensionado, o que interessa no momento de construção da página é saber o tamanho do navegador dos usuário. O tamanho real da tela não seria tão útil, nesses casos.</p>\n<p>Já as media queries de orientação são sempre interessantes, devendo ser mantidas.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image11.jpg\" />\nFig11\n\n\n\n<p>Portanto, apesar de existirem várias media queries, nem todas são úteis para nosso propósito. </p>\n<p>Especificamente, o <code>min-width</code> ainda é mais útil, na prática, que o <code>max-width</code>. Embora a utilização de ambos possa ser implementada sem problemas. Voltaremos a esse tópico mais adiante.</p>\n<p>Retornando ao <code>min-width 400px</code>, como esse valor foi obtido? Qual a origem desses 400px? Ou, ainda, 768px e 1024px (Fig. 4)? </p>\n<p>Esses números são denominados <code>breakpoints</code>, ou seja, os pontos de quebra do design, indicando o momento em que este será alterado pela media query.</p>\n<p>Como exemplo, temos alguns <code>frameworks</code> famosos, que foram inspiração para demonstrar esses valores.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image12.jpg\" />\nFig12\n\n\n\n<p>Na Fig. 12 temos o <code>twitter bootstrap</code>, em que existe uma tabela de media queries mais comuns (1200px, 980px, 768px, 480px...). </p>\n<p>Mas como se chega nesses valores? Por exemplo, o valor 768px é a largura de um iPad, 480px é a largura de um iPhone clássico, não o mais novo. Já 1200px costuma ser o tamanho de um notebook atual ou de uma tela desktop padrão que possui 1280px, menos as barras de rolagem, resultando em 1200px.</p>\n<p>Assim, se atentarmos bem, tais valores são inspirados em dispositivos comuns existentes no mercado.</p>\n<p>A seguir, temos o exemplo de outro <code>framework</code>:</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image13.jpg\" />\nFig13\n\n\n\n<p>Onde se vê um valor de <code>320px and up</code> e mais algumas media queries, inclusive algumas parecidas com a Fig. 12 (320px, 480px, 600px, 768px, 992px e 1382px).</p>\n<p>Observe-se que, novamente, temos valores inspirados em dispositivos comuns. Por exemplo, 320px é o tamanho de um iPhone, 480px um IPhone em modo paisagem, 600px é um tamanho comum a Tablets de 7 polegadas, 768px é o tamanho de um iPad, 992px costuma ser os 1024px sem as barras de rolagem e 1382px é do desktop maior. Assim, percebe-se que são utilizados valores de dispositivos comuns. </p>\n<p>Na prática, por exemplo, temos que enquanto um iPhone tem 320px, os Androids costumam ter 360px, e não temos uma media query que fique entre esses valores. Aliás, pergunta-se, precisaria de um valor que fosse exatamente a média desses dois valores citados? Ou ainda, quais os recursos que podemos utilizar para gerar os <code>breakpoints</code>?</p>\n<p>Aqui devemos lembrar que as tabelas de dispositivos-padrão não são o ideal para a criação de <code>breakpoints</code>, mas sim os chamados <code>breakpoints</code> de conteúdo.</p>\n<p>BREAKPOINTS DE CONTEÚDO</p>\n<p>Isso significa dizer que, a página criada deve ser aberta em diferentes dispositivos e verificar em quais deles o tamanho não está ideal para aquela resolução, anotando-se o tamanho e criando uma media query para o dispositivo com uma resolução específica.</p>\n<p>Desta forma, verifique como o design se comporta em variadas resoluções, e crie <code>breakpoints</code> que ajustarão o design pretendido àquelas resoluções diferentes.</p>\n<p>Por isso, não é interessante pegar dispositivos &#34;famosos&#34; ou padrão, pois, na verdade, não existem dispositivos-padrão. Os usuários se utilizam de milhares de dispositivos diferentes e isso muda o tempo todo. Assim, a única maneira de se garantir o bom funcionamento do site em todas as resoluções é testando em todas elas e ajustar quando for necessário.</p>\n<p>A seguir, temos um exemplo de uma página em tamanho pequeno, que será redimensionada para vários tamanhos possíveis.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image14.jpg\" />\nFig14\n\n\n\n<p>No alto pode-se ver qual o tamanho possível da janela e a adaptação do design.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image15.jpg\" />\nFig15\n\n\n\n<p>Começando com trezentos e poucos pixels percebe-se o design se adaptando.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image16.jpg\" />\nFig16\n\n\n\n<p>O menu, por exemplo, que está embaixo do logo, quando se chega em, mais ou menos 460px, sobe, se posicionando ao lado do logo.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image17.jpg\" />\nFig17\n\n\n\n<p>Mas 460px não é um número de dispositivos-padrão, sendo utilizado porque o layout fica interessante.</p>\n<p>Na Fig.18 pode-se ver como o layout se comporta com 580px.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image18.jpg\" />\nFig18\n\n\n\n<p>E ao aumentar para algo mais que 600px, o design adquire outra configuração, deixando o conteúdo maior.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image19.jpg\" />\nFig19\n\n\n\n<p>Aos 670px, já se ajusta o tamanho de texto e assim por diante.</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image20.jpg\" />\nFig20\n\n\n\n<p>Portanto, a ideia é aumentar o tamanho da página e percebendo as suas necessidades, de modo que encontro o <code>breakpoint</code> ideal para cada resolução. </p>\n<p>Esse é o procedimento da criação de media queries para <code>breakpoints</code> de conteúdo. E para realizar esses testes alguns navegadores já possuem a possibilidade de simular os dispositivos móveis colocando qualquer resolução desejada como no <a href=\"https://developers.google.com/web/tools/chrome-devtools/device-mode/?hl&#61;pt-br\" rel=\"nofollow\">chrome</a> e no <a href=\"https://developer.mozilla.org/pt-BR/docs/Tools/Modo_Design_Adaptavel\" rel=\"nofollow\">firefox</a></p>\n<p>Como último detalhe para fechar esse assunto de media queries, trataremos daquela diferença entre o <code>max-width</code> e o <code>mini-width</code>, que é fazer media queries no estilo <code>mobile first</code>.</p>\n<p>MEDIA QUERIES MOBILE FIRST</p>\n<p>Utilizando a media query para criar um determinado <code>breakpoint</code> em uma certa categoria de dispositivos. É possível escolher se dentro da media query vai um mobile ou um desktop, ou seja, a versão padrão do <code>CSS</code> será mobile ou desktop?</p>\n<p>Agora veremos como funciona o estilo <code>mobile first</code>. Observemos a próxima figura:</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image21.jpg\" />\nFig21\n\n\n\n<p>Foi criado um media query chamado <code>desktop first</code>, em que existem dois títulos, <code>h1</code> e <code>h2</code>, ambos devem ficar lado a lado na tela do desktop, flutuando, e no mobile um deve escorregar para baixo do outro, sem flutuar. Ou seja, queremos <code>float left</code> em um cenário e <code>float none</code> em outro.</p>\n<p>No formato <code>media query desktop first</code>, o código fora do media query, com <code>float left</code>, representa o que se quer para o desktop: os dois elementos flutuando.</p>\n<p>Em seguida, criaremos uma media query de <code>max-width</code> para representar o que se quer na versão mobile, isto é, para dispositivos de até 400px que terão o <code>float none</code>. Esta é a versão <code>desktop first</code>.</p>\n<p>Se invertermos a ordem das media queries, ou seja, se o código padrão passa a ser o mobile e o código interno da media query passa a ser o desktop, será necessária a inversão da media query de <code>max</code> para <code>min-width</code>. </p>\n<p>Porém, há um detalhe interessante:</p>\n      \n<img src=\"https://cdn3.gnarususercontent.com.br/responsivo/aula-3/image22.jpg\" />\nFig22\n\n\n\n<p>Repare que, como o padrão do <code>float</code> já é trabalhar com <code>float none</code>, não é necessário escrever <code>float none</code> na versão mobile. Portanto, escreveremos somente <code>float left</code> na versão desktop, ou seja, de 400px para cima.</p>\n<p>Assim, ao usarmos o <code>mini-width</code> é muito comum a aplicação em cenários como esse, em que o padrão já vale para o mobile, enquanto são criadas para o desktop customizações a mais, afinal é mais comum que o layout do desktop seja mais complicado que o do mobile, em decorrência de mais espaço, de uma largura maior.</p>\n<p>Na prática, a media query de <code>min-width</code> é muito mais utilizada que um <code>max-width</code>, pois o <code>min-width</code> representa a estratégia da <code>media queries mobile first</code>.</p>\n<p>RESUMO</p>\n<p>1) Foi visto que as media queries são uma forma de lidar com layout condicional, ou seja, layouts diferentes, ajustes diferentes, dependendo de alguma condição, em especial tamanho de tela;</p>\n<p>2) Também foi visto como eram as <code>media types</code>, no <code>CCS2</code>, e como é a sintaxe atual das media queries no <code>CCS3</code>;</p>\n<p>3) Além disso, foram discutidas as boas práticas, como trabalhar com <code>breakpoints</code>, a partir do conteúdo da página que se deseja criar, do layout desta página, do seu design, o que é melhor do que recorrer a tabelas de dispositivos considerados &#34;padrão&#34;; </p>\n<p>4) Por fim discorremos sobre a <code>media query mobile first</code>, em que é utilizado mais o <code>min-width</code>, é mais interessante na prática.</p>\n","videoUrl":"https://gnarus-video.4986a99d4a6ebf7ab87ee6461d95b58b.r2.cloudflarestorage.com/alura/105792077-sd.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20260421T032942Z&X-Amz-SignedHeaders=host&X-Amz-Credential=099e678757b68a07f650f27240529bce%2F20260421%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Expires=604800&X-Amz-Signature=8057190213b9802b4400ad2032b3ab857e77b1e88df3e9358d95bc6b7b08157e"}]}