<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Giulia Cardieri</title>
    <description>The latest articles on DEV Community by Giulia Cardieri (@giuliacardieri).</description>
    <link>https://dev.to/giuliacardieri</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F293990%2F2dcd51b8-7c36-4594-8809-7722f46baa8e.JPG</url>
      <title>DEV Community: Giulia Cardieri</title>
      <link>https://dev.to/giuliacardieri</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/giuliacardieri"/>
    <language>en</language>
    <item>
      <title>Deixando de só pseudo-entender as pseudo-classes de CSS</title>
      <dc:creator>Giulia Cardieri</dc:creator>
      <pubDate>Tue, 14 Apr 2020 22:30:41 +0000</pubDate>
      <link>https://dev.to/giuliacardieri/deixando-de-so-pseudo-entender-as-pseudo-classes-de-css-3pgg</link>
      <guid>https://dev.to/giuliacardieri/deixando-de-so-pseudo-entender-as-pseudo-classes-de-css-3pgg</guid>
      <description>&lt;p&gt;&lt;strong&gt;Resumo&lt;/strong&gt;: Um guia das pseudo-classes em CSS para todos os níveis.&lt;/p&gt;

&lt;p&gt;Oi gente, resolvi criar um post detalhado sobre pseudo-classes em CSS com o objetivo de ajudar pessoas desenvolvedoras a aprender ou entender mais sobre essas classes. Algumas são utilizadas com frequência como &lt;code&gt;:hover&lt;/code&gt; ou &lt;code&gt;:first-child&lt;/code&gt;, mas será que ainda temos dúvidas sobre a diferença de &lt;code&gt;:first-child&lt;/code&gt; e &lt;code&gt;:first-of-type?&lt;/code&gt;? Vamos descobrir 👀&lt;/p&gt;

&lt;h2&gt;
  
  
  O que são pseudo-classes em CSS?
&lt;/h2&gt;

&lt;p&gt;Pseudo-classes são classes pré-definidas em CSS que, de acordo com certas condições, modificam o estilo de elementos HTML.&lt;br&gt;
Essas condições mudam de acordo com cada classe. Diferente das classes normais em CSS, nós não podemos escolher um nome personalizado para cada uma e as classes utilizam dois pontos (:) no lugar do tradicional ponto final (.).&lt;/p&gt;

&lt;p&gt;Para facilitar a leitura desse artigo vou distinguir as pseudo-classes em quatro grupos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pseudo-classes dinâmicas;&lt;/li&gt;
&lt;li&gt;Pseudo-classes estruturais; &lt;/li&gt;
&lt;li&gt;Pseudo-classes relacionais;&lt;/li&gt;
&lt;li&gt;Pseudo-classes textuais;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Agora vamos entender quais são as principais pseudo-classes de cada grupo e como podemos utilizá-las.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Pseudo-classes dinâmicas
&lt;/h3&gt;

&lt;p&gt;Essas pseudo-classes são muito utilizadas e (na minha opinião) as mais conhecidas. Alguns exemplos são:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt;
&lt;span class="nd"&gt;:active&lt;/span&gt;
&lt;span class="nd"&gt;:focus&lt;/span&gt;
&lt;span class="nd"&gt;:disabled&lt;/span&gt;
&lt;span class="nd"&gt;:checked&lt;/span&gt;
&lt;span class="nd"&gt;:required&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Se você já desenvolveu um elemento de navegação/menu em CSS você provavelmente já utilizou alguma dessas classes. Se você está começando e nunca viu nenhuma delas, não se preocupe! 😉&lt;/p&gt;

&lt;h4&gt;
  
  
  :hover
&lt;/h4&gt;

&lt;p&gt;O hover é bem conhecido e tem como finalidade alterar o estilo de algum elemento quando o mouse passa por cima dele. Por exemplo, queremos o texto dos links mude pra azul quando passamos o mouse por cima, pra isso podemos utilizar o &lt;em&gt;:hover&lt;/em&gt;. O hover pode ser utilizado com qualquer elemento HTML.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  :active
&lt;/h4&gt;

&lt;p&gt;Essa pseudo-classe modifica o estilo de links que estão ativos, ou seja, que acabaram de ser clicados. &lt;strong&gt;Atenção: o :active só funciona para links!&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="nd"&gt;:active&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  :checked
&lt;/h4&gt;

&lt;p&gt;O checked funciona somente para inputs dos tipos checkbox ou radio. Essa pseudo-classe modifica o estilo quando o input foi selecionado (checked) pelo usuário.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"checkbox"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"checkbox"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"checkbox"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"checkbox"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Eu amo morangos Toyonoka!&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;input&lt;/span&gt;&lt;span class="nd"&gt;:checked&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="nt"&gt;label&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;green&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;No exemplo, modificamos a cor de fundo da label mais próxima quando o input foi selecionado.&lt;/p&gt;

