<?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: Yasmim Vieira</title>
    <description>The latest articles on DEV Community by Yasmim Vieira (@yasmimvieira).</description>
    <link>https://dev.to/yasmimvieira</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%2F549068%2Fddfb1187-8f00-45a0-aab1-d52c9406ed88.jpeg</url>
      <title>DEV Community: Yasmim Vieira</title>
      <link>https://dev.to/yasmimvieira</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yasmimvieira"/>
    <language>en</language>
    <item>
      <title>Novas funcionalidades do CSS (:is() e :where())</title>
      <dc:creator>Yasmim Vieira</dc:creator>
      <pubDate>Sun, 25 Apr 2021 11:44:26 +0000</pubDate>
      <link>https://dev.to/yasmimvieira/novas-funcionalidades-do-css-is-e-where-1581</link>
      <guid>https://dev.to/yasmimvieira/novas-funcionalidades-do-css-is-e-where-1581</guid>
      <description>&lt;p&gt;Recentemente chegou novas funcionalidades no CSS que facilitam demais a automatizar quando queremos selecionar listas de seletores para usar pseudo-classes em algum elemento. Portanto, hoje veremos sobre as funções :is() e :where(), o que elas são, como usar, principais características e compatibilidades.&lt;/p&gt;

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

&lt;p&gt;Antes de mais nada, vamos deixar claro o que são pseudo-classe. Então, pseudo-classe é uma palavra-chave do CSS que colocamos em seletores para alterar o estado inicial dele, por exemplo: o :hover é usado para alterar o estado de um elemento quando o mouse passa em cima dele.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/yasmimvieira/embed/oNBmyMG?height=600&amp;amp;default-tab=js,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Existem vários outros pseudo-classes, mas hoje iremos abordar dois em específico.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é :is() e :where()?
&lt;/h2&gt;

&lt;p&gt;:is() e :where() são funções pseudo-classes do CSS que nos possibilita colocar como argumento uma lista de seletores, sendo assim selecionamos tudo de uma vez só. Assim, o código fica muito mais limpo e fácil de manusear.&lt;/p&gt;

&lt;p&gt;Elas são muito semelhantes e simples de usar, então agora vamos pensar em como coloríamos um hover em uma tag &lt;strong&gt;p&lt;/strong&gt; que está em vários seletores diferentes, seria algo parecido com isso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;header p:hover,
main p:hover,
footer p:hover {
  color: red;
  cursor: pointer;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A problemática de fazer dessa forma, é que estamos repetindo várias vezes a mesma coisa e o que essas novas funções fazem é deixar esse código mais enxuto, simples e limpo, pois com elas podemos selecionar vários seletores de uma só vez e fazer o hover. &lt;/p&gt;

&lt;h6&gt;
  
  
  Exemplo de :is() e :where()
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:is(header, main, footer) p:hover {
   color: red;
   cursor: pointer;
}

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

&lt;/div&gt;








&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:where(header, main, footer) p:hover {
   color: red;
   cursor: pointer;
}

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

&lt;/div&gt;



&lt;p&gt;Ou seja, dessa forma juntamos todos os seletores em um lugar e conseguimos colocar o hover no &lt;strong&gt;p&lt;/strong&gt;, sem precisar repetir.&lt;br&gt;
Mas aparentemente eles não tem nada de diferente certo? &lt;strong&gt;Errado&lt;/strong&gt;, a principal diferença entre os dois é a &lt;strong&gt;especificidade&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Especificidade é quando os navegadores definem os valores que são mais relevantes naquele contexto, ou seja, quando um item tem maior especificidade ele se sobrepõe ao que tem menor prioridade.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nesse caso, o :is() tem maior especificidade, enquanto o :where() tem 0, então quando utilizarmos os dois juntos, o :is() vai sobrepor o :where() quando estivermos indicando valores iguais. &lt;/p&gt;
&lt;h6&gt;
  
  
  Por exemplo
&lt;/h6&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/yasmimvieira/embed/KKaJRvo?height=600&amp;amp;default-tab=js,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Perceba, que a cor que prevalece é o azul já que o :is() tem maior relevância.&lt;/p&gt;

&lt;h2&gt;
  
  
  Forgiving Selector Parsing
&lt;/h2&gt;

&lt;p&gt;Essas funções também aceitam o termo: &lt;strong&gt;Forgiving Selector Parsing&lt;/strong&gt; ou &lt;strong&gt;&lt;em&gt;"Esquecer o seletor"&lt;/em&gt;&lt;/strong&gt;. Esse conceito basicamente produz o efeito de passar por cada seletor analisando todos eles e verificando se são válidos ou não. Mas, invés de dar erro, ele simplesmente ignora aqueles que são inválidos e segue o jogo com os seletores válidos.&lt;/p&gt;

&lt;h6&gt;
  
  
  Exemplos
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:is(header, footer, main, :selector) p: hover {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nesse caso, eu estou colocando como um "seletor" uma pseudo-classe, então ele é um seletor inválido, mas ele não estoura nenhum erro, apenas segue e prioriza os seletores válidos:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/yasmimvieira/embed/WNRPyxY?height=600&amp;amp;default-tab=js,result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Compatibilidade nos browsers
&lt;/h2&gt;

&lt;p&gt;Por serem funcionalidades novas a compatibilidade é consideravelmente baixa em alguns browsers, porém pode ser interessante começar a usa-las caso isso não prejudique a usabilidade do seu software. Abaixo está uma tabela das duas funções e suas aceitações nos navegadores:&lt;/p&gt;

&lt;h6&gt;
  
  
  :is()
&lt;/h6&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1H-REM_b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/93squq2ps3cnsdleb1q6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1H-REM_b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/93squq2ps3cnsdleb1q6.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  :where()
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_B2o1vU5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/05hj1bu3di9zfeoj9r0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_B2o1vU5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/05hj1bu3di9zfeoj9r0j.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Agradecimento
&lt;/h2&gt;

&lt;p&gt;Por hoje é só galera, espero que tenham gostado, esse post é de uma série que estou iniciando, onde vou postar dicas de css.&lt;br&gt;
Espero que tenham gostado e muito obrigada pela leitura!&lt;/p&gt;

&lt;h1&gt;
  
  
  Gostou do post?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Deixe seu like&lt;/li&gt;
&lt;li&gt;Deixe seu feedback e sugestões&lt;/li&gt;
&lt;li&gt;Compartilhe com seus amigos&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Você também pode me acompanhar em:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://yasmimv.medium.com/"&gt;Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/yasmim-barbosa/"&gt;Linkedin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/YasmimVieira"&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.behance.net/yasmimvieira3"&gt;Behance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>html</category>
      <category>css</category>
      <category>webdev</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
