<?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: Leandro Cavalcante</title>
    <description>The latest articles on DEV Community by Leandro Cavalcante (@leandrocrs).</description>
    <link>https://dev.to/leandrocrs</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%2F39297%2F5d69f7ae-0e01-41c3-aa9f-a2e0d72ebed0.png</url>
      <title>DEV Community: Leandro Cavalcante</title>
      <link>https://dev.to/leandrocrs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leandrocrs"/>
    <language>en</language>
    <item>
      <title>Setting Visual Studio Code as your git merge and diff tool</title>
      <dc:creator>Leandro Cavalcante</dc:creator>
      <pubDate>Tue, 06 Sep 2022 13:00:48 +0000</pubDate>
      <link>https://dev.to/leandrocrs/setting-visual-studio-code-as-your-git-merge-and-diff-tool-5a9p</link>
      <guid>https://dev.to/leandrocrs/setting-visual-studio-code-as-your-git-merge-and-diff-tool-5a9p</guid>
      <description>&lt;p&gt;Paste the following lines in your &lt;code&gt;~/.gitconfig&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="c"&gt;# This is Git's per-user configuration file.
&lt;/span&gt;&lt;span class="nn"&gt;[core]&lt;/span&gt;
    &lt;span class="py"&gt;editor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;code --wait&lt;/span&gt;
&lt;span class="nn"&gt;[diff]&lt;/span&gt;
    &lt;span class="py"&gt;tool&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;default-difftool&lt;/span&gt;
&lt;span class="nn"&gt;[difftool "default-difftool"]&lt;/span&gt;
    &lt;span class="py"&gt;cmd&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;code --wait --diff $LOCAL $REMOTE&lt;/span&gt;
&lt;span class="nn"&gt;[merge]&lt;/span&gt;
    &lt;span class="py"&gt;tool&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;default-mergetool&lt;/span&gt;
&lt;span class="nn"&gt;[mergetool "default-mergetool"]&lt;/span&gt;
    &lt;span class="py"&gt;cmd&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;code --wait $MERGED&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Done! Next time you do a &lt;code&gt;git commit&lt;/code&gt; or whatever operation that needs a text editor, Visual Studio Code will be opened as your default editor.&lt;/p&gt;

</description>
      <category>git</category>
      <category>vscode</category>
      <category>merge</category>
      <category>diff</category>
    </item>
    <item>
      <title>Cleaning up all local stale git branches</title>
      <dc:creator>Leandro Cavalcante</dc:creator>
      <pubDate>Wed, 13 Jul 2022 21:15:30 +0000</pubDate>
      <link>https://dev.to/leandrocrs/cleaning-up-all-local-stale-git-branches-1ihm</link>
      <guid>https://dev.to/leandrocrs/cleaning-up-all-local-stale-git-branches-1ihm</guid>
      <description>&lt;p&gt;Sometimes, after some great releases (e some broken ones), it's hard to maintain our repo tidy.&lt;/p&gt;

&lt;p&gt;To help you dealing with the messy you made creating branches e pushing them away, I found a short command line that remove all local branches that were already merged.&lt;/p&gt;