&lt;h4&gt;
  
  
  :required
&lt;/h4&gt;

&lt;p&gt;O required pode ser utilizado em qualquer elemento parte de um form/formulário, como inputs, selects e textareas. Ele modifica o estilo somente dos campos que não podem estar vazios para a submissão válida do formulário.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Name"&lt;/span&gt; &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;input&lt;/span&gt;&lt;span class="nd"&gt;:required&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;As próximas pseudo-classes podem ser utilizadas somente em alguns elementos, segundo a &lt;a href="https://www.w3.org/TR/html50/disabled-elements.html"&gt;W3C&lt;/a&gt;, eles são:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;button&lt;/li&gt;
&lt;li&gt;input&lt;/li&gt;
&lt;li&gt;select&lt;/li&gt;
&lt;li&gt;textarea&lt;/li&gt;
&lt;li&gt;optgroup&lt;/li&gt;
&lt;li&gt;option&lt;/li&gt;
&lt;li&gt;fieldset&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  :focus
&lt;/h4&gt;

&lt;p&gt;O focus modifica o estilo de um elemento que está em foco, alguns exemplos são quando navegamos em um site usando a tecla &lt;em&gt;tab&lt;/em&gt; no lugar do mouse, ou quando selecionamos um input para preencher um formulário. Através dessa pseudo-classe podemos indicar qual elemento de uma navegação ou de um formulário possuem o foco do mouse/teclado. Por questões de acessibilidade, é importante &lt;strong&gt;sempre&lt;/strong&gt; utilizar essa pseudo-classe para estilizar os elementos que estão em foco.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&amp;gt;&lt;/span&gt;Meu botão&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="nd"&gt;:focus&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;purple&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  :disabled
&lt;/h4&gt;

&lt;p&gt;O disabled modifica o estilo de um elemento que está desabilitada no HTML. Para um elemento estar desabilitado é necessário utilizar o atributo &lt;em&gt;disabled&lt;/em&gt; em HTML.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;disabled&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Meu botão&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="nd"&gt;:disabled&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;gray&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Pseudo-classes estruturais
&lt;/h3&gt;

&lt;p&gt;Vou ser bem sincera, essas pseudo-classes tem meu coração e foram a principal motivação para escrever esse texto ❤️. Acredito que essas pseudo-classes tem um grande potencial de melhorar e simplificar a vida de nós, pessoas desenvolvedoras de CSS. Várias delas não são tão conhecidas ou nós esquecemos de utilizá-las em nossa rotina de trabalho.&lt;/p&gt;

&lt;p&gt;As pseudo-classes estruturais modificam o estilo de acordo com a quantidade de elementos HTML similares na página ou de acordo com o conteúdo do HTML. Alguns exemplos são:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:first-child&lt;/span&gt;
&lt;span class="nd"&gt;:first-of-type&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="nd"&gt;:last-child&lt;/span&gt;
&lt;span class="nd"&gt;:last-of-type&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="nd"&gt;:only-child&lt;/span&gt;
&lt;span class="nd"&gt;:only-of-type&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="nd"&gt;:nth-of-type&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="nd"&gt;:nth-last-child&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="nd"&gt;:nth-last-of-type&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Nas próximas seções, vamos discutir as diferenças entre as pseudo-classes que terminam com &lt;em&gt;-of-type&lt;/em&gt; e as &lt;em&gt;-child&lt;/em&gt;. Em resumo, pensando que queremos selecionar elementos filhos de uma &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;, as pseudo-classes terminadas em &lt;em&gt;-of-type&lt;/em&gt; consideram &lt;strong&gt;elementos HTML iguais, do mesmo "tipo"&lt;/strong&gt;, como um conjunto de &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;. Já as terminadas em &lt;em&gt;-child&lt;/em&gt; &lt;strong&gt;não levam o "tipo" do elemento HTML em consideração&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pseudo-classes :first-child e :first-of-type
&lt;/h4&gt;

&lt;p&gt;As duas pseudo-classes &lt;em&gt;:first-&lt;/em&gt; modificam o primeiro elemento com alguma condição, e apesar se serem parecidas, tem uma grande diferença. Vamos ao exemplo:&lt;/p&gt;

&lt;p&gt;Temos o elemento pai &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; com elementos filhos &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; e &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Meus Gatos&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Mila tem 7 anos e é laranja e branca.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Frederico também tem 7 anos e é meio siamês.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Jade possivelmente tem 5 anos, é preta com olhos verdes.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;E o seguinte CSS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="nd"&gt;:first-child&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;orange&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;E agora? Quem vai ficar com texto laranja?!? 🍊&lt;/p&gt;

