{"componentChunkName":"component---src-templates-single-template-tsx","path":"/sass-parte-4-funcoes","result":{"data":{"site":{"siteMetadata":{"siteUrl":"https://blog.nandomoreira.dev","author":{"name":"Fernando Moreira","site":"https://nandomoreira.dev","social":{"disqus":"fernandomoreira"}}}},"markdownRemark":{"html":"<p>Esse artigo será bem rápido, vou falar sobre o recurso que deixa o <strong>SASS</strong> ainda mais com cara de linguagem de programação, são as <strong>funções</strong>.</p>\n<p>Eu comentei no <a href=\"/sass-parte-3-mixins\">artigo anterior</a> que <em>\"Mixins são como funções que retornam um bloco inteiro de CSS\"</em>, esse recurso fica ainda mais completo se somado com <strong>funções</strong>.</p>\n<p>Vamos fazer um exemplo clássico, somar <code class=\"language-text\">a + b</code>.</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 keyword\">@function</span> <span class=\"token function\">soma</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$a</span><span class=\"token punctuation\">,</span> <span class=\"token property\"><span class=\"token variable\">$b</span></span><span class=\"token punctuation\">:</span> 0<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\"><span class=\"token variable\">$c</span></span><span class=\"token punctuation\">:</span> <span class=\"token variable\">$a</span> <span class=\"token operator\">+</span> <span class=\"token variable\">$b</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">@return</span> <span class=\"token variable\">$c</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token selector\">.card </span><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">width</span><span class=\"token punctuation\">:</span> <span class=\"token function\">soma</span><span class=\"token punctuation\">(</span>500px<span class=\"token punctuation\">,</span> 200<span class=\"token punctuation\">)</span><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></pre></div>\n<p>O exemplo acima vai me retornar o valor da soma do primeiro parâmetro com a do segundo, resultando em <code class=\"language-text\">700px</code> de largura para a classe <code class=\"language-text\">.card</code>. Simples não é mesmo?</p>\n<p>E o que aconteceria se eu aplicasse somente o primeiro parâmetro?</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\">.card </span><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">width</span><span class=\"token punctuation\">:</span> <span class=\"token function\">soma</span><span class=\"token punctuation\">(</span>500px<span class=\"token punctuation\">)</span><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></pre></div>\n<p>Isso mesmo que você pensou! O resultado seria apenas de 500px pois a variável <code class=\"language-text\">$b</code> está com valor inicial de zero.</p>\n<h2>Conclusão</h2>\n<p>Se você precisar resolver alguma conta ou converter algum número, provavelmente você irá usar funções, caso contrário use <a href=\"/sass-parte-3-mixins\">Mixins</a>.</p>\n<p>Eu particularmente não uso muitas funções, tenho apenas algumas em meu arcenal, posso até listar elas aqui para vocês.</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 comment\">// Converte numeros para inteiro</span>\n<span class=\"token comment\">//</span>\n<span class=\"token keyword\">@function</span> <span class=\"token function\">parseInt</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$n</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">@return</span> <span class=\"token variable\">$n</span> <span class=\"token operator\">/</span> <span class=\"token punctuation\">(</span><span class=\"token variable\">$n</span> <span class=\"token operator\">*</span> 0 <span class=\"token operator\">+</span> 1<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// remove a unidade deixando apenas o numero</span>\n<span class=\"token comment\">// strip-unit(10px) retorna apenas o numero 10</span>\n<span class=\"token comment\">//</span>\n<span class=\"token keyword\">@function</span> <span class=\"token function\">strip-unit</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$number</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">@if</span> <span class=\"token function\">type-of</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$number</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token string\">'number'</span> <span class=\"token operator\">and</span> <span class=\"token operator\">not</span> <span class=\"token function\">unitless</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$number</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">@return</span> <span class=\"token variable\">$number</span> <span class=\"token operator\">/</span> <span class=\"token punctuation\">(</span><span class=\"token variable\">$number</span> <span class=\"token operator\">*</span> 0 <span class=\"token operator\">+</span> 1<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token keyword\">@return</span> <span class=\"token variable\">$number</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// Converte unidades px para em</span>\n<span class=\"token comment\">//</span>\n<span class=\"token property\"><span class=\"token variable\">$font-size-base</span></span><span class=\"token punctuation\">:</span> 16px<span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">@function</span> <span class=\"token function\">em</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$pixels</span><span class=\"token punctuation\">,</span> <span class=\"token property\"><span class=\"token variable\">$context</span></span><span class=\"token punctuation\">:</span> <span class=\"token variable\">$font-size-base</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">@if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">unitless</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$pixels</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\"><span class=\"token variable\">$pixels</span></span><span class=\"token punctuation\">:</span> <span class=\"token variable\">$pixels</span> <span class=\"token operator\">*</span> 1px<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token keyword\">@if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">unitless</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$context</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\"><span class=\"token variable\">$context</span></span><span class=\"token punctuation\">:</span> <span class=\"token variable\">$context</span> <span class=\"token operator\">*</span> 1px<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token keyword\">@return</span> <span class=\"token variable\">$pixels</span> <span class=\"token operator\">/</span> <span class=\"token variable\">$context</span> <span class=\"token operator\">*</span> 1em<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></pre></div>\n<p>É isso ai moçada, se tiverem alguma dúvida comentem ai que reponderei em <a href=\"http://goo.gl/oM5AOY\">\"dois palitos\"</a>.</p>\n<p>Abraço!</p>\n<hr>\n<ol>\n<li><a href=\"/conhecendo-o-pre-processador-sass-parte-1\">Conhecendo o pré-processador SASS - Instalação</a></li>\n<li><a href=\"/sass-variaveis-parte-2\">Conhecendo o pré-processador SASS - Variáveis</a></li>\n<li><a href=\"/sass-parte-3-mixins\">Conhecendo o pré processador SASS - Mixins</a></li>\n<li>Conhecendo o pré processador SASS - Funções</li>\n<li><a href=\"/sass-parte-5-placeholder\">Conhecendo o pré-processador SASS - Placeholder</a></li>\n</ol>","excerpt":"Esse artigo será bem rápido, vou falar sobre o recurso que deixa o SASS ainda mais com cara de linguagem de programação, são as funções. Eu comentei…","timeToRead":2,"frontmatter":{"category":["sass"],"date":"há 11 anos","datePublished":"2015-09-05T00:00:00.000Z","description":"Conhecendo o pré-processador SASS-Parte 4","path":"/sass-parte-4-funcoes","tags":["sass","css","pre-processador"],"title":"#4 - Conhecendo o pré processador SASS | Funções","image":{"publicURL":"/static/conhecendo-o-pre-processador-sass-b6a1f24254111b01aa97dae9042b5345.jpg","name":"conhecendo-o-pre-processador-sass"}},"fields":{"readingTime":{"words":340}}}},"pageContext":{}}}