&lt;p&gt;Open your terminal and paste the commando below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git fetch &lt;span class="nt"&gt;--prune&lt;/span&gt; | git branch &lt;span class="nt"&gt;-r&lt;/span&gt; | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{print $1}'&lt;/span&gt; | egrep &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; /dev/fd/0 &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;git branch &lt;span class="nt"&gt;-vv&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;origin&lt;span class="o"&gt;)&lt;/span&gt; | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{print $1}'&lt;/span&gt; | xargs git branch &lt;span class="nt"&gt;-D&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's also available as a Github Gist right here: &lt;a href="https://gist.github.com/leandrocrs/428c956144b2b22738765d77e087a188" rel="noopener noreferrer"&gt;https://gist.github.com/leandrocrs/428c956144b2b22738765d77e087a188&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>git</category>
      <category>bash</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Easily Change Windows CMD,WSL Transparency</title>
      <dc:creator>Leandro Cavalcante</dc:creator>
      <pubDate>Fri, 23 Feb 2018 21:11:00 +0000</pubDate>
      <link>https://dev.to/leandrocrs/easily-change-windows-cmdwsl-transparency-8c7</link>
      <guid>https://dev.to/leandrocrs/easily-change-windows-cmdwsl-transparency-8c7</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbz9q6dpgwty3t9525ln.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbz9q6dpgwty3t9525ln.gif" alt="Window alternating transparency level through a Windows shortcut" width="697" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Smart tip: when using Windows 10 command-line tools such as WSL, Ubuntu, Powershell or even CMD, you can:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CTRL + Shift + Scroll Up/Down = change window transparency level&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>windows</category>
      <category>cmd</category>
      <category>terminal</category>
      <category>keyboard</category>
    </item>
    <item>
      <title>Speeding up WSL I/O up than 5x fast + saving a lot of battery life &amp; CPU usage</title>
      <dc:creator>Leandro Cavalcante</dc:creator>
      <pubDate>Sat, 03 Feb 2018 22:24:42 +0000</pubDate>
      <link>https://dev.to/leandrocrs/speeding-up-wsl-io-up-than-5x-fast--saving-a-lot-of-battery-life--cpu-usage-jfl</link>
      <guid>https://dev.to/leandrocrs/speeding-up-wsl-io-up-than-5x-fast--saving-a-lot-of-battery-life--cpu-usage-jfl</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KoAyq-ok--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/960/1%2A6FyyUhdUkfW77MDfC1BgUA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KoAyq-ok--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/960/1%2A6FyyUhdUkfW77MDfC1BgUA.png" alt=""&gt;&lt;/a&gt;Ubuntu running inside WSL trying to update some packages behind Windows Real-time protection bad guy&lt;/p&gt;

&lt;p&gt;While being helpful detecting some common Windows malwares, in GNU/Linux side it’s so inefficient and actually unhelpful.&lt;/p&gt;

&lt;p&gt;Every time you try to access/read/write some file/folder, Windows Defender intercept WSL requisition for antivirus scanning, slowing down things until you hate everything in WSL!&lt;/p&gt;

&lt;p&gt;So, to do so, first get the UbuntuOnLinux (or your distro of choice) installation path going to &lt;em&gt;%USERPROFILE%\AppData\Local\Packages&lt;/em&gt; and lookup for something like &lt;strong&gt;CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc&lt;/strong&gt; &lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Copy the entire path from Explorer.exe address bar, then go to&lt;/em&gt; Settings &amp;gt; Update &amp;amp; Security &amp;gt; Windows Defender &amp;gt; Open Windows Defender Secutiry Central &amp;gt; Protection Against Viruses &amp;amp; Threats &amp;gt; Advanced Config… &amp;gt; Exclusions &amp;gt; Add or Remove &amp;gt; Add &amp;gt; Folder and finally: paste the previous copied path.&lt;/p&gt;

&lt;h3&gt;
  
  
  Warning: High security sometimes means Low performance
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fq2aXs6O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/618/1%2ACb8wWHPg6h_bgN8P7cnULg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fq2aXs6O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/618/1%2ACb8wWHPg6h_bgN8P7cnULg.jpeg" alt=""&gt;&lt;/a&gt;Windows Defender Real-time slow down… protection&lt;/p&gt;

&lt;p&gt;The tip above may speedup things a little bit, but not so. There is one more thing bringing your performance down: &lt;strong&gt;Window Defender real-time protection&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As noticed by &lt;a href="https://github.com/tanseydavid"&gt;David Tansey&lt;/a&gt; in this &lt;a href="https://github.com/Microsoft/WSL/issues/1932"&gt;WSL issue&lt;/a&gt;, real-time protection have a HUGE impact in developer tools like Visual Studio build tool and tools like Kubernetes and etc., including WSL.&lt;/p&gt;

&lt;p&gt;We will disable it, but be aware: you will may be more vulnerable for some common attacks through malicious script execution.&lt;/p&gt;