&lt;p&gt;Nesse caso, o &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; "Meus Gatos" vai ficar com texto laranja. Isso acontece pois o &lt;em&gt;:first-child&lt;/em&gt; vai selecionar &lt;strong&gt;o primeiro filho&lt;/strong&gt; do elemento pai (&lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt;).&lt;br&gt;
Pensando na lógica de programação normal, seria como se tivessemos um &lt;em&gt;while&lt;/em&gt; percorrendo os filhos do &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; e o elemento na posição zero seria selecionado, independente de qual elemento HTML ele é. &lt;/p&gt;

&lt;p&gt;Mas e se a gente usasse o seguinte CSS? O que acontece?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="nd"&gt;:first-child&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;orange&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Agora &lt;strong&gt;nenhum elemento vai ter texto laranja&lt;/strong&gt;! Como no CSS do exemplo nós usamos &lt;em&gt;p:first-child&lt;/em&gt; e o primeiro filho do &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; não é um &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;, nada acontece. Voltando pra comparação com a lógica de programação, é como se antes de selecionar o valor com index 0 no &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; (que é o &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;) teriámos que ver se o seu tipo é igual o do seletor CSS (que é &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;). Somente se os dois fossem iguais alguma ação aconteceria.&lt;/p&gt;

&lt;p&gt;Por outro lado, se estivessemos usando &lt;em&gt;:first-of-type&lt;/em&gt;, seria o primeiro &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;, com o texto "Mila tem 7 anos..." que ficaria com o texto azul. O &lt;em&gt;:first-of-type&lt;/em&gt; vai selecionar o &lt;strong&gt;primeiro elemento que é um &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;&lt;/strong&gt;, logo, o texto sobre a Mila.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="nd"&gt;:first-of-type&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Pseudo-classes :last-child e :last-of-type
&lt;/h4&gt;

&lt;p&gt;Essas pseudo-classes são quase idênticas as &lt;em&gt;:first-child&lt;/em&gt; e &lt;em&gt;:first-of-type&lt;/em&gt;. A única diferença é que elas selecionam os últimos elementos do pai e não os primeiros.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pseudo-classes :only-child e :only-of-type
&lt;/h4&gt;

&lt;p&gt;Essas pseudo-classes também são parecidas com as anteriores, mas selecionam somente elementos que são filhos únicos. Acho que aqui podem ocorrer dúvidas, então vamos a outro exemplo para deixar claro a diferença entre &lt;em&gt;:only-child&lt;/em&gt; e &lt;em&gt;:only-of-type&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Meus Gatos&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Mila tem 7 anos e é laranja e branca.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Frederico também tem 7 anos e é meio siamês.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Jade possivelmente tem 5 anos, é preta com olhos verdes.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Observando o HTML podemos concluir que temos vários &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;, e logo, eles não são filhos únicos. Mas temos somente um &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;, que é o filho único desse tipo de elemento HTML. Agora abstraindo um pouco, vamos imaginar que você tem filhos pets, três gatos e uma cachorra. Todos eles são irmãos entre si, mas a cachorra não tem irmãos do "tipo" dela, que é cachorro. O &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; do exemplo anterior é como se fosse a cachorra 🐶.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="nd"&gt;:only-child&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;orange&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Ao usar o &lt;em&gt;:only-child&lt;/em&gt; &lt;strong&gt;nenhum&lt;/strong&gt; elemento vai ter texto laranja, já que todos eles tem algum irmão. Mas se usarmos &lt;em&gt;:only-of-type&lt;/em&gt; no lugar, o &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; terá texto azul, já que ele é o único irmão que é o elemento HTML &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="nd"&gt;:only-of-type&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;azul&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Pseudo-classes :nth-child e :nth-of-type
&lt;/h4&gt;

&lt;p&gt;Essas pseudo-classes possuem um parâmetro que pode ter vários formatos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;um número, como 2, 3, ou 5, que selecionará o elemento irmão na posição 2, 3, ou 5. &lt;/li&gt;
&lt;li&gt;uma função (&lt;em&gt;não vou entrar em detalhe sobre as funções nesse artigo, mas quem sabe em breve faço outro falando só sobre elas&lt;/em&gt; 💁🏻‍♀️)&lt;/li&gt;
&lt;li&gt;a palavra odd(ímpar) ou even(par)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pensando na lógica de programação tradicional o parâmetro dessas pseudo-classes nada mais é do que uma condição, um "if". Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Meus Gatos&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Mila tem 7 anos e é laranja e branca.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Frederico também tem 7 anos e é meio siamês.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Jade possivelmente tem 5 anos, é preta com olhos verdes.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="nd"&gt;:nth-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;orange&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Parecido com o exemplo anterior de &lt;em&gt;:first-child&lt;/em&gt; né?&lt;br&gt;
No exemplo acima o parâmetro que eu usei foi o &lt;em&gt;2n&lt;/em&gt;, que vai selecionar todos os elementos múltiplos de dois. Ou seja, vai começar pelo segundo elemento, depois pro quarto, sexto.. e assim por diante.&lt;br&gt;
No exemplo eu usei a pseudo-classe &lt;em&gt;:nth-child&lt;/em&gt;, que como no exemplo anterior da &lt;em&gt;:first-child&lt;/em&gt;, vai selecionar o segundo filho do elemento &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; &lt;strong&gt;independente&lt;/strong&gt; de qual elemento HTML ele for, que nesse caso é o &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; com o texto "Mila tem 7 anos..." e depois o &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; com o texto "Jade possivelmente..."&lt;/p&gt;

