{"id":66523,"date":"2024-01-22T08:09:30","date_gmt":"2024-01-22T11:09:30","guid":{"rendered":"https:\/\/kinqsta.com\/pt\/?p=66523&#038;preview=true&#038;preview_id=66523"},"modified":"2024-01-29T04:52:44","modified_gmt":"2024-01-29T07:52:44","slug":"tecnicas-avancadas-de-css","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/","title":{"rendered":"Dom\u00ednio de T\u00e9cnicas Avan\u00e7adas de CSS: Amplie seu Conhecimento sobre Transi\u00e7\u00f5es, Anima\u00e7\u00f5es e Transforma\u00e7\u00f5es"},"content":{"rendered":"<p>O CSS j\u00e1 n\u00e3o se limita em apenas embelezar sites. Ele se transformou em uma ferramenta que d\u00e1 vida aos sites com movimentos e intera\u00e7\u00f5es antes considerados imposs\u00edveis.<\/p>\n<p>Portanto, este guia \u00e9 totalmente focado em familiariz\u00e1-lo com tr\u00eas funcionalidades poderosas em particular: transi\u00e7\u00f5es, anima\u00e7\u00f5es e transforma\u00e7\u00f5es. Entender e usar essas t\u00e9cnicas avan\u00e7adas \u00e9 essencial para designers e desenvolvedores web que j\u00e1 superaram os <a href=\"https:\/\/kinqsta.com\/pt\/blog\/melhores-praticas-css\/\">fundamentos do CSS<\/a> e buscam criar sites que n\u00e3o s\u00f3 se destaquem, mas tamb\u00e9m resistam ao teste do tempo.<\/p>\n<p>Ao percorrer este guia, voc\u00ea adquirir\u00e1 habilidades valiosas para elevar seus projetos web al\u00e9m do comum. E, com sorte, tamb\u00e9m encontrar\u00e1 inspira\u00e7\u00e3o pelo caminho.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Transi\u00e7\u00f5es avan\u00e7adas de CSS<\/h2>\n<p>As transi\u00e7\u00f5es avan\u00e7adas de CSS tornam os elementos da interface do usu\u00e1rio interativos, envolventes e agrad\u00e1veis aos olhos. Imagine que voc\u00ea tenha um bot\u00e3o em seu site. Normalmente, ele fica ali parado, mas com as transi\u00e7\u00f5es CSS, quando algu\u00e9m passa o mouse sobre ele, ele muda de cor suavemente ou talvez aumente um pouco de tamanho.<\/p>\n<p>O conceito gira em torno da ideia de interpola\u00e7\u00e3o &#8211; transi\u00e7\u00e3o suave entre diferentes estados de uma propriedade CSS.<\/p>\n<p>Para criar esses efeitos, h\u00e1 v\u00e1rias propriedades CSS com as quais voc\u00ea precisa se familiarizar:<\/p>\n<ul>\n<li><strong>Propriedades de transi\u00e7\u00e3o<\/strong>: Incluem os detalhes da propriedade que voc\u00ea deseja animar (como <code>background-color<\/code> ou <code>opacity<\/code>), a defini\u00e7\u00e3o da dura\u00e7\u00e3o da transi\u00e7\u00e3o e a decis\u00e3o sobre o <code>transition-timing-function<\/code> (como <code>ease-in<\/code> ou <code>linear<\/code>), que determina como a transi\u00e7\u00e3o progride ao longo de sua dura\u00e7\u00e3o.<\/li>\n<li><strong>Fun\u00e7\u00f5es de tempo<\/strong>: S\u00e3o essenciais, pois controlam a acelera\u00e7\u00e3o e a desacelera\u00e7\u00e3o da transi\u00e7\u00e3o. Uma das op\u00e7\u00f5es mais vers\u00e1teis aqui \u00e9 a fun\u00e7\u00e3o <code> cubic-bezier<\/code>. Essa fun\u00e7\u00e3o permite a cria\u00e7\u00e3o de curvas de velocidade personalizadas, dando a voc\u00ea controle total sobre o ritmo da transi\u00e7\u00e3o. No in\u00edcio, pode ser um pouco complicado, mas ferramentas como o <a href=\"https:\/\/cubic-bezier.com\/#.64,.55,.93,.18\" target=\"_blank\" rel=\"noopener noreferrer\">cubic-bezier<\/a> facilitam a visualiza\u00e7\u00e3o e a cria\u00e7\u00e3o dessas curvas.<\/li>\n<\/ul>\n<figure id=\"attachment_173234\" aria-describedby=\"caption-attachment-173234\" style=\"width: 900px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-173234 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2024\/01\/cubic-bezier.png\" alt=\"cubic-bezier\" width=\"900\" height=\"364\"><figcaption id=\"caption-attachment-173234\" class=\"wp-caption-text\">Um exemplo de cubic-bezier em a\u00e7\u00e3o.<\/figcaption><\/figure>\n<p>Aqui est\u00e1 um exemplo simples para ilustrar como voc\u00ea pode usar isso em seu CSS:<\/p>\n<pre><code class=\"language-css\">.my-element {\n\ntransition-property: opacity;\n\ntransition-duration: 0.5s;\n\ntransition-timing-function: cubic-bezier(0.17, 0.67, 0.83, 0.67);\n\n}\n<\/code><\/pre>\n<p>Nesse trecho, o site <code>.my-element<\/code> alterar\u00e1 sua opacidade com uma curva de velocidade exclusiva definida pela fun\u00e7\u00e3o <code>cubic-bezier<\/code>. Essa curva determina um tipo espec\u00edfico de movimento, como come\u00e7ar devagar, aumentar a velocidade e diminuir a velocidade no final.<\/p>\n<p>Ao aplicar o <code>transition-timing-function<\/code> com valores personalizados, \u00e9 poss\u00edvel criar movimentos dos elementos web de forma mais natural, din\u00e2mica ou at\u00e9 mesmo de maneira distinta do padr\u00e3o. Essa \u00e9 uma ferramenta excelente para adicionar personalidade e sofistica\u00e7\u00e3o \u00e0s suas anima\u00e7\u00f5es na web.<\/p>\n<p>Quando se trata de t\u00e9cnicas avan\u00e7adas, aqui est\u00e3o algumas que voc\u00ea pode considerar:<\/p>\n<ol>\n<li><strong>Gerenciando m\u00faltiplas propriedades:<\/strong> Por que se limitar a animar apenas um elemento? O CSS permite que voc\u00ea alinhe diversas propriedades e as anime todas simultaneamente. Isso \u00e9 ideal para adicionar camadas \u00e0 sua anima\u00e7\u00e3o.<\/li>\n<li><strong>Anima\u00e7\u00f5es sincronizadas<\/strong>: Voc\u00ea tamb\u00e9m pode alinhar diferentes propriedades para que se movam no mesmo ritmo, criando um efeito mais coordenado.<\/li>\n<li><strong>Transi\u00e7\u00f5es aninhadas<\/strong>: Aplique transi\u00e7\u00f5es a elementos dentro de um cont\u00eainer. Dessa forma, quando voc\u00ea interage com o cont\u00eainer, os elementos filhos se comportam como voc\u00ea preferir.<\/li>\n<\/ol>\n<p>Certifique-se de que essas anima\u00e7\u00f5es n\u00e3o apenas tenham boa apar\u00eancia, mas tamb\u00e9m sejam executadas sem problemas, especialmente em dispositivos menos potentes. O uso de propriedades como <code>transform<\/code> e <code>opacity<\/code> \u00e9 uma medida inteligente, pois \u00e9 mais f\u00e1cil para os navegadores e n\u00e3o deve afetar muito o desempenho.<\/p>\n<p>Al\u00e9m disso, um aviso ao navegador com a propriedade <code>will-change<\/code> ajuda voc\u00ea a se preparar para a a\u00e7\u00e3o, garantindo que tudo seja executado sem problemas.<\/p>\n<p>Esta \u00e9 apenas uma observa\u00e7\u00e3o final sobre como garantir que isso funcione em todos os lugares: os navegadores podem ser exigentes. O uso de prefixos de fornecedor ajuda a garantir que suas transi\u00e7\u00f5es legais funcionem em diferentes navegadores. \u00c9 um pouco trabalhoso, mas ferramentas como os <a href=\"https:\/\/autoprefixer.github.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">autoprefixers<\/a> podem cuidar disso para voc\u00ea, mantendo tudo sem complica\u00e7\u00f5es.<\/p>\n<h2>Transforma\u00e7\u00f5es em CSS<\/h2>\n<p>As transforma\u00e7\u00f5es em CSS s\u00e3o excelentes para enriquecer seus designs web. Elas n\u00e3o se limitam apenas a mover elementos, mas tamb\u00e9m podem transformar totalmente a percep\u00e7\u00e3o de uma p\u00e1gina. A propriedade <code>transform<\/code> \u00e9 o principal recurso para voc\u00ea, sendo vers\u00e1til e podendo deslocar elementos de um local para outro, como deslizar uma imagem pela tela ou alterar seu tamanho &#8211; pense em fazer com que algo pare\u00e7a mais pr\u00f3ximo ou mais distante, assim como aumentar ou diminuir o zoom em uma foto.<\/p>\n<p>E, se voc\u00ea quiser ser um pouco mais sofisticado, poder\u00e1 at\u00e9 mesmo fazer com que os elementos girem.<\/p>\n<p>A parte realmente impressionante aqui \u00e9 quando voc\u00ea adiciona transforma\u00e7\u00f5es em 3D \u00e0 mistura. Com fun\u00e7\u00f5es como <code>translate3d<\/code>, <code>scale3d<\/code> e <code>rotate3d<\/code>, os elementos podem saltar da tela, criando uma experi\u00eancia mais imersiva diretamente no navegador.<\/p>\n<p>Veja, por exemplo, o efeito de cart\u00e3o girat\u00f3rio. \u00c9 um recurso interessante em que um lado de um cart\u00e3o mostra determinadas informa\u00e7\u00f5es e, quando ele \u00e9 virado, um novo conte\u00fado \u00e9 revelado no outro lado. Esse elemento interativo pode realmente chamar a aten\u00e7\u00e3o de seus visitantes.<\/p>\n<p>O segredo para conseguir esse efeito \u00e9 usar a propriedade <code>backface-visibility<\/code> de forma eficaz. Isso garante que o <a href=\"https:\/\/css-tricks.com\/almanac\/properties\/b\/backface-visibility\/\" target=\"_blank\" rel=\"noopener noreferrer\">verso do cart\u00e3o permane\u00e7a oculto<\/a> at\u00e9 que voc\u00ea o veja.<\/p>\n<p>Mas por que parar por a\u00ed? Ao combinar essas transforma\u00e7\u00f5es com transi\u00e7\u00f5es e anima\u00e7\u00f5es, voc\u00ea pode obter muito mais do seu CSS. Voc\u00ea pode ter um bot\u00e3o que aumenta elegantemente de tamanho ao passar o mouse sobre ele ou um \u00edcone que se move de forma divertida pela tela. Essas altera\u00e7\u00f5es din\u00e2micas acrescentam uma qualidade fluida aos elementos da sua p\u00e1gina web, tornando a experi\u00eancia do usu\u00e1rio ainda mais envolvente.<\/p>\n<p>O Designmodo oferece v\u00e1rios belos exemplos disso em a\u00e7\u00e3o. Primeiro, voc\u00ea pode ver o <a href=\"https:\/\/designmodo.com\/backface-visibility-css-animation\" target=\"_blank\" rel=\"noopener noreferrer\">CSS para transforma\u00e7\u00f5es em 3D<\/a> detalhado. Em seguida, voc\u00ea pode <a href=\"https:\/\/designmodo.com\/demo\/backface-visibility\/index.html\" target=\"_blank\" rel=\"noopener noreferrer\">ver o c\u00f3digo em a\u00e7\u00e3o<\/a>:<\/p>\n<figure id=\"attachment_173235\" aria-describedby=\"caption-attachment-173235\" style=\"width: 900px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-173235 size-full\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2024\/01\/designmodo-spinning-donut.png\" alt=\"O Designmodo oferece um \u00f3timo exemplo de transforma\u00e7\u00f5es em 3D que funcionam perfeitamente\" width=\"900\" height=\"395\"><figcaption id=\"caption-attachment-173235\" class=\"wp-caption-text\">O Designmodo oferece um \u00f3timo exemplo de transforma\u00e7\u00f5es em 3D que funcionam perfeitamente.<\/figcaption><\/figure>\n<h2>Consultas de cont\u00eaineres<\/h2>\n<p>As consultas de cont\u00eaineres s\u00e3o outro aspecto do CSS que vale a pena explorar. Elas permitem que voc\u00ea estilize elementos com base no tamanho do seu cont\u00eainer em vez de apenas no tamanho total da tela. Pense da seguinte forma: Voc\u00ea tem uma caixa e quer que o material dentro dela tenha uma boa apar\u00eancia, independentemente do tamanho da caixa. As consultas de cont\u00eaineres s\u00e3o perfeitas para isso.<\/p>\n<p>Elas s\u00e3o muito \u00fateis quando voc\u00ea quer que diferentes partes da sua p\u00e1gina web, como barras laterais ou cart\u00f5es, mudem de apar\u00eancia dependendo do espa\u00e7o que t\u00eam. Cada componente pode <a href=\"https:\/\/www.smashingmagazine.com\/2023\/07\/writing-css-2023\/\" target=\"_blank\" rel=\"noopener noreferrer\">decidir seu pr\u00f3prio estilo<\/a>, independentemente do restante da p\u00e1gina.<\/p>\n<p>Aqui est\u00e1 um resumo r\u00e1pido de como voc\u00ea pode us\u00e1-los:<\/p>\n<ul>\n<li><strong>Configure o cont\u00eainer<\/strong>: Primeiro, informe ao CSS qual parte da sua p\u00e1gina \u00e9 um cont\u00eainer. Isso \u00e9 feito utilizando propriedades como <code>container-type<\/code> e <code>container-name<\/code>.<\/li>\n<li><strong>Escreva suas consultas<\/strong>: Da mesma forma que as consultas de m\u00eddia, mas para cont\u00eaineres. Voc\u00ea escreve uma regra que diz: &#8220;Ei, se meu cont\u00eainer tiver pelo menos essa largura, fa\u00e7a essas altera\u00e7\u00f5es de estilo&#8221;<\/li>\n<\/ul>\n<p>Este \u00e9 o c\u00f3digo b\u00e1sico para isso:<\/p>\n<pre><code class=\"language-css\">@container (min-width: 300px) {\n\n.component {\n\n\/* styles *\/\n\n}\n\n}<\/code><\/pre>\n<p>Neste exemplo, os estilos da classe <code>.component<\/code> ser\u00e3o aplicados quando seu cont\u00eainer atingir uma largura m\u00ednima de 300px.<\/p>\n<p>Agora, as consultas de cont\u00eainer podem ser usadas em v\u00e1rios cen\u00e1rios, como:<\/p>\n<ul>\n<li><strong>Barras laterais e rodap\u00e9s responsivos<\/strong>: Ajustar a largura e o layout das barras laterais ou rodap\u00e9s com base no tamanho do cont\u00eainer.<\/li>\n<li><strong>Cart\u00f5es responsivos<\/strong>: Alterar o layout ou o estilo dos cart\u00f5es em um layout de grade, ou flexbox com base na largura do seu cont\u00eainer.<\/li>\n<\/ul>\n<p>Embora as consultas de cont\u00eainer sejam compat\u00edveis com os principais navegadores, incluindo Chrome, Firefox, Safari e Edge, ainda \u00e9 uma boa pr\u00e1tica us\u00e1-las como um aprimoramento progressivo. Comece com estilos b\u00e1sicos para navegadores que n\u00e3o oferecem suporte e aprimore para aqueles que suportam consultas de cont\u00eaineres.<\/p>\n<h2>Uso do Flexbox para alinhamento vertical<\/h2>\n<p>O <a href=\"https:\/\/web.dev\/learn\/css\/flexbox\" target=\"_blank\" rel=\"noopener noreferrer\">Flexbox<\/a> \u00e9 uma ferramenta incrivelmente \u00fatil no CSS, especialmente quando se trata de alinhamento vertical. Embora j\u00e1 exista h\u00e1 algum tempo, ainda \u00e9 muito relevante, especialmente para alinhar itens ao longo do eixo transversal (que, dependendo do layout, pode ser vertical).<\/p>\n<h3>Usando align-items para alinhamento vertical<\/h3>\n<p>A propriedade <code>align-items<\/code> no Flexbox \u00e9 a op\u00e7\u00e3o ideal para voc\u00ea alinhar itens verticalmente em um cont\u00eainer. Ela funciona quando o cont\u00eainer flex\u00edvel tem um <code>flex-direction<\/code> de linhas. Essa propriedade permite que voc\u00ea controle como todos os filhos de um cont\u00eainer flex\u00edvel s\u00e3o alinhados ao longo do eixo transversal.<\/p>\n<p>Por exemplo, se voc\u00ea tiver v\u00e1rios itens em um cont\u00eainer flex\u00edvel e quiser que todos eles sejam centralizados verticalmente, use <code>align-items: center;<\/code>. Aqui est\u00e3o as principais op\u00e7\u00f5es que voc\u00ea tem com <code>align-items<\/code>:<\/p>\n<ul>\n<li><code>flex-start<\/code>: Alinha os itens ao in\u00edcio do cont\u00eainer.<\/li>\n<li><code>flex-end<\/code>: Alinha os itens ao final do cont\u00eainer.<\/li>\n<li><code>center<\/code>: Centraliza os itens no cont\u00eainer.<\/li>\n<li><code>baseline<\/code>: Alinha os itens com base em sua linha de base.<\/li>\n<li><code>stretch<\/code>: Estica os itens para preencher o cont\u00eainer (comportamento padr\u00e3o).<\/li>\n<\/ul>\n<h3>Uso do align-self para controle individual<\/h3>\n<p>Embora o <code>align-items<\/code> seja \u00f3timo para alinhar todos os itens em um cont\u00eainer, \u00e0s vezes voc\u00ea deseja alinhar apenas um item de forma diferente. \u00c9 por isso que <code>align-self<\/code> \u00e9 t\u00e3o \u00fatil. Essa propriedade permite que voc\u00ea substitua o valor <code>align-items<\/code> para itens flex\u00edveis individuais. Ela aceita os mesmos valores que <code>align-items<\/code>.<\/p>\n<p>Por exemplo, suponha que voc\u00ea tenha um cont\u00eainer flex\u00edvel com <code>align-items: center;<\/code>, mas h\u00e1 um item que voc\u00ea deseja alinhar ao in\u00edcio. Voc\u00ea pode aplicar <code>align-self: flex-start;<\/code> a esse item espec\u00edfico. Essa \u00e9 uma \u00f3tima maneira de ter controle preciso sobre o alinhamento de itens individuais.<\/p>\n<p>No entanto, pode ser muito \u00fatil ver isso em a\u00e7\u00e3o.<\/p>\n<p>Digamos que voc\u00ea esteja projetando uma barra de navega\u00e7\u00e3o com uma logo, alguns links e uma barra de pesquisa. Voc\u00ea deseja que os links sejam centralizados, que a logo seja alinhado na parte superior e que a barra de pesquisa, seja alinhada na parte inferior.<\/p>\n<p>Veja como voc\u00ea poderia fazer isso:<\/p>\n<pre><code class=\"language-css\">.nav-container {\n\ndisplay: flex;\n\nflex-direction: row;\n\nalign-items: center;\n\n}\n\n.logo {\n\nalign-self: flex-start;\n\n}\n\n.search-bar {\n\nalign-self: flex-end;\n\n}<\/code><\/pre>\n<p>Neste exemplo, o <code>.nav-container<\/code> \u00e9 um cont\u00eainer flex\u00edvel com seus itens geralmente centralizados. A logo e a barra de pesquisa, no entanto, fogem dessa regra geral, alinhando-se ao in\u00edcio e ao final do cont\u00eainer, respectivamente.<\/p>\n<h2>Fun\u00e7\u00f5es de cores modernas em CSS<\/h2>\n<p>As fun\u00e7\u00f5es de cores modernas no CSS evolu\u00edram significativamente, oferecendo maneiras mais sofisticadas de definir e manipular cores no design da web. Vamos nos aprofundar em algumas dessas fun\u00e7\u00f5es:<\/p>\n<h3>1. rgb() e rgba()<\/h3>\n<p>A fun\u00e7\u00e3o <code>rgb()<\/code> \u00e9 uma maneira tradicional de definir cores usando os canais vermelho, verde e azul. Cada canal pode ter um valor entre 0 e 255. A variante <code>rgba()<\/code> adiciona um canal alfa para opacidade, sendo que 1 \u00e9 totalmente opaco e 0 \u00e9 totalmente transparente.<\/p>\n<p>Voc\u00ea deve ter uma apar\u00eancia semelhante a esta:<\/p>\n<pre><code class=\"language-css\">.example {\n\ncolor: rgb(255, 0, 0); \/* Red *\/\n\nbackground-color: rgba(255, 0, 0, 0.5); \/* Semi-transparent red *\/\n\n}<\/code><\/pre>\n<h3>2. hsl() e hsla()<\/h3>\n<p><code>hsl()<\/code> representam as cores em termos de Matiz, Satura\u00e7\u00e3o e Luminosidade, tornando mais intuitiva a sele\u00e7\u00e3o de varia\u00e7\u00f5es de cores. Assim como <code>rgba()<\/code>, <code>hsla()<\/code> inclui um canal alfa para opacidade. Assim:<\/p>\n<pre><code class=\"language-css\">.example {\n\ncolor: hsl(120, 100%, 50%); \/* Green *\/\n\nbackground-color: hsla(120, 100%, 50%, 0.3); \/* Semi-transparent green *\/\n\n}<\/code><\/pre>\n<h3>3. oklch() e oklab()<\/h3>\n<p><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/color_value\/oklch\"><code>oklch()<\/code><\/a> e <code>oklab()<\/code> s\u00e3o adi\u00e7\u00f5es mais recentes \u00e0s fun\u00e7\u00f5es de cores do CSS. Elas s\u00e3o baseadas no <a href=\"https:\/\/www.hunterlab.com\/blog\/what-is-cielab-color-space\/\" target=\"_blank\" rel=\"noopener noreferrer\">espa\u00e7o de cores CIELAB<\/a>, que foi projetado para ser perceptualmente uniforme. Isso significa que as altera\u00e7\u00f5es nos valores das cores correspondem mais de perto \u00e0s altera\u00e7\u00f5es percebidas pelo olho humano.<\/p>\n<p>Agora, especificamente:<\/p>\n<ul>\n<li><code>oklab()<\/code> \u00e9 usado para definir cores em um espa\u00e7o perceptualmente uniforme.<\/li>\n<li><code>oklch()<\/code> \u00e9 semelhante, mas usa coordenadas cil\u00edndricas (luminosidade, croma e matiz).<\/li>\n<\/ul>\n<p>Essas fun\u00e7\u00f5es permitem uma manipula\u00e7\u00e3o de cores mais precisa e intuitiva, especialmente para tarefas como a cria\u00e7\u00e3o de gradientes de cores suaves. Aqui est\u00e1 o que voc\u00ea pode ver em forma de c\u00f3digo:<\/p>\n<pre><code class=\"language-css\">.example {\n\ncolor: oklch(75%, 0.25, 250); \/* A color in oklch *\/\n\nbackground-color: oklab(0.623, 0.172, -0.079); \/* A color in oklab *\/\n\n}<\/code><\/pre>\n<h3>Implementa\u00e7\u00e3o de esquemas de cores avan\u00e7ados<\/h3>\n<p>Com essas fun\u00e7\u00f5es, especialmente as mais avan\u00e7adas <code>oklch()<\/code> e <code>oklab()<\/code>, voc\u00ea pode implementar esquemas de cores complexos que sejam visualmente consistentes e atraentes. Elas oferecem mais controle sobre como as cores s\u00e3o renderizadas e percebidas, garantindo que seus designs sejam esteticamente agrad\u00e1veis e acess\u00edveis.<\/p>\n<p>Ao combinar essas fun\u00e7\u00f5es de cores com recursos de CSS, como propriedades personalizadas (vari\u00e1veis CSS) e c\u00e1lculos, voc\u00ea pode desenvolver sistemas de cores din\u00e2micos e flex\u00edveis que se adaptam a diferentes temas, estados e ambientes.<\/p>\n<p>\u00c0 medida que os padr\u00f5es da web evoluem e o suporte dos navegadores a essas fun\u00e7\u00f5es se expande, a utiliza\u00e7\u00e3o dessas fun\u00e7\u00f5es de cores modernas pode melhorar significativamente o design visual e a experi\u00eancia do usu\u00e1rio nos seus projetos web.<\/p>\n<h2>Curvar o texto ao redor das imagens<\/h2>\n<p>A propriedade CSS <code>shape-outside<\/code> oferece uma maneira criativa de <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/shape-outside\">envolver texto ao redor de imagens<\/a>, contribuindo para layouts mais din\u00e2micos e visualmente interessantes, al\u00e9m de <a href=\"https:\/\/kinqsta.com\/pt\/blog\/estilo-de-imagem-css\/\">estilos de imagem<\/a> mais avan\u00e7ados.<\/p>\n<p>Ela permite que voc\u00ea defina uma forma em torno da qual o conte\u00fado embutido deve ser envolvido. Isso \u00e9 \u00fatil para envolver o texto em torno de imagens em uma forma n\u00e3o retangular, criando layouts mais org\u00e2nicos e visualmente mais atraentes do que o envolvimento de texto retangular padr\u00e3o.<\/p>\n<h3>Como isso funciona?<\/h3>\n<p>Voc\u00ea pode definir v\u00e1rias formas, como c\u00edrculos, elipses e pol\u00edgonos, ou at\u00e9 mesmo usar o canal alfa de uma imagem para determinar a forma.<\/p>\n<p>A propriedade <code>shape-outside<\/code> normalmente se aplica a elementos flutuantes. E quando voc\u00ea faz uma imagem flutuar e aplica um <code>shape-outside<\/code>, o texto se envolve ao redor dela de acordo com a forma definida.<\/p>\n<p>Aqui est\u00e1 um exemplo b\u00e1sico de uso de shape-outside com um c\u00edrculo:<\/p>\n<pre><code class=\"language-css\">.image {\n\nfloat: left;\n\nshape-outside: circle(50%);\n\nwidth: 200px;\n\nheight: 200px;\n\nmargin-right: 15px;\n\n}<\/code><\/pre>\n<p>Neste exemplo, a classe <code>.image<\/code> \u00e9 aplicada a um elemento de imagem. Ele \u00e9 alinhado \u00e0 esquerda e o <code>shape-outside: circle(50%);<\/code> cria uma forma circular em torno da qual o texto ser\u00e1 envolvido. O uso eficaz do <code>shape-outside<\/code> pode abrir novas possibilidades em seus designs, permitindo que o texto contorne formas complexas, o que possibilita criar layouts com estilo de revistas e p\u00e1ginas da web visualmente atrativas.<\/p>\n<h2>Modos de mescla CSS<\/h2>\n<p>Os modos de mescla CSS oferecem uma maneira eficiente de misturar cores e imagens, criando efeitos visuais exclusivos que tamb\u00e9m podem aprimorar seus designs. Esses modos de mesclagem permitem que voc\u00ea crie efeitos de texto envolventes, sobreposi\u00e7\u00f5es de imagens e padr\u00f5es de fundo complexos. Para que voc\u00ea possa usar o <code>background-blend-mode<\/code>, primeiro vamos falar sobre o que ele faz. Essa propriedade \u00e9 usada para definir como as imagens e a cor de fundo de um elemento devem se misturar. Por exemplo, se voc\u00ea tiver uma imagem de fundo e uma cor de fundo, poder\u00e1 mescl\u00e1-las usando diferentes modos de mesclagem, como multiplicar, tela, sobreposi\u00e7\u00e3o, etc. \u00c9 assim que o c\u00f3digo pode se parecer:<\/p>\n<pre><code class=\"language-css\">.element {\n\nbackground-image: url('image.jpg');\n\nbackground-color: blue;\n\nbackground-blend-mode: multiply;\n\n}<\/code><\/pre>\n<p>Agora, o <code>mix-blend-mode<\/code> funciona mesclando o conte\u00fado de um elemento (inclusive imagens e texto) com seu plano de fundo. Isso \u00e9 particularmente \u00fatil para <a href=\"https:\/\/kinqsta.com\/pt\/blog\/contorno-de-texto-com-css\/\">efeitos de texto<\/a> ou para sobrepor uma imagem sobre outra. Assim:<\/p>\n<pre><code class=\"language-css\">&lt;\n\n.element {\n\nmix-blend-mode: screen;\n\n}<\/code><\/pre>\n<h3>Modos de mesclagem populares<\/h3>\n<p>Para sua refer\u00eancia, aqui est\u00e3o alguns dos modos de mesclagem mais populares que voc\u00ea precisa conhecer para usar esse efeito adequadamente:<\/p>\n<ul>\n<li><strong>Multiply<\/strong>: Multiplica as cores da camada de mesclagem e da camada de base, resultando em uma cor mais escura.<\/li>\n<li><strong>Screen<\/strong>: Torna as cores mais claras, o oposto de multiplicar. \u00c9 \u00fatil para criar efeitos de luz.<\/li>\n<li><strong>Overlay<\/strong>: Combina os modos de mesclagem, multiplica\u00e7\u00e3o e tela. As partes claras da imagem ficam mais claras e as partes escuras ficam mais escuras.<\/li>\n<li><strong>Darken and lighten<\/strong>: Seleciona a cor mais escura ou mais clara, respectivamente.<\/li>\n<li><strong>Color dodge and color burn<\/strong>: Clarear ou escurecer a cor de base para refletir a cor de mesclagem.<\/li>\n<li><strong>Difference and exclusion<\/strong>: Usado para criar efeitos de cores mais art\u00edsticos e invertidos.<\/li>\n<\/ul>\n<h2>Adapta\u00e7\u00e3o \u00e0s prefer\u00eancias do usu\u00e1rio<\/h2>\n<p>A adapta\u00e7\u00e3o \u00e0s prefer\u00eancias do usu\u00e1rio no design web \u00e9 um aspecto essencial da cria\u00e7\u00e3o de sites acess\u00edveis e f\u00e1ceis de usar. As consultas de m\u00eddia CSS para prefer\u00eancias como <a href=\"https:\/\/www.smashingmagazine.com\/2023\/07\/writing-css-2023\/\"><code>prefers-color-scheme<\/code><\/a> e <code>prefers-reduced-motion<\/code> desempenham um papel importante nesse processo.<\/p>\n<p>Vamos explorar esses conceitos.<\/p>\n<h3>prefers-color-scheme<\/h3>\n<p>Essa consulta de m\u00eddia \u00e9 usada para detectar se o usu\u00e1rio solicitou que o sistema usasse um tema de cor clara ou escura. \u00c9 uma maneira conveniente de implementar um modo escuro no design de um site.<\/p>\n<p>Voc\u00ea pode usar <code>prefers-color-scheme<\/code> para especificar estilos diferentes para os modos claro e escuro.<\/p>\n<p>Por exemplo:<\/p>\n<pre><code class=\"language-css\">\/* Default light mode styles *\/\n\nbody {\n\nbackground-color: white;\n\ncolor: black;\n\n}\n\n\/* Dark mode styles *\/\n\n@media (prefers-color-scheme: dark) {\n\nbody {\n\nbackground-color: black;\n\ncolor: white;\n\n}\n\n}<\/code><\/pre>\n<p>Neste trecho, os estilos padr\u00e3o se aplicam ao modo claro, enquanto os estilos dentro da consulta <code>@media<\/code> se aplicam quando o usu\u00e1rio prefere um esquema de cores escuras.<\/p>\n<h3>prefers-reduced-motion<\/h3>\n<p>Essa consulta de m\u00eddia foi criada para detectar se o usu\u00e1rio solicitou que o sistema minimizasse a quantidade de anima\u00e7\u00e3o ou movimento usado. \u00c9 essencial para usu\u00e1rios que sofrem de enjoo ou t\u00eam dist\u00farbios vestibulares.<\/p>\n<p>Voc\u00ea pode usar <code>prefers-reduced-motion<\/code> para reduzir ou remover anima\u00e7\u00f5es e transi\u00e7\u00f5es:<\/p>\n<pre><code class=\"language-css\">\/* Standard animations *\/\n\n.animate {\n\ntransition: transform 0.3s ease;\n\n}\n\n\/* Reduced motion *\/\n\n@media (prefers-reduced-motion: reduce) {\n\n.animate {\n\ntransition: none;\n\n}\n\n}<\/code><\/pre>\n<p>Agora, aqui, voc\u00ea ver\u00e1 que as anima\u00e7\u00f5es s\u00e3o desativadas quando o usu\u00e1rio indica uma prefer\u00eancia por movimentos reduzidos.<\/p>\n<p>Incorporar <code>prefers-color-scheme<\/code> e <code>prefers-reduced-motion<\/code> ao seu CSS \u00e9 um passo em dire\u00e7\u00e3o a uma web mais inclusiva e amig\u00e1vel, garantindo que seu site seja acess\u00edvel e confort\u00e1vel para uma ampla gama de usu\u00e1rios com diferentes necessidades e prefer\u00eancias.<\/p>\n<h2>Use os pseudo-seletores :is() e :where()<\/h2>\n<p>Os pseudo-seletores <code>:is()<\/code> e <code>:where()<\/code> no CSS s\u00e3o ferramentas avan\u00e7adas para gerenciar a especificidade e simplificar strings de seletores complexas. Vamos explorar como eles funcionam e ver alguns exemplos do mundo real.<\/p>\n<h3>pseudo-seletor :is()<\/h3>\n<p>Esse seletor permite que voc\u00ea direcione v\u00e1rios elementos com uma \u00fanica regra e reduz a repeti\u00e7\u00e3o de seletores semelhantes. A precis\u00e3o do pseudo-classe\u00a0<code>:is()<\/code> \u00e9 determinada pela precis\u00e3o do seletor mais detalhado entre os seus argumentos.<\/p>\n<pre><code class=\"language-css\">\/* Selects any paragraph or heading inside an article *\/\n\narticle :is(h1, h2, h3, p) {\n\ncolor: blue;\n\n}<\/code><\/pre>\n<h3>pseudo-seletor :where()<\/h3>\n<p>Este \u00e9 semelhante ao <code>:is()<\/code>, mas tem uma diferen\u00e7a fundamental. <code>:where()<\/code> sempre tem uma precis\u00e3o de zero. Isso o torna \u00fatil para substituir estilos sem aumentar a precis\u00e3o. Na pr\u00e1tica, pode parecer algo assim:<\/p>\n<pre><code class=\"language-css\">\/* Selects any paragraph or heading, but with no added specificity *\/\n\n:where(article, section) p {\n\nmargin-bottom: 1em;\n\n}<\/code><\/pre>\n<p>Usando <code>:is()<\/code> e <code>:where()<\/code>, voc\u00ea pode criar folhas de estilo mais flex\u00edveis e de f\u00e1cil manuten\u00e7\u00e3o, especialmente ao lidar com designs complexos. Por exemplo, esses pseudo-seletores podem ser \u00fateis se voc\u00ea precisar:<\/p>\n<ul>\n<li><strong>Simplificar seletores aninhados<\/strong>: Eles podem simplificar seletores aninhados ou seletores agrupados, tornando seu CSS mais leg\u00edvel e mais f\u00e1cil de manter.<\/li>\n<li><strong>Substituir estilos<\/strong>: <code>:where()<\/code> \u00e9 excelente para criar estilos b\u00e1sicos que podem ser facilmente substitu\u00eddos sem preocupa\u00e7\u00f5es com a precis\u00e3o.<\/li>\n<li><strong>Reutilizar estilos<\/strong>: Ambos os pseudo-seletores permitem estilos mais modulares e reutiliz\u00e1veis, pois voc\u00ea pode agrupar v\u00e1rios elementos em uma \u00fanica regra.<\/li>\n<\/ul>\n<p>Para ver essa funcionalidade na pr\u00e1tica, pense em um menu de navega\u00e7\u00e3o com diversas se\u00e7\u00f5es. O <code>:is()<\/code> pode ser utilizado para estilizar todos os links do menu de forma uniforme, n\u00e3o importando o qu\u00e3o aninhados eles estejam, da seguinte forma:<\/p>\n<pre><code class=\"language-css\">nav :is(ul, ol, div) &gt; li &gt; a {\n\npadding: 10px;\n\ncolor: white;\n\n}<\/code><\/pre>\n<h2>Resumo<\/h2>\n<p>Desde a eleg\u00e2ncia das transi\u00e7\u00f5es CSS que d\u00e3o vida \u00e0s interfaces de usu\u00e1rio at\u00e9 o poder das transforma\u00e7\u00f5es 3D, esperamos que agora voc\u00ea tenha uma melhor compreens\u00e3o de algumas das t\u00e9cnicas CSS mais avan\u00e7adas dispon\u00edveis em 2026 e no futuro.<\/p>\n<p>Este guia esclarece essas t\u00e9cnicas avan\u00e7adas e ressalta sua import\u00e2ncia na cria\u00e7\u00e3o de designs web responsivos, f\u00e1ceis de usar e visualmente atraentes. E, independentemente de qual voc\u00ea decidir usar, lembre-se de priorizar a acessibilidade e o <a href=\"https:\/\/kinqsta.com\/pt\/blog\/otimizar-css\/\">desempenho do CSS<\/a> em tudo o que fizer.<\/p>\n<p>Voc\u00ea usa alguma dessas t\u00e9cnicas avan\u00e7adas de CSS atualmente? Voc\u00ea tem recomenda\u00e7\u00f5es para experimentar outras? Fique \u00e0 vontade para nos informar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O CSS j\u00e1 n\u00e3o se limita em apenas embelezar sites. Ele se transformou em uma ferramenta que d\u00e1 vida aos sites com movimentos e intera\u00e7\u00f5es antes &#8230;<\/p>\n","protected":false},"author":199,"featured_media":66524,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1017,1015],"class_list":["post-66523","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-linguagens-desenvolvimento-web","topic-web-design"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Dom\u00ednio de T\u00e9cnicas Avan\u00e7adas de CSS - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Se voc\u00ea est\u00e1 pronto para avan\u00e7ar al\u00e9m do b\u00e1sico, esta cole\u00e7\u00e3o de t\u00e9cnicas avan\u00e7adas de CSS ajudar\u00e1 a impulsionar seus designs.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dom\u00ednio de T\u00e9cnicas Avan\u00e7adas de CSS: Amplie seu Conhecimento sobre Transi\u00e7\u00f5es, Anima\u00e7\u00f5es e Transforma\u00e7\u00f5es\" \/>\n<meta property=\"og:description\" content=\"Se voc\u00ea est\u00e1 pronto para avan\u00e7ar al\u00e9m do b\u00e1sico, esta cole\u00e7\u00e3o de t\u00e9cnicas avan\u00e7adas de CSS ajudar\u00e1 a impulsionar seus designs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-22T11:09:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-29T07:52:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/01\/wp-advanced-css-techniques.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Se voc\u00ea est\u00e1 pronto para avan\u00e7ar al\u00e9m do b\u00e1sico, esta cole\u00e7\u00e3o de t\u00e9cnicas avan\u00e7adas de CSS ajudar\u00e1 a impulsionar seus designs.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/01\/wp-advanced-css-techniques.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Dom\u00ednio de T\u00e9cnicas Avan\u00e7adas de CSS: Amplie seu Conhecimento sobre Transi\u00e7\u00f5es, Anima\u00e7\u00f5es e Transforma\u00e7\u00f5es\",\"datePublished\":\"2024-01-22T11:09:30+00:00\",\"dateModified\":\"2024-01-29T07:52:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/\"},\"wordCount\":3323,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/01\/wp-advanced-css-techniques.jpg\",\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/\",\"url\":\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/\",\"name\":\"Dom\u00ednio de T\u00e9cnicas Avan\u00e7adas de CSS - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/01\/wp-advanced-css-techniques.jpg\",\"datePublished\":\"2024-01-22T11:09:30+00:00\",\"dateModified\":\"2024-01-29T07:52:44+00:00\",\"description\":\"Se voc\u00ea est\u00e1 pronto para avan\u00e7ar al\u00e9m do b\u00e1sico, esta cole\u00e7\u00e3o de t\u00e9cnicas avan\u00e7adas de CSS ajudar\u00e1 a impulsionar seus designs.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/01\/wp-advanced-css-techniques.jpg\",\"contentUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/01\/wp-advanced-css-techniques.jpg\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web Design\",\"item\":\"https:\/\/kinqsta.com\/pt\/topicos\/web-design\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Dom\u00ednio de T\u00e9cnicas Avan\u00e7adas de CSS: Amplie seu Conhecimento sobre Transi\u00e7\u00f5es, Anima\u00e7\u00f5es e Transforma\u00e7\u00f5es\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#website\",\"url\":\"https:\/\/kinqsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinqsta.com\/pt\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Dom\u00ednio de T\u00e9cnicas Avan\u00e7adas de CSS - Kinsta\u00ae","description":"Se voc\u00ea est\u00e1 pronto para avan\u00e7ar al\u00e9m do b\u00e1sico, esta cole\u00e7\u00e3o de t\u00e9cnicas avan\u00e7adas de CSS ajudar\u00e1 a impulsionar seus designs.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/","og_locale":"pt_PT","og_type":"article","og_title":"Dom\u00ednio de T\u00e9cnicas Avan\u00e7adas de CSS: Amplie seu Conhecimento sobre Transi\u00e7\u00f5es, Anima\u00e7\u00f5es e Transforma\u00e7\u00f5es","og_description":"Se voc\u00ea est\u00e1 pronto para avan\u00e7ar al\u00e9m do b\u00e1sico, esta cole\u00e7\u00e3o de t\u00e9cnicas avan\u00e7adas de CSS ajudar\u00e1 a impulsionar seus designs.","og_url":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2024-01-22T11:09:30+00:00","article_modified_time":"2024-01-29T07:52:44+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/01\/wp-advanced-css-techniques.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Se voc\u00ea est\u00e1 pronto para avan\u00e7ar al\u00e9m do b\u00e1sico, esta cole\u00e7\u00e3o de t\u00e9cnicas avan\u00e7adas de CSS ajudar\u00e1 a impulsionar seus designs.","twitter_image":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/01\/wp-advanced-css-techniques.jpg","twitter_creator":"@kinsta_pt","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Jeremy Holcombe","Tempo estimado de leitura":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Dom\u00ednio de T\u00e9cnicas Avan\u00e7adas de CSS: Amplie seu Conhecimento sobre Transi\u00e7\u00f5es, Anima\u00e7\u00f5es e Transforma\u00e7\u00f5es","datePublished":"2024-01-22T11:09:30+00:00","dateModified":"2024-01-29T07:52:44+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/"},"wordCount":3323,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/01\/wp-advanced-css-techniques.jpg","inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/","url":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/","name":"Dom\u00ednio de T\u00e9cnicas Avan\u00e7adas de CSS - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinqsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/01\/wp-advanced-css-techniques.jpg","datePublished":"2024-01-22T11:09:30+00:00","dateModified":"2024-01-29T07:52:44+00:00","description":"Se voc\u00ea est\u00e1 pronto para avan\u00e7ar al\u00e9m do b\u00e1sico, esta cole\u00e7\u00e3o de t\u00e9cnicas avan\u00e7adas de CSS ajudar\u00e1 a impulsionar seus designs.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#primaryimage","url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/01\/wp-advanced-css-techniques.jpg","contentUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2024\/01\/wp-advanced-css-techniques.jpg","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/pt\/blog\/tecnicas-avancadas-de-css\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Web Design","item":"https:\/\/kinqsta.com\/pt\/topicos\/web-design\/"},{"@type":"ListItem","position":3,"name":"Dom\u00ednio de T\u00e9cnicas Avan\u00e7adas de CSS: Amplie seu Conhecimento sobre Transi\u00e7\u00f5es, Anima\u00e7\u00f5es e Transforma\u00e7\u00f5es"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/pt\/#website","url":"https:\/\/kinqsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinqsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinqsta.com\/pt\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/66523","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/comments?post=66523"}],"version-history":[{"count":7,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/66523\/revisions"}],"predecessor-version":[{"id":66613,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/66523\/revisions\/66613"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/66523\/translations\/en"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/66523\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/66523\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/66523\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/66523\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/66523\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/66523\/translations\/es"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/66523\/translations\/it"},{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/66523\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/media\/66524"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/media?parent=66523"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/tags?post=66523"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/topic?post=66523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}