&lt;p&gt;So, let’s disable:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cl_IdkLG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Aa-U4iD2KwHC3VXFuNDhTxg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cl_IdkLG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Aa-U4iD2KwHC3VXFuNDhTxg.png" alt=""&gt;&lt;/a&gt;Use Group Policy (gpedit.msc) to disable real-time protection&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Group Policy to disable real-time protection:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;On your Group Policy management machine, open the &lt;a href="https://technet.microsoft.com/library/cc731212.aspx"&gt;Group Policy Management Console&lt;/a&gt;, right-click the Group Policy Object you want to configure and click  &lt;strong&gt;Edit&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the &lt;strong&gt;Group Policy Management Editor&lt;/strong&gt; go to &lt;strong&gt;Computer configuration&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Policies&lt;/strong&gt; then &lt;strong&gt;Administrative templates&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Expand the tree to &lt;strong&gt;Windows components &amp;gt; Windows Defender Antivirus &amp;gt; Real-time protection&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Double-click the &lt;strong&gt;Turn off real-time protection&lt;/strong&gt; setting and set the option to &lt;strong&gt;Enabled&lt;/strong&gt;. Click  &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’ve only tested superficially, but I can ensure a great performance speed up.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclaimer: I have plans to improve my English skill, but my willing to help is bigger than that.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  References:
&lt;/h3&gt;

&lt;p&gt;Configure always-on real-time protection in Windows Defender AV | Microsoft Docs — &lt;a href="https://docs.microsoft.com/en-us/windows/threat-protection/windows-defender-antivirus/configure-real-time-protection-windows-defender-antivirus"&gt;https://docs.microsoft.com/en-us/windows/threat-protection/windows-defender-antivirus/configure-real-time-protection-windows-defender-antivirus&lt;/a&gt;&lt;/p&gt;

</description>
      <category>performance</category>
      <category>webdev</category>
      <category>wsl</category>
      <category>windows10</category>
    </item>
    <item>
      <title>Windows command-line tip: Easily Change Window Transparency</title>
      <dc:creator>Leandro Cavalcante</dc:creator>
      <pubDate>Sun, 22 Oct 2017 02:27:19 +0000</pubDate>
      <link>https://dev.to/leandrocrs/windows-command-line-tip-easily-change-window-transparency-3ch9</link>
      <guid>https://dev.to/leandrocrs/windows-command-line-tip-easily-change-window-transparency-3ch9</guid>
      <description>&lt;p&gt;&lt;em&gt;Smart tip:&lt;/em&gt; when using Windows 10 command-line tools such as WSL, Ubuntu, Powershell or even CMD, you can:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CTRL + Shift + Scroll Up/Down = change window transparency level
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftq9xby9qheup81g3mbps.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftq9xby9qheup81g3mbps.gif" width="600" height="358"&gt;&lt;/a&gt;Window alternating transparency level through a Windows shortcut&lt;/p&gt;

</description>
      <category>powershell</category>
      <category>tips</category>
      <category>transparency</category>
      <category>cmd</category>
    </item>
    <item>
      <title>CSS: do ‘Odeio essa m**’ a ‘pode deixar comigo!’</title>
      <dc:creator>Leandro Cavalcante</dc:creator>
      <pubDate>Mon, 06 Feb 2017 02:24:46 +0000</pubDate>
      <link>https://dev.to/leandrocrs/css-do-odeio-essa-m-a-pode-deixar-comigo-2ea7</link>
      <guid>https://dev.to/leandrocrs/css-do-odeio-essa-m-a-pode-deixar-comigo-2ea7</guid>
      <description>&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;traduzido e adaptado do excelente &lt;a href="https://blog.10pines.com//2017/01/24/css-from-i-hate-it-to-i-actually-like-this-thing/"&gt;post&lt;/a&gt; do &lt;a href="https://blog.10pines.com/authors/ignacio-piantanida/"&gt;Ignacio Piantanida&lt;/a&gt; no &lt;a href="https://blog.10pines.com/"&gt;blog do 10pines&lt;/a&gt;, de 24 de janeiro de 2017&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Me lembro dos meus primeiros dias como desenvolvedor web, quando peguei uma tarefa que parecia tão simples: &lt;em&gt;“nós precisamos adicionar um pequeno botão vermelho abaixo desse formulário. Ele precisa estar alinhado à direita. Ah! E verticalmente centralizado também”&lt;/em&gt;. Eu estava condenado. Algumas horas gastas quebrando o layout, consertando-o e quebrando-o novamente a cada mudança no CSS que eu fazia… todos nós já passamos por isso antes.&lt;/p&gt;

&lt;p&gt;Felizmente, depois de ler esse post você aprenderá algumas dicas para ajuda-lo(a) no seu caminho para dominar CSS plenamente.&lt;/p&gt;

&lt;p&gt;Bora lá!&lt;/p&gt;

&lt;h3&gt;
  
  
  0. Esqueça os navegadores antigos
&lt;/h3&gt;