&lt;p&gt;Se a gente trocar o CSS por:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="nd"&gt;:nth-of-type&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Quem ficará com o texto azul será o segundo &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;, que tem o texto "Frederico também tem 7 anos...". O &lt;em&gt;:nth-of-type(2n)&lt;/em&gt; irá começar a selecionar a partir do &lt;strong&gt;segundo &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; que é filho do elemento &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt;&lt;/strong&gt;. Caso tivessemos mais um &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; após o texto da Jade, ele também estaria laranja.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pseudo-classes :nth-last-child() e :nth-last-of-type()
&lt;/h4&gt;

&lt;p&gt;O nome dessas pseudo-classes soa bem confuso pra mim, mas não é pra ter medo! Elas são uma mistura de algumas das pseudo-classes que acabamos de aprender. A &lt;em&gt;:nth-last-child&lt;/em&gt; e a &lt;em&gt;:nth-last-of-type&lt;/em&gt; são &lt;strong&gt;muito&lt;/strong&gt; parecidas com as &lt;em&gt;:nth-child()&lt;/em&gt; e &lt;em&gt;:nth-of-type()&lt;/em&gt;. A única diferença que que elas funcionam de baixo para cima em vez de cima para baixo. Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Meus Gatos&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Mila tem 7 anos e é laranja e branca.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Frederico também tem 7 anos e é meio siamês.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Jade possivelmente tem 5 anos, é preta com olhos verdes.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="nd"&gt;:nth-last-child&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;orange&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Dessa vez vamos pensar de baixo pra cima, começando com o último parágrafo "Jade possivelmente...", todos os filhos de &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; múltiplos de 2, independente do tipo de elemento HTML, vão ficar com o texto laranja devido ao &lt;em&gt;:nth-last-child&lt;/em&gt;. Isso significa que o parágrafo do Frederico e o &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; teriam texto laranja. Ah, importante, nesse caso e em todos os outros que usamos alguma &lt;em&gt;:nth-&lt;/em&gt; pseudo-classe o primeiro filho é sempre 1 e não 0.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="nd"&gt;:nth-of-type&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="nt"&gt;n&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Já o &lt;em&gt;:nth-of-type&lt;/em&gt; vai deixar todos os filhos de &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; múltiplos de 2 &lt;strong&gt;e&lt;/strong&gt; do mesmo tipo de elemento HTML com texto azul. O que significa que o parágrafo do Frederico seria o único afetado.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Pseudo-classes relacionais
&lt;/h3&gt;

&lt;p&gt;Essas pseudo-classes não são tão populares quanto as anteriores, mas são muito úteis no dia-a-dia. Elas são:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="nd"&gt;:empty&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  :not
&lt;/h4&gt;

&lt;p&gt;A pseudo-class &lt;em&gt;:not&lt;/em&gt; é exatamente aquilo imaginamos pelo seu nome, ela seleciona todos os elementos, menos aqueles que forem passados como parâmetro. Pensando em lógica de programação, é basicamente um else no seletor.&lt;br&gt;
Por exemplo, queremos que a fonte do texto dentro de &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; seja 1rem, mas não queremos que o &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; seja modificado. Para isso, podemos usar a pseudo-classe &lt;em&gt;:not&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Meus Gatos&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Mila tem 7 anos e é laranja e branca.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Frederico também tem 7 anos e é meio siamês.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Jade possivelmente tem 5 anos, é preta com olhos verdes.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Agora vamos imaginar que queremos que todos os &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; dentro de &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; sejam azuis, menos o último.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:last-of-type&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Essa pseudo-classe pode ser usada em combinação com outras. Como no exemplo acima, onde misturamos as pseudo-classes &lt;em&gt;:not&lt;/em&gt; e &lt;em&gt;:last-of-type&lt;/em&gt;. Não precisa ter medo de misturar!&lt;/p&gt;

&lt;p&gt;Eu acho isso bem legal e meio louco, mas é muito útil 😍&lt;br&gt;
Algo importante de se notar é que &lt;strong&gt;não podemos usar &lt;em&gt;:not&lt;/em&gt; dentro dela mesma&lt;/strong&gt;, algo como&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;main&lt;/span&gt; &lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:not&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;:last-of-type&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Não&lt;/strong&gt; é válido! E também não conseguimos usar com os pseudo-seletores &lt;em&gt;:after&lt;/em&gt; e &lt;em&gt;:before&lt;/em&gt; (que merecem outro texto só deles!).&lt;/p&gt;

