{"componentChunkName":"component---src-templates-single-template-tsx","path":"/sass-e-atomic-design","result":{"data":{"site":{"siteMetadata":{"siteUrl":"https://blog.nandomoreira.dev","author":{"name":"Fernando Moreira","site":"https://nandomoreira.dev","social":{"disqus":"fernandomoreira"}}}},"markdownRemark":{"html":"<p><strong>SASS</strong> é um pré-processador incrível não acha? Mas muitos não sabem como organizar seus projetos com ele, nesse artigo vou lhe mostrar como organizar uma estrutura <em>\"foda\"</em> usando <strong><a href=\"http://sass-lang.com/\">SASS</a></strong> e <em><strong><a href=\"http://patternlab.io/about.html\">Atomic Design</a></strong></em>, vem comigo.</p>\n<blockquote>\n<p>Não vou explicar o que é <em>Atomic Design</em>, não é o intuito desse artigo, mas vou deixar aqui alguns links para que você dê uma lida antes de continuar.</p>\n</blockquote>\n<ul>\n<li><strong><a href=\"http://tableless.com.br/o-que-e-design-atomic/\">O que é Design Atômico?</a></strong> - <em>tableless</em></li>\n<li><strong><a href=\"http://nomadev.com.br/atomic-design-por-que-usar/\">Atomic Design - Por que usar?</a></strong> - <em>nomadev</em></li>\n<li><strong><a href=\"http://nomadev.com.br/passo-a-passo-como-desenvolver-com-atomic-design-mobile-first-e-stylus/\">Passo-a-passo como desenvolver com Atomic Design, Mobile-first e Stylus - Parte 1</a></strong> - <em>nomadev</em></li>\n<li><strong><a href=\"http://www.frontendbrasil.com.br/tutoriais/atomic-design-como-funciona/\">Atomic Design como funciona</a></strong> - <em>frontendbrasil</em></li>\n</ul>\n<h2>/diretórios</h2>\n<p>Depois que você entendeu bem o que é <em>Atomic Design</em> e como ele funciona vamos começar a desenhar a estrutura do nosso projeto.</p>\n<p>Nós sabemos que <em>atomic design</em> é dividido em 5 itens, <strong><em>atoms</em></strong>, <strong><em>molecules</em></strong>, <strong><em>organisms</em></strong>, <strong><em>templates</em></strong> e <strong><em>pages</em></strong>, mas nós usaremos apenas 3 desses itens: <strong><em>atoms</em></strong>, <strong><em>molecules</em></strong> e <strong><em>organisms</em></strong> e, claro, criaremos um diretório pra cada item, mais ou menos assim:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-text line-numbers\"><code class=\"language-text\">sass-e-atomic-design/\n  └── sass/\n    ├── atoms/\n    │   └── # Arquivos sass para atoms\n    ├── molecules/\n    │   └── # Arquivos sass para molecules\n    └── organisms/\n        └── # Arquivos sass para organisms</code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<p>Ainda junto com esses 2 itens do <em>Atomic Design</em> vamos adicionar mais 2 diretórios, <code class=\"language-text\">core/</code> e <code class=\"language-text\">vendor/</code>.</p>\n<p>Fica mais ou menos assim:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-text line-numbers\"><code class=\"language-text\">sass-e-atomic-design/\n  └── sass/\n    ├── atoms/\n    │   └── # Arquivos sass para atoms\n    ├── core/\n    │   └── # Arquivos sass para variaveis e mixins\n    ├── molecules/\n    │   └── # Arquivos sass para molecules\n    ├── organisms/\n    │   └── # Arquivos sass para organisms\n    └── vendor/\n        └── # Arquivos sass de terceiros</code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<h2>O diretório core/</h2>\n<p>Vamos começar com o diretório <code class=\"language-text\">core/</code>, nele vamos criar 4 outros diretórios: <code class=\"language-text\">bosons/</code>, <code class=\"language-text\">functions/</code>, <code class=\"language-text\">mixins/</code> e <code class=\"language-text\">variables/</code>, e 4 arquivos <code class=\"language-text\">_bosons.scss</code>, <code class=\"language-text\">_functions.scss</code>, <code class=\"language-text\">_mixins.scss</code> e <code class=\"language-text\">_variables.scss</code>.</p>\n<ul>\n<li><strong><em>bosons/</em></strong>: São os <em>[placeholders](<a href=\"http://sass-lang.com/documentation/file.SASS\">http://sass-lang.com/documentation/file.SASS</a></em>REFERENCE.html#placeholder<em>selectors</em>)_ do SASS, são as partículas que vão dar massa a nossos átomos.</li>\n<li><strong><em>functions/</em></strong>: São as <a href=\"http://sass-lang.com/documentation/file.SASS_REFERENCE.html#functions\">funções SASS</a> do projeto.</li>\n<li><strong><em>mixins/</em></strong>: São as <a href=\"http://sass-lang.com/documentation/file.SASS_REFERENCE.html#mixins\">mixins</a> do projeto.</li>\n<li><strong><em>variables/</em></strong>: São todas as variáveis do projeto.</li>\n</ul>\n<p>Vamos deixar <code class=\"language-text\">functions/</code>, <code class=\"language-text\">mixins/</code> e <code class=\"language-text\">variables/</code> de lado e vamos nos concentrar em <code class=\"language-text\">bosons/</code>, é ai que começa a fazer sentido a metodologia <em>Atomic Design</em>. Nesse diretório vamos criar um <em>bóson</em> que muita gente conheçe, o famoso <code class=\"language-text\">button</code>.</p>\n<p>Crie um arquivo chamado <code class=\"language-text\">_buttons.scss</code> e coloque a seguinte estrutura.</p>\n<div class=\"gatsby-highlight\" data-language=\"scss\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-scss line-numbers\"><code class=\"language-scss\"><span class=\"token selector\"><span class=\"token placeholder\">%button</span> </span><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">padding</span><span class=\"token punctuation\">:</span> 0.8em 2em<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">text-decoration</span><span class=\"token punctuation\">:</span> none<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">border</span><span class=\"token punctuation\">:</span> none<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">margin-top</span><span class=\"token punctuation\">:</span> 1em<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">display</span><span class=\"token punctuation\">:</span> inline-block<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> #fff<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">font-size</span><span class=\"token punctuation\">:</span> 1.2em<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">text-align</span><span class=\"token punctuation\">:</span> center<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">transition</span><span class=\"token punctuation\">:</span> 0.4s background ease<span class=\"token punctuation\">,</span> 0.4s color ease<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">border-radius</span><span class=\"token punctuation\">:</span> 0.4em<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">background</span><span class=\"token punctuation\">:</span> #c12b2c<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">font-weight</span><span class=\"token punctuation\">:</span> bold<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">text-transform</span><span class=\"token punctuation\">:</span> uppercase<span class=\"token punctuation\">;</span>\n\n  <span class=\"token selector\"><span class=\"token parent important\">&amp;</span>:hover,\n  <span class=\"token parent important\">&amp;</span>:focus,\n  <span class=\"token parent important\">&amp;</span>:active </span><span class=\"token punctuation\">{</span>\n    <span class=\"token property\">background</span><span class=\"token punctuation\">:</span> <span class=\"token function\">lighten</span><span class=\"token punctuation\">(</span>#c12b2c<span class=\"token punctuation\">,</span> 7%<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token property\">text-decoration</span><span class=\"token punctuation\">:</span> none<span class=\"token punctuation\">;</span>\n    <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> #fff<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token selector\"><span class=\"token placeholder\">%button-ghost</span> </span><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">background-color</span><span class=\"token punctuation\">:</span> transparent<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">border</span><span class=\"token punctuation\">:</span> 2px solid #fff<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">border</span><span class=\"token punctuation\">:</span> 2px solid <span class=\"token function\">rgba</span><span class=\"token punctuation\">(</span>#fff<span class=\"token punctuation\">,</span> 0.9<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token selector\"><span class=\"token parent important\">&amp;</span>:hover,\n  <span class=\"token parent important\">&amp;</span>:focus,\n  <span class=\"token parent important\">&amp;</span>:active </span><span class=\"token punctuation\">{</span>\n    <span class=\"token property\">border-color</span><span class=\"token punctuation\">:</span> <span class=\"token function\">rgba</span><span class=\"token punctuation\">(</span>#fff<span class=\"token punctuation\">,</span> 0.7<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token property\">background-color</span><span class=\"token punctuation\">:</span> <span class=\"token function\">rgba</span><span class=\"token punctuation\">(</span>#fff<span class=\"token punctuation\">,</span> 0.1<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token property\">text-decoration</span><span class=\"token punctuation\">:</span> none<span class=\"token punctuation\">;</span>\n    <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> #fff<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<p>A estrutura acima tem dois <em>bósons</em> que darão massa aos átomos de botões por todo nosso projeto, é bem simples, basta usar o <code class=\"language-text\">@extend %button;</code> que a mágica acontece.</p>\n<p>Esse é só um pequeno exemplo de como podemos criar os nossos <em>placeholders</em> de SASS em nosso projeto, pense em <em>bóson</em> como algo que você vai usar muito e por todo o seu projeto, algo que será igualmente repetido em muitos lugares, assim você abstrai o CSS e o arquivo final ficá sem repetição de código.</p>\n<blockquote>\n<p>Leia mais sobre <em>bósons</em> e <em>quarks</em> em <a href=\"http://nomadev.com.br/atomic-design-b%C3%B3sons-e-quarks-extended/\">nomadev</a></p>\n</blockquote>\n<h2>/continua..</h2>\n<p>Essa é a primeira parte do nosso tutorial de <strong>SASS e Atomic Design</strong>, no próximo episódio veremos como unir os <em>bósons</em> e os <em>atoms</em> e como isso pode reduzir o seu CSS final, ajudando assim na performace do seu projeto. Até lá!</p>\n<p>/end</p>","excerpt":"SASS é um pré-processador incrível não acha? Mas muitos não sabem como organizar seus projetos com ele, nesse artigo vou lhe mostrar como organizar…","timeToRead":4,"frontmatter":{"category":["sass"],"date":"há 11 anos","datePublished":"2015-11-16T00:00:00.000Z","description":"SASS é um pré-processador incrível não acha? Mas muitos não sabem como organizar seus projetos com ele","path":"/sass-e-atomic-design","tags":["sass","css","pre-processador"],"title":"SASS + Atomic design","image":{"publicURL":"/static/conhecendo-o-pre-processador-sass-b6a1f24254111b01aa97dae9042b5345.jpg","name":"conhecendo-o-pre-processador-sass"}},"fields":{"readingTime":{"words":605}}}},"pageContext":{}}}