&lt;p&gt;Não chamaria isso exatamente de dica, ainda mais a 0, mas é algo que sempre levo em consideração ao iniciar um novo projeto.&lt;/p&gt;

&lt;p&gt;Tente evitar ter que dar suporte a navegadores antigos. Dê uma olhada nas &lt;a href="https://www.netmarketshare.com/browser-market-share.aspx?qprid=2&amp;amp;qpcustomd=0"&gt;estatísticas de uso&lt;/a&gt;, e balanceie a relação &lt;strong&gt;maior alcance de usuários x custos extra no desenvolvimento&lt;/strong&gt;. Dar suporte a coisas mais velhas que o IE 10 dá muita dor de cabeça.&lt;/p&gt;

&lt;p&gt;É claro, nem sempre isso será possível. Eu conheço uma empresa que obriga todos os seus colaboradores que não trabalham diretamente com T.I. a usa o IE 7, então todas as ferramentas internas devem funcionar no dito-cujo. Se este é o seu caso, eu realmente sinto muito por você. Não poderei ajuda-lo(a).&lt;/p&gt;

&lt;p&gt;Se você já possui um site e as estatísticas dele, observe como as versões e navegadores se comportam dentro do contexto do negócio. Por exemplo, em um dos projetos em que trabalhei, a porcentagem de usuários de IE era baixa em termos de visitas. Mas quando você olhava para dados como os de conversão de vendas por navegador, os usuários de IE tinham uma taxa de conversão muito maior, o que representava uma boa porcentagem de vendas.&lt;/p&gt;

&lt;p&gt;Dê suporte àquilo que vale a pena.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Entenda as regras de precedência
&lt;/h3&gt;

&lt;p&gt;Eu não posso deixar de frisar isso. Se você não entende porque uma certa propriedade está sendo aplicada sobre outra, estará sempre em guerra com frameworks, bibliotecas e até mesmo com o monte de CSS dos seus próprios projetos.&lt;/p&gt;

&lt;p&gt;Digamos que você tem os seguintes códigos HTML e CSS:&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;id=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"my-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  I want my &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text red"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;color&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
&lt;span class="nf"&gt;#container&lt;/span&gt; &lt;span class="nt"&gt;span&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;span class="nc"&gt;.my-container&lt;/span&gt; &lt;span class="nc"&gt;.text.red&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="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Qual você acha que será a cor do texto?&lt;/p&gt;

&lt;p&gt;Se sua resposta foi &lt;em&gt;“eu não ligo, simplesmente vou colocar um !important no que eu quero”&lt;/em&gt;, bem, lhe desejo uma vida regada a muito IE 6.&lt;/p&gt;

&lt;p&gt;Para o resto das pessoas que ligam, a resposta é azul. Não interessa quantos seletores você adicionar na segunda regra, você nunca fará com que o texto fique vermelho.&lt;/p&gt;