&lt;h4&gt;
  
  
  :empty
&lt;/h4&gt;

&lt;p&gt;A pseudo-classe &lt;em&gt;:empty&lt;/em&gt; lembra um pouco o funcionamento da &lt;em&gt;:not&lt;/em&gt;. Sou uma grande fã da &lt;em&gt;:empty&lt;/em&gt;! No meu caso específico eu estava trabalhando numa empresa que usava um tema do Hugo, onde eu escrevo o conteúdo em markdown e o Hugo transforma em HTML. Nosso tema ainda estava em desenvolvimento e as vezes elementos vazios de paragráfo eram gerados. Esses &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; vazios ainda estavam estilizados com margem, o que gerava espaço em branco que atrapalhava o design dos sites. Ao adicionar&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="nd"&gt;:empty&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Consegui resolver o problema visual desses &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; vazios enquanto o tema ainda era ajustado.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Pseudo-classes textuais
&lt;/h3&gt;

&lt;p&gt;Essas são as pseudo-classes que eu menos uso, tanto no trabalho quando em projetos pessoais. Mas isso não quer dizer que elas não são importantes 😎.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pseudo-classe :first-letter
&lt;/h4&gt;

&lt;p&gt;Essa pseudo-classe é exatamente o que ela parece, ela muda o estilo da primeira letra de um elemento HTML.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Meus Gatos&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Mila tem 7 anos e é laranja e branca.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Frederico também tem 7 anos e é meio siamês.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Jade possivelmente tem 5 anos, é preta com olhos verdes.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="nd"&gt;:first-letter&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Pseudo-classe :first-line
&lt;/h4&gt;

&lt;p&gt;Parecida com a anterior, a &lt;em&gt;:first-line:&lt;/em&gt; modifica somente a primeira linha do elemento HTML.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Meus Gatos&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Mila tem 7 anos e é laranja e branca. Frederico também tem 7 anos e é meio siamês. Jade possivelmente tem 5 anos, é preta com olhos verdes.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="nd"&gt;:first-line&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;No caso do exemplo anterior, somente a primeira linha será vermelha. O mais legal dessa pseudo-classe é que a primeira linha nunca é um valor fixado. Se você modificar o tamanho da tela, seja no navegador ou entrando pelo seu celular, você vai ver que o conteúdo da primeira linha vai mudar, mas o estilo &lt;em&gt;sempre&lt;/em&gt; será aplicado somente na primeira linha. Tá vendo só? Por isso eu amo CSS 💖.&lt;/p&gt;

&lt;h4&gt;
  
  
  Pseudo-classe :lang
&lt;/h4&gt;

&lt;p&gt;O que dizer dessa pseudo-classe que eu mal conheço mas admiro muito? Eu nunca usei essa pseudo-classe, mas desde o primeiro momento em que conheci ela achei super incrível. A &lt;em&gt;:lang&lt;/em&gt; seleciona elementos HTML que possuem esse atributo, que é responsável por indicar em qual idioma está o conteúdo HTML. Vamos a um exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;main&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Meus Gatos&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"pt"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Mila tem 7 anos e é laranja e branca. Frederico também tem 7 anos e é meio siamês. Jade possivelmente tem 5 anos, é preta com olhos verdes.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Mila is 7 years old and is orange and white. Frederico is also 7 years old and is kind of siamese. Jade possibly has 5 years old, is black and has green eyes.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:lang&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;pt&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nd"&gt;:lang&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;en&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;No exemplo acima, o parágrafo em português será vermelho e o em inglês será azul. Achei isso bem legal 🎉.&lt;/p&gt;

&lt;p&gt;Além disso, essa pseudo-classe é aplicada a &lt;strong&gt;todos os elementos filhos de um elemento HTML com atributo lang&lt;/strong&gt;. No exemplo abaixo, o &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; teria texto vermelho mesmo sem um atributo &lt;em&gt;lang&lt;/em&gt; explícito. Como &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; tem o atributo &lt;em&gt;lang&lt;/em&gt;, os filhos vão receber o estilo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;main&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"pt"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Meus Gatos&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Mila tem 7 anos e é laranja e branca. Frederico também tem 7 anos e é meio siamês. Jade possivelmente tem 5 anos, é preta com olhos verdes.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/main&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:lang&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;pt&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  E agora?
&lt;/h2&gt;

&lt;p&gt;Legal, agora a gente já falou de todas as principais pseudo-classes e alguns exemplos de uso. Talvez você esteja pensando "eu acho que entendi, mas gostaria de treinar um pouco o uso delas". Talvez não, mas separei aqui algumas dicas de como treinar o uso dessas classes de uma forma divertida:&lt;/p&gt;

&lt;h3&gt;
  
  
  Fazer um desenho em CSS.
&lt;/h3&gt;

&lt;p&gt;Chegamos a questão que eu adoro perguntar pras pessoas "Você já fez um desenho com CSS??". Se já, fico feliz que você sabe do que eu estou falando 🙌🏼, que tal criar outro e tentar adicionar várias pseudo-classes?&lt;br&gt;
Senão, &lt;a href="https://dev.to/giuliacardieri/desenhos-em-css-na-vida-real-util-ou-so-diversao-4pm"&gt;segue aqui um tutorial que eu elaborei e pode ser útil&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Lembrando que desenhos em CSS são algo útil para praticar habilidades específicas de CSS, como o uso de pseudo-classes ou de CSS grid. Só fazer desenhos em CSS não garante que você conseguirá fazer uma aplicação real usando boas práticas, afinal um desenho tem preocupações diferentes de uma aplicação. Por isso eu também recomendo que você pratique fazendo um projeto pessoal (ou algum projeto teste de alguma empresa).&lt;/p&gt;

&lt;h3&gt;
  
  
  Projeto pessoal
&lt;/h3&gt;

&lt;p&gt;Um projeto pessoal não precisa ser algo super complexo ou com um objetivo sério como muita gente acredita. Eu sou uma grande fã de projetos que parecem bobos mas adicionam conhecimento. Já pensou em criar um site pro seu Gato? Ou criar um desenho em CSS e imaginar um site a partir dele? &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Fazendo uma propaganda&lt;/em&gt;: logo que eu estava começando eu criei um site chamado &lt;a href="https://dinokiki.com"&gt;Dinokiki&lt;/a&gt; (cuidado que faz barulho) ele é só um site de um dinossauro que grita "kiki" em diferentes vozes quando é clicado. É útil pra uma empresa? Não. Foi útil pra mim? Muito.&lt;br&gt;
Um projeto pessoal é uma ótima forma de aplicar boas práticas e estudar novas tecnologias, além de complementar seu portfolio!&lt;/p&gt;

&lt;p&gt;Espero que esse artigo tenha ajudado você a entender um pouco mais sobre pseudo-classes em CSS. É um dos meus primeiros artigos. Estou aberta a feedbacks construtivos, se você tem algum por favor me manda um oi aqui, no twitter ou por email.&lt;/p&gt;

&lt;p&gt;Até a próxima!&lt;/p&gt;

</description>
      <category>css</category>
      <category>frontend</category>
      <category>webdev</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Desenhos em CSS na vida real: útil ou só diversão? </title>
      <dc:creator>Giulia Cardieri</dc:creator>
      <pubDate>Tue, 17 Dec 2019 00:52:24 +0000</pubDate>
      <link>https://dev.to/giuliacardieri/desenhos-em-css-na-vida-real-util-ou-so-diversao-4pm</link>
      <guid>https://dev.to/giuliacardieri/desenhos-em-css-na-vida-real-util-ou-so-diversao-4pm</guid>
      <description>&lt;p&gt;&lt;strong&gt;Resumo&lt;/strong&gt;: Vamos falar sobre desenhos em CSS e o que a gente realmente pode aprender com eles e levar pra nossa carreira.&lt;/p&gt;

&lt;p&gt;Oi! Vamos falar sobre CSS criativo?&lt;/p&gt;

&lt;p&gt;Meu nome é Giulia, sou desenvolvedora front-end mas gosto de usar o termo desenvolvedora de UI, pois prefiro trabalhar com HTML e CSS do que JavaScript (o que não significa que eu não gosto de JS) 👋.&lt;/p&gt;

&lt;p&gt;No último ano eu palestrei em alguns lugares falando sobre desenhos em CSS e como eles podem nos ensinar várias coisas. Achei que estava na hora de passar essa palestra para texto. &lt;a href="https://www.youtube.com/watch?v=6o6lgcdrDdU"&gt;Aqui está o vídeo da palestra caso você tenha interesse (em inglês )&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A primeira coisa que você tem que saber ao entrar no mundo dos desenhos em CSS é que&lt;/strong&gt;:&lt;br&gt;
Fazer desenhos em CSS complexos não é um atestado de nível pleno ou sênior em CSS. Só quer dizer que você gosta de explorar o lado criativo do código. Gostaria de deixar isso claro, as coisas que eu falo nesse artigo tem o &lt;em&gt;objetivo de ser uma forma divertida de exercitar e aprender alguns conceitos e olhar pro CSS de outra forma&lt;/em&gt;. Se você está começando, recomendo você também criar um projeto pessoal usando boas práticas de desenvolvimento front-end.&lt;/p&gt;