&lt;p&gt;A chave é que os diferentes tipos de seletores ( &lt;strong&gt;#id&lt;/strong&gt; ,  &lt;strong&gt;.class&lt;/strong&gt; , &lt;strong&gt;element&lt;/strong&gt; or &lt;strong&gt;inline&lt;/strong&gt; ) possuem diferentes precedências. Cada seletor possui um ‘peso’, e o maior peso ganha.&lt;/p&gt;

&lt;p&gt;Uma boa fonte de estudo e compreensão sobre o assunto é o curtíssimo post do Steven Bradley, (&lt;a href="http://vanseodesign.com/css/css-specificity-inheritance-cascaade/"&gt;Understanding Style Precedence in CSS: Specificity, Inheritance, and the Cascade&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Utilize um pré-processador
&lt;/h3&gt;

&lt;p&gt;Hoje em dia é difícil achar uma webapp que use só o CSS puro sem o uso de um pré-processador, mas se você está iniciando um novo projeto, adicione um pré-processador o quanto antes. &lt;em&gt;Mixins&lt;/em&gt;, variáveis, herança e &lt;em&gt;import&lt;/em&gt; ajudarão a manter seus estilos modulares e sem repetições (princípio DRY) do começo ao fim.&lt;/p&gt;

&lt;p&gt;Eu sempre escolho &lt;a href="http://sass-lang.com/"&gt;Sass&lt;/a&gt;, que atualmente é o pré-processador CSS mais utilizado, seguido pelo &lt;a href="http://lesscss.org/"&gt;Less&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Abrace o Flexbox para posicionamento
&lt;/h3&gt;

&lt;p&gt;Com &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes"&gt;flexbox&lt;/a&gt; você pode construir um layout responsivo consistente, com apenas um pequeno conjunto de regras. Depois de usa-lo pela primeira vez, você nunca mais irá querer usar um &lt;em&gt;float&lt;/em&gt; ou o &lt;a href="http://getbootstrap.com/css/#grid"&gt;&lt;em&gt;grid system do bootstrap&lt;/em&gt;&lt;/a&gt; novamente.&lt;/p&gt;

&lt;p&gt;Eu adoro esse joguinho, o &lt;a href="http://flexboxfroggy.com"&gt;flexboxfroggy.com&lt;/a&gt;, para aprender o básico.&lt;/p&gt;

&lt;p&gt;Você deverá tomar muito cuidado com a compatibilidade de cada navegador e seus prefixos. O que nos leva à próxima dica…&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Não escreva os prefixos de navegador manualmente
&lt;/h3&gt;

&lt;p&gt;Adicionar os prefixos de cada navegador implica em duplicação, o que é tedioso a leva a erros.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/postcss/autoprefixer"&gt;Autoprefixer&lt;/a&gt; é uma ferramenta que lhe ajudará a lidar com as pequenas diferenças entre os navegadores. Baseado no &lt;a href="http://caniuse.com/"&gt;CanIUse&lt;/a&gt;, você define quais versões de navegador você deseja dar suporte e o autoprefixer procurará nos seus arquivos CSS e adicionará as propriedades necessárias para cada navegador. Esqueça toda essa porcaria de &lt;strong&gt;-moz&lt;/strong&gt; ou  &lt;strong&gt;-webkit&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Independente de qual stack você utilize durante o desenvolvimento, webpack, gulp ou grunt, é muito simples integra-lo.&lt;/p&gt;

&lt;p&gt;Se você não quer mudar nada no seu pipeline, ao menos utilize alguma coisa tipo o &lt;a href="http://bourbon.io/"&gt;Bourbon&lt;/a&gt;, uma biblioteca de mixins Sass que adicionam todos os prefixos para você.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Não utilize qualquer nome para classes, utilize uma metodologia
&lt;/h3&gt;

&lt;p&gt;Conforme o projeto cresce, o número e grau de complexidade das suas páginas de estilo podem se tornar um problema. Se não for cuidadoso(a), adicionar uma simples propriedade a uma classe pode ter um gigantesco impacto em outras partes do site que você nem sequer imagina.&lt;/p&gt;

&lt;p&gt;Usar uma metodologia específica irá prevenir esse tipo de erro. Ao mesmo tempo, definirá um padrão para sua base de código, garantindo consistência entre tantos estilos de diferentes desenvolvedores.&lt;/p&gt;

&lt;p&gt;Há diversas técnicas para lidar com isso como BEM, OOCSS, SMACSS, etc… a única com a qual essou bem familiarizado é a BEM.&lt;/p&gt;

&lt;p&gt;Com &lt;a href="http://getbem.com/"&gt;BEM (Box, Element, Modifier)&lt;/a&gt;, você define classes do tipo  &lt;strong&gt;.bloco__elemento — modificador&lt;/strong&gt;. Por exemplo, se você tem um cabeçalho com o logo da empresa e um botão de login, você terá classes como  &lt;strong&gt;.cabecalho__logo-empresa&lt;/strong&gt; ,  &lt;strong&gt;.cabecalho__btn-logar&lt;/strong&gt; ou  &lt;strong&gt;.cabecalho__btn-logar — oculto&lt;/strong&gt;. Assim, toda vez que olhar para um seletor numa folha de estilos, você saberá em qual elemento ele está interferindo e onde encontra-lo.&lt;/p&gt;

&lt;p&gt;Além disso, a BEM sugere uma estrutura chapada de classes (ao invés de aninhar tudo como  &lt;strong&gt;.cabecalho .btn-logar&lt;/strong&gt; ). Dessa forma, você desacopla seus estilos das estruturas no HTML e seu estilo sempre funcionará da mesma forma (exceto para propriedades herdadas, é claro).&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Entenda as diferentes unidades de medida
&lt;/h3&gt;

&lt;p&gt;Você sabe a diferença entre &lt;strong&gt;px&lt;/strong&gt; , &lt;strong&gt;em&lt;/strong&gt; e  &lt;strong&gt;rem&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;Você sabe o que as unidades de viewport ( &lt;strong&gt;vw&lt;/strong&gt; e &lt;strong&gt;vh&lt;/strong&gt; ) são?&lt;/p&gt;

&lt;p&gt;Adicionar unidades além do &lt;strong&gt;px&lt;/strong&gt; e &lt;strong&gt;%&lt;/strong&gt; na sua caixa de ferramentas lhe permitirá expandir o que poderá fazer, especialmente ao lidar com sites responsivos. Aprenda mais sobre elas &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/length"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Entenda todos os diferentes valores do POSITION
&lt;/h3&gt;

&lt;p&gt;Já se perguntou porque às vezes você define o &lt;strong&gt;position&lt;/strong&gt; como &lt;strong&gt;absolute&lt;/strong&gt; e o elemento voa direto para o topo da página e outras vezes simplesmente permanece no mesmo lugar?&lt;/p&gt;

&lt;p&gt;A chave é como os &lt;a href="http://www.w3schools.com/css/css_positioning.asp"&gt;valores do position&lt;/a&gt; interagem entre si. &lt;strong&gt;absolute&lt;/strong&gt; , &lt;strong&gt;relative&lt;/strong&gt; , &lt;strong&gt;fixed&lt;/strong&gt; ou &lt;strong&gt;static&lt;/strong&gt; possuem seus próprios casos de uso e você deve entender onde cada um deles deve ser usado.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Pseudo-seletores
&lt;/h3&gt;

&lt;p&gt;Os seletores CSS não são só as classes, ids e elementos. A cada nova versão da especificação CSS, um novo pseudo seletor aparece e permite realizar coisas com CSS puro que antes só podiam ser realizadas com Javascript ou processamento no servidor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;:last-of-type&lt;/strong&gt; ,  &lt;strong&gt;:last-child&lt;/strong&gt; ,  &lt;strong&gt;::before&lt;/strong&gt; são alguns dos exemplos de pseudo seletores que são usados a todo tempo. &lt;a href="https://kimblim.dk/css-tests/selectors/"&gt;Este site&lt;/a&gt; mostra uma lista gigantesca de pseudo seletores incluindo definição, exemplos e o suporte em cada versão de navegador.&lt;/p&gt;

&lt;p&gt;Não há muitos segredos aqui, mas assegure-se de que entende tudo o que as abas &lt;strong&gt;Styles&lt;/strong&gt; e &lt;strong&gt;Computed&lt;/strong&gt; têm a oferecer. Elas são muito úteis para entender onde certas propriedades estão sendo sobre-escritas e testar coisas novas rapidamente.&lt;/p&gt;

&lt;p&gt;Além disso, garanta no seu fluxo de desenvolvimento que os &lt;strong&gt;source maps&lt;/strong&gt; estão sendo gerados, assim você poderá ver em qual arquivo/linha aquela propriedade está sendo definida, diretamente pelo navegador.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusão
&lt;/h3&gt;

&lt;p&gt;Após compreender todos esses 9 pontos, você possuirá um vasto conhecimento de como controlar seus estilos, especialmente em questão de layout, que na minha opinião é a parte mais complexa.&lt;/p&gt;

&lt;p&gt;É claro que o mundo do CSS é muito mais do que layout e há muitos outros tópicos mais avançados para cobrir, como animações, transições, transformações, o &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout"&gt;novo grid layout&lt;/a&gt;, etc… mas quanto a isso, você precisará entender o que cada propriedade faz e o que são os seus diferentes valores, mas tudo que tratamos aqui servirá como uma &lt;strong&gt;base sólida&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Tornar-se profissional em CSS necessita de muito tempo e prática, mas com uma base sólida não será uma jornada difícil.&lt;/p&gt;

&lt;p&gt;E no final desse artigo, aliás, nenhum post sobre CSS pode ser completo sem esse GIF. Ele nunca fica velho!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/media/9ee5b80578406d432a1906ea570676ac/href"&gt;&lt;/a&gt;&lt;a href="https://medium.com/media/9ee5b80578406d432a1906ea570676ac/href"&gt;https://medium.com/media/9ee5b80578406d432a1906ea570676ac/href&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>frontend</category>
      <category>frontenddevelopment</category>
    </item>
  </channel>
</rss>