&lt;p&gt;Agora vamos a parte boa!&lt;/p&gt;
&lt;h2&gt;
  
  
  Você já fez um projeto só por diversão?
&lt;/h2&gt;

&lt;p&gt;Sim, qualquer projeto, grande ou pequeno, CSS, JS ou Python, algo que você falou &lt;em&gt;"vou fazer só pq me deu vontade?"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Nem sempre temos tempo pra projetos nossos nesse mundo de 40hrs/semana, família, casa e roupa pra lavar e gato pra alimentar. Mas as vezes a gente tem, as vezes a gente fica com vontade, e o que eu vou falar é uma sugestão pra usar nesses momentos "&lt;em&gt;as vezes&lt;/em&gt;". &lt;/p&gt;

&lt;p&gt;Comecei a aprender sobre desenvolvimento web no segundo ano da faculdade, e no terceiro eu estava planejando arrumar um estágio. Mas como arrumar um estágio se eu não tinha um portfolio? Isso me deu a ideia de fazer um site pessoal e colocar alguma coisa lá. Dessa ideia de colocar alguma coisa no meu portfolio nasceu meu mascote, o &lt;a href="https://dinokiki.com"&gt;Dinokiki&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HrKNcN8---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/j1l1z39knzq2bcdsrogm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HrKNcN8---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/j1l1z39knzq2bcdsrogm.png" alt="Site do Dinokiki"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O site nasceu em 2014 com objetivo de me ajudar a conseguir um estágio e aprender jQuery (o React do momento). A ideia nasceu de um &lt;a href="http://www.vineactivity.com/mama-dinosaur-finds-her-baby-nicholas-megalis/"&gt;Vine do Jerome Jarre chamado "Mama Dinosaur finds her baby"&lt;/a&gt;, em que dois caras gritavam kiki no meio do rua imitando dinossauros, e do &lt;a href="http://www.plspetdoge.com/"&gt;site Pls Pet Doge&lt;/a&gt;, que ainda é bem divertido.&lt;/p&gt;

&lt;p&gt;Criar o Dinokiki foi uma experiência muito boa já que o site não tem uma utilidade pro mundo além de ser divertido. Preciso admitir, ele foi muito útil na minha busca por estágio e para aprender novas tecnologias. Ainda hoje eu atualizo ele de vez em quando com um novo stack ou melhorias.&lt;/p&gt;

&lt;p&gt;Com isso em mente, vamos pisar em território CSS. Se você nunca viu um desenho em CSS, aqui tem alguns exemplos:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/giuliacardieri/embed/EypPdg?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/marcindotka/embed/GrrKYE?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Se esses desenhos são simples demais pra você, recomendo dar uma olhada &lt;a href="https://diana-adrianne.com/purecss-francine/"&gt;nesse desenho da Diana Adrianne&lt;/a&gt;. Depois você me conta se acha que ela não aprendeu nada útil fazendo essa obra de arte em código 😉.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pesquisa sobre desenhos em CSS
&lt;/h2&gt;

&lt;p&gt;Comecei a fazer desenhos em CSS em 2016 no Codepen, em 2017 desenhos em CSS começaram a ficar mais populares pela internet. Em 2018, eu ainda tinha a impressão que muita gente achava isso bonitinho porém inútil, e decidi fazer uma pesquisa informal pra entender o que as pessoas desenvolvedoras achavam sobre o tema. Os resultados foram interessantes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pergunta 1: Você já ouviu falar sobre desenhos e/ou jogos em CSS?&lt;/strong&gt;&lt;br&gt;
77% Sim 😍&lt;br&gt;
23% Não&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pergunta 2: Você já fez um desenho com CSS?&lt;/strong&gt;&lt;br&gt;
23% Sim&lt;br&gt;
&lt;strong&gt;77% NÃO&lt;/strong&gt; 😭&lt;/p&gt;

&lt;p&gt;No final &lt;strong&gt;todas&lt;/strong&gt; as pessoas que já fizeram um desenho com CSS aprenderam alguma coisa como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Praticar criatividade 🎨&lt;/li&gt;
&lt;li&gt;Posicionamento CSS 🧩&lt;/li&gt;
&lt;li&gt;Tags HTML 🔖&lt;/li&gt;
&lt;li&gt;Seletores CSS 👨‍👩‍👧‍👧 👨‍👨‍👦‍👦 👩‍👩‍👧‍👦&lt;/li&gt;
&lt;li&gt;Pseudo-elementos e pseudo-classes 👻&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Isso já foi motivação o suficiente pra me dar vontade de espalhar a palavra dos desenhos em CSS!&lt;/p&gt;

&lt;p&gt;Além disso, esses resultados me levaram a pensar que muita gente sabe o que são desenhos em CSS, mas não tem vontade de fazer. E os que fizeram aprenderam pelo menos alguma coisa relevante. Imagino que muita gente não deve entrar no mundo dos desenhos em CSS por motivos como:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Motivo 1&lt;/strong&gt;: &lt;em&gt;"Pra que perder meu tempo desenhando em CSS se isso é inútil pra minha carreira?"&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Motivo 2&lt;/strong&gt;: &lt;em&gt;"Você precisa ser uma pessoa super criativa pra desenhar em CSS".&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Então, deixa eu contar pra você, não é bem assim 💁🏻‍♀️&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dica: se você está sem ideias, reproduza um desenho que já existe em CSS. Quem sabe algo que você gostava quando era criança ou algo que você gosta hoje.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Como eu começo a desenhar em CSS?
&lt;/h2&gt;

&lt;p&gt;Tá, você acha a ideia de desenhar em CSS legal, já achou algo pra reproduzir, mas está sem saber por onde começar? Calma, pega o caderno com lápis e vamos lá.&lt;/p&gt;

&lt;p&gt;Percebi que ao criar um desenho eu sempre sigo o mesmo ciclo, que tem três fases:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4GiMgHVZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/s1ym0v6okf1qrn4kux23.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4GiMgHVZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/s1ym0v6okf1qrn4kux23.png" alt="Ciclo indicando os três passos que estão escritos abaixo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Passo 1 - 🔨 Separar o desenho em formas geométricas
&lt;/h3&gt;

&lt;p&gt;Essa parte eu costumo separar o desenho em formas geométricas simples que podem ser reproduzidas em CSS, como círculos, quadrados, trapézios, triângulos e retângulos. É legal fazer isso no papel, mesmo que alguns rabiscos, pra ajudar a entender como vai ser a estrutura em HTML do seu desenho.&lt;/p&gt;
&lt;h3&gt;
  
  
  Passo 2 - 🧩 Usar HTML para representar cada pedaço do desenho
&lt;/h3&gt;

&lt;p&gt;A estrutura do desenho será feita com HTML, nessa parte eu costumo criar divs com uma classe em CSS representando o pedaço, como&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"olho"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;ou&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"cabeca"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Passo 3 - 👩‍🎨 Usar CSS para estilizar cada pedaço
&lt;/h3&gt;

&lt;p&gt;Uhuuul! Chegamos na última, mais legal, e mais longa parte! É aqui que nosso desenho vai nascer. Vamos estilizar cada pedaço de forma manual, imaginando ou olhando o resultado final que queremos atingir.&lt;/p&gt;

&lt;p&gt;Aqui está o exemplo de um desenho em CSS do meu dinossauro, o Dinokiki. Você pode editar no CodePen:&lt;br&gt;
&lt;iframe height="600" src="https://codepen.io/giuliacardieri/embed/gObLopr?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h4&gt;
  
  
  Passo 1 - 🔨 Separar o desenho em formas geométricas
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4RuLBzPx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imgur.com/BWPwycM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4RuLBzPx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imgur.com/BWPwycM.png" alt="Passo 1 - Separar o desenho em formas geométricas"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Passo 2 - 🧩 Usar HTML para representar cada pedaço do desenho
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--o__mzbOE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imgur.com/BMLWdsf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o__mzbOE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imgur.com/BMLWdsf.png" alt="Passo 2 - Usar HTML para representar cada pedaço do desenho"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"corpo"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  Passo 3 - 👩‍🎨 Usar CSS para estilizar cada pedaço
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9wVTZIX2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imgur.com/JIZBsLf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9wVTZIX2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://imgur.com/JIZBsLf.png" alt="Passo 3 - Usar CSS para estilizar cada pedaço"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.corpo&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--dino&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;90%&lt;/span&gt; &lt;span class="m"&gt;80%&lt;/span&gt; &lt;span class="m"&gt;8%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.corpo&lt;/span&gt;&lt;span class="nd"&gt;:after&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--dino&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-100px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;90px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;65px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;E assim a gente faz um desenho em CSS!&lt;/p&gt;

&lt;p&gt;Gosto muito de exercitar minha criatividade e os meus conhecimentos em CSS dessa forma, já que a gente acaba olhando pro código e para os atributos de uma forma diferente. Pretendo falar mais sobre isso no próximo artigo, sobre Jogos em CSS, que vai estar disponível em breve.&lt;/p&gt;

&lt;p&gt;Se você quer conversar mais sobre esse assunto, achou algum erro, tem algum feedback construtivo, por favor, me manda um Oi no Twitter 😊&lt;/p&gt;

&lt;p&gt;Obrigada por ler até aqui e até a próxima,&lt;/p&gt;

&lt;p&gt;Giulia&lt;/p&gt;

</description>
      <category>creativity</category>
      <category>drawings</category>
      <category>braziliandevs</category>
      <category>css</category>
    </item>
  </channel>
</rss>
