<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Arthur Fücher - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Aprenda a codificar - de graça. Tutoriais de programação em Python, JavaScript, Linux e muito mais. ]]>
        </description>
        <link>https://www.freecodecamp.org/portuguese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Arthur Fücher - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/portuguese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sun, 24 May 2026 08:43:23 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/portuguese/news/author/arthur/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Tag select do HTML – como fazer um menu suspenso ou uma lista de opções ]]>
                </title>
                <description>
                    <![CDATA[ Você usa a tag select do HTML para criar menus suspensos para que os usuários selecionem os valores que eles querem. É uma funcionalidade essencial na coleta de dados a serem enviados para um servidor. A tag select normalmente é usada dentro de um elemento de formulário (form), com os ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/tag-select-do-html-como-fazer-um-menu-suspenso-ou-uma-lista-de-opcoes/</link>
                <guid isPermaLink="false">642b744486dbbe0599dba6a4</guid>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Arthur Fücher ]]>
                </dc:creator>
                <pubDate>Sun, 09 Jul 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/07/HTML-select-tag.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/html-select-tag-how-to-make-a-dropdown-menu-or-combo-list/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">HTML Select Tag – How to Make a Dropdown Menu or Combo List</a>
      </p><p>Você usa a tag <em>select</em> do HTML para criar menus suspensos para que os usuários selecionem os valores que eles querem. É uma funcionalidade essencial na coleta de dados a serem enviados para um servidor.</p><p>A tag <em>select</em> normalmente é usada dentro de um elemento de formulário (<code>form</code>), com os itens a serem escolhidos ficando dentro de outra tag, <code>&lt;option&gt;</code>. Ela também pode ser usada como um elemento sozinho, que ainda estaria associado com um formulário por meio de um de seus atributos especiais, <code>form</code>.</p><p>Neste tutorial, vou mostrar como criar um menu suspenso com a tag <em>select</em> para que você possa começar a coletar dados nos seus projetos de programação. Também vou mostrar um pouco sobre como estilizar a tag <em>select</em>, pois ela é notoriamente difícil de estilizar.</p><h3 id="aqui-temos-um-scrim-interativo-sobre-como-fazer-um-menu-suspenso-ou-lista-de-op-es-em-html-ingl-s-"><strong>Aqui temos um Scrim interativo sobre </strong>como fazer um menu suspenso ou lista de opções em HTML (inglês)</h3><figure class="kg-card kg-embed-card"><iframe src="https://scrimba.com/scrim/co5b3416fb871e72f3c8e1e76?embed=freecodecamp,mini-header" width="100%" height="420" title="Embedded content" loading="lazy" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-weight: 400; font-stretch: inherit; line-height: inherit; font-family: Lato, sans-serif; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 22px; vertical-align: middle; color: rgb(218, 215, 210); letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(24, 26, 27); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"></iframe></figure><h2 id="atributos-da-tag-select"><strong>Atributos da tag <em>select</em></strong></h2><p>Antes de me aprofundar em como criar um menu suspenso com a tag <em>select</em>, precisamos discutir os atributos que a tag <em>select</em> recebe.</p><p>Os atributos são:</p><ul><li><code>name</code>: você precisa atribuir um nome para cada elemento do formulário pois é usado para referenciar o dado depois que for submetido ao servidor.</li><li><code>multiple</code>: esse atributo deixa o usuário selecionar múltiplas opções do menu suspenso.</li><li><code>required</code>: esse é tipicamente usado para validação. Com ele, o formulário não será submetido a menos que o usuário selecione pelo menos uma opção do menu suspenso.</li><li><code>disabled</code>: esse atributo impede o usuário de interagir com as opções (deixando-as desabilitadas). </li><li><code>size</code>: expresso em números, o atributo <em>size </em>(tamanho) é usado para especificar quantas opções poderão ser vistas ao mesmo tempo.</li><li><code>autofocus</code>: esse atributo é usado em todos campos de entrada de formulário, incluindo a tag <em>select</em>, para especificar qual campo de entrada deverá estar focado quando a página carregar.</li></ul><h2 id="como-criar-um-menu-suspenso-com-a-tag-select"><strong>Como criar um menu suspenso com a tag <em>select</em> </strong></h2><p>Para criar um menu suspenso com a tag <em>select</em>, você primeiro precisará de um elemento de formulário (tag <em>form</em>). Isso ocorre porque você também terá um botão de envio nele (no elemento de formulário) para enviar os dados para o servidor.</p><pre><code class="language-html">&lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;
</code></pre><p>Eu adicionei um CSS simples para centralizar o menu suspenso e o botão, e dar um fundo cinza claro para o corpo da página (<em>body</em>):</p><pre><code class="language-css">body {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
     height: 100vh;
     background-color: #f1f1f1;
   }

input {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
   }
</code></pre><p>Para torná-lo mais elaborado e acessível, você também pode anexar a caixa de seleção a um elemento de rótulo (<em>label</em>), para que fique focado quando o rótulo for clicado. Você pode fazer isso com este código:</p><pre><code class="language-html">&lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;
</code></pre><p>Eu coloquei o símbolo da cerquilha (#) como valor do atributo <em>action</em> para você não receber um 404 ao clicar no botão de enviar. </p><p>Agora, porém, temos que fazer uma pequena alteração no CSS:</p><pre><code class="language-css"> body {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
     height: 100vh; 
     background-color: #f1f1f1;
   }

input {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
   }

label {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
   }

select {
     margin-bottom: 10px;
     margin-top: 10px;
   }
</code></pre><p>No final, este é o resultado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/07/select-one.gif" class="kg-image" alt="select-one" width="600" height="321" loading="lazy"></figure><p>Não termina aqui. Um dos itens do menu suspenso aparece por padrão e será selecionado se o usuário clicar no botão de enviar assim que acessar a página.</p><p>Essa, no entanto, não é uma boa experiência para o usuário. Você pode se livrar disso colocando "<em>Select a language</em>" (selecione uma linguagem) como o primeiro elemento do menu.</p><pre><code class="language-html"> &lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;option value="select"&gt;Select a language&lt;/option&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;
</code></pre><p>Quando o usuário clicar para selecionar um item, o menu suspenso cobrirá o botão de enviar – outra coisa que afeta negativamente a experiência do usuário.</p><p>Você pode alterar isso com o atributo <code>size</code> (tamanho), que mostrará um certo número de itens por padrão e adicionará uma rolagem para os outros itens do menu.</p><p>Isso também deixa você remover o primeiro item falso, pois alguns itens estarão visíveis para o usuário automaticamente.</p><pre><code class="language-html"> &lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang" size="4"&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/select-two.gif" class="kg-image" alt="select-two" width="600" height="400" loading="lazy"></figure><p>Com o atributo <code>multiple</code> (múltiplo), você pode permitir que o usuário selecione vários itens do menu.</p><pre><code class="language-html"> &lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang" multiple&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;
</code></pre><p>Isso faz com que 4 itens estejam visíveis por padrão. Para selecionar mais de um item, o usuário precisa segurar a tecla <em>Shift</em> ou <em>Control</em> e, então, selecionar com o <em>mouse</em>.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/07/select-three.gif" class="kg-image" alt="select-three" width="600" height="321" loading="lazy"></figure><p>Você pode fazer mais ainda com as tags <code>&lt;select&gt;</code> e <code>&lt;option&gt;</code>. Você também pode fazer uma caixa de seleção com agrupamentos com o elemento <code>&lt;optgroup&gt;</code> dentro da tag <code>&lt;select&gt;</code>.</p><p>Você pode converter o menu que já foi feito para ter agrupamentos assim:</p><pre><code class="language-html">&lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;optgroup label="first-choice"&gt;
          &lt;option value="select"&gt;Select a language&lt;/option&gt;
          &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
          &lt;option value="php"&gt;PHP&lt;/option&gt;
          &lt;option value="java"&gt;Java&lt;/option&gt;
          &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;/optgroup&gt;
        &lt;optgroup label="second-choice"&gt;
          &lt;option value="python"&gt;Python&lt;/option&gt;
          &lt;option value="c#"&gt;C#&lt;/option&gt;
          &lt;option value="C++"&gt;C++&lt;/option&gt;
          &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
        &lt;/optgroup&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/07/multi-select.png" class="kg-image" alt="multi-select" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/07/multi-select.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/07/multi-select.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2023/07/multi-select.png 1280w" sizes="(min-width: 720px) 720px" width="1280" height="800" loading="lazy"></figure><h2 id="como-estilizar-o-elemento-select"><strong>Como estilizar o elemento <em>select</em></strong></h2><p>Estilizar o elemento <em>select </em>geralmente é confuso e renderizado de maneira inconsistente entre os navegadores. Você, contudo, sempre pode tentar o seguinte:</p><pre><code class="language-html"> &lt;form action="#"&gt;
      &lt;label for="lang"&gt;Language&lt;/label&gt;
      &lt;select name="languages" id="lang"&gt;
        &lt;option value="select"&gt;Select a Language&lt;/option&gt;
        &lt;option value="javascript"&gt;JavaScript&lt;/option&gt;
        &lt;option value="php"&gt;PHP&lt;/option&gt;
        &lt;option value="java"&gt;Java&lt;/option&gt;
        &lt;option value="golang"&gt;Golang&lt;/option&gt;
        &lt;option value="python"&gt;Python&lt;/option&gt;
        &lt;option value="c#"&gt;C#&lt;/option&gt;
        &lt;option value="C++"&gt;C++&lt;/option&gt;
        &lt;option value="erlang"&gt;Erlang&lt;/option&gt;
      &lt;/select&gt;
      &lt;input type="submit" value="Submit" /&gt;
&lt;/form&gt;
</code></pre><pre><code class="language-css"> select {
        margin-bottom: 10px;
        margin-top: 10px;
        font-family: cursive, sans-serif;
        outline: 0;
        background: #2ecc71;
        color: #fff;
        border: 1px solid crimson;
        padding: 4px;
        border-radius: 9px;
      }
</code></pre><p>Nesse exemplo de código CSS acima, eu dei ao texto na caixa de seleção a seguinte aparência:</p><ul><li>uma família de fonte cursiva e cor branca,</li><li>um contorno (<em>outline</em>) de 0 para remover o contorno feio quando está em foco,</li><li>um fundo esverdeado,</li><li>uma borda carmesim (vermelha) de 1 pixel,</li><li>um raio de borda de 4 pixels para obter uma borda ligeiramente arredondada em todos os lados</li><li>e um preenchimento de 4 pixels para espaçar um pouco as coisas.</li></ul><p>A caixa de seleção agora parece melhor:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/07/select-styled.gif" class="kg-image" alt="select-styled" width="600" height="358" loading="lazy"></figure><h2 id="conclus-o"><strong>Conclusão</strong></h2><p>A tag <em>select</em> é muito útil quando você está fazendo menus suspensos ou listas de opções (pré-definidas) em HTML. É como um botão de opção (<em>radio button</em>, em inglês) e uma caixa de seleção (<em>checkbox</em>, em inglês), tudo em um único lugar.</p><p>Lembre-se de que, com o botão de opção, você só consegue selecionar um item de uma lista. Com a caixa de seleção, porém, você pode selecionar vários itens. <em>Select</em> é mais flexível, pois você consegue configurá-lo para que aceite um único item ou diversos itens.</p><p>Um problema com a tag <em>select</em> é a grande dificuldade para estilizá-la. Uma solução razoável é utilizar uma biblioteca do CSS que ofereça ótimas classes utilitárias para estilizar um formulário junto com o elemento <em>select</em>.</p><p>Eu espero que este tutorial tenha deixado você mais familiarizado com a tag <em>select</em> para que você possa começar a usá-la em seus projetos.</p><p>Obrigado pela leitura e continue programando.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Como fazer o efeito de piscar – tutorial do HTML sobre como usar a tag blink, com exemplos de código ]]>
                </title>
                <description>
                    <![CDATA[ Nos primeiros dias da web, os elementos HTML, como a tag blink, eram maneiras nativas de adicionar alguns efeitos de animação para animar uma página da web. Como podemos usar essas animações hoje para adicionar brilho aos nossos sites e aplicações?  * O que é a tag blink do ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/como-fazer-o-efeito-de-piscar-tutorial-do-html-sobre-como-usar-a-tag-blink-com-exemplos-de-codigo/</link>
                <guid isPermaLink="false">6407d18c7d24e505217397ff</guid>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Arthur Fücher ]]>
                </dc:creator>
                <pubDate>Tue, 02 May 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/blink-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/make-it-blink-html-tutorial-how-to-use-the-blink-tag-with-code-examples/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Make It Blink HTML Tutorial – How to Use the Blink Tag, with Code Examples</a>
      </p><p>Nos primeiros dias da web, os elementos HTML, como a tag blink, eram maneiras nativas de adicionar alguns efeitos de animação para animar uma página da web. Como podemos usar essas animações hoje para adicionar brilho aos nossos sites e aplicações?</p><ul><li><a href="https://www.freecodecamp.org/portuguese/news/como-fazer-o-efeito-de-piscar-tutorial-do-html-sobre-como-usar-a-tag-blink-com-exemplos-de-codigo/#o-que-a-tag-blink-do-html">O que é a tag blink do HTML?</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/como-fazer-o-efeito-de-piscar-tutorial-do-html-sobre-como-usar-a-tag-blink-com-exemplos-de-codigo/#como-se-usa-a-tag-blink">Como se usa a tag blink?</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/como-fazer-o-efeito-de-piscar-tutorial-do-html-sobre-como-usar-a-tag-blink-com-exemplos-de-codigo/#voc-ainda-pode-usar-a-tag-blink">Você ainda pode usar a tag blink?</a></li><li><a href="https://www.freecodecamp.org/portuguese/news/como-fazer-o-efeito-de-piscar-tutorial-do-html-sobre-como-usar-a-tag-blink-com-exemplos-de-codigo/#recriando-a-tag-blink-com-anima-es-em-css">Recriando a tag blink com animações em CSS</a></li></ul><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/-gU-gkfEA1Q?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" title="What is the blink Tag in HTML? How to recreate it with CSS animations" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><h2 id="o-que-a-tag-blink-do-html"><strong>O que é a tag blink do HTML?</strong></h2><p>A tag <a href="https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/blink">blink</a> (<code>&lt;blink&gt;</code>) é uma tag HTML obsoleta, que faz o conteúdo da tag piscar lentamente.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/google-search-blink.gif" class="kg-image" alt="google-search-blink" width="1194" height="133" loading="lazy"><figcaption>GIF com o resultado da busca no Google por "blink tag"</figcaption></figure><p>Ela, juntamente com outras tags obsoletas, como a tag <a href="https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/marquee">marquee</a> (<code>&lt;marquee&gt;</code>), eram uma maneira fácil de adicionar efeitos de animação simples no seu site.</p><h2 id="como-se-usa-a-tag-blink"><strong>Como se usa a tag blink?</strong></h2><p>Como a tag blink era um elemento HTML simples, você a usaria diretamente com o seu conteúdo.</p><p>Por exemplo, se você quisesse que a palavra "blink" em blink-182 piscasse, você escreveria o seguinte código HTML:</p><pre><code class="language-html">&lt;p&gt;
  &lt;blink&gt;blink&lt;/blink&gt;-182
&lt;/p&gt;</code></pre><h2 id="voc-ainda-pode-usar-a-tag-blink"><strong>Você ainda pode usar a tag blink?</strong></h2><p>Como você deve ter notado no gif acima, essa tag está obsoleta.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/html-blink-browser-compatability.jpg" class="kg-image" alt="html-blink-browser-compatability" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/html-blink-browser-compatability.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2023/04/html-blink-browser-compatability.jpg 1000w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1600/2023/04/html-blink-browser-compatability.jpg 1600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/html-blink-browser-compatability.jpg 2000w" sizes="(min-width: 720px) 720px" width="2000" height="983" loading="lazy"><figcaption>Compatibilidade da tag blink nos navegadores</figcaption></figure><p>Isso significa que você não pode usar a tag blink do HTML por si só. No entanto, isso não deve nos impedir de refazer seus efeitos em toda sua glória piscante.</p><p><em>Observação: a tag blink foi depreciada devido a preocupações com acessibilidade. <a href="https://en.wikipedia.org/wiki/Blink_element#Usability_and_accessibility">Faça sua pesquisa</a> (em inglês) antes de tentar usar uma solução que traga o mesmo efeito, pois todos devemos nos esforçar para fazer nossos projetos o mais inclusivos possível.</em></p><h2 id="recriando-a-tag-blink-com-anima-es-em-css"><strong>Recriando a tag blink com animações em CSS</strong></h2><p>Hoje, no mundo do desenvolvimento para a web, animações geralmente são tratadas com CSS ou JavaScript. Usando animações em CSS, conseguimos recriar a tag blink com apenas algumas linhas e a temos funcionando de novo.</p><p>Com o seguinte CSS:</p><pre><code class="language-css">.blink {
  animation: blink 1s steps(1, end) infinite;
}

@keyframes blink {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
</code></pre><p>Você pode adicionar a classe <code>.blink</code> a qualquer elemento HTML para fazê-lo piscar.</p><pre><code>&lt;p&gt;
  &lt;span class="blink"&gt;blink&lt;/span&gt;-182
&lt;/p&gt;
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/html-blink-effect.gif" class="kg-image" alt="html-blink-effect" width="1884" height="210" loading="lazy"><figcaption>Efeito de piscar da tag blink do HTML usando o CSS</figcaption></figure><h2 id="modernizando-a-tag-blink"><strong>Modernizando a tag blink</strong></h2><p>Se quiséssemos algo um pouco mais suave, o que poderíamos fazer?</p><p>Bom, para começar, podemos fazer a animação desaparecer gradualmente removendo os <code>steps</code><em> </em>(passos, em português) da definição da animação.</p><pre><code class="language-css">.blink {
  animation: blink 1s infinite;
}
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/css-blink-fade.gif" class="kg-image" alt="css-blink-fade" width="1884" height="210" loading="lazy"><figcaption>Efeito de piscar gradual</figcaption></figure><p>Se quiséssemos fazê-la desaparecer gradualmente como um efeito de ficção científica, seria possível?</p><pre><code>.blink {
  animation: blink 3s infinite;
}

@keyframes blink {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    color: blue;
  }
}
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/css-scfifi-fade.gif" class="kg-image" alt="css-scfifi-fade" width="1884" height="210" loading="lazy"><figcaption>Efeito do CSS de piscar gradualmente</figcaption></figure><p>Também podemos usar um efeito de crescimento e desaparecimento bem legal.</p><pre><code class="language-css">.blink {
  animation: blink 3s infinite;
}

@keyframes blink {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0;
    transform: scale(2);
  }
  51% {
    opacity: 0;
    transform: scale(0);
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}
</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/css-grow-fade.gif" class="kg-image" alt="css-grow-fade" width="1884" height="210" loading="lazy"><figcaption>Efeito de piscar com CSS, com crescimento e desaparecimento</figcaption></figure><h2 id="controlando-as-anima-es-com-css"><strong>Controlando as animações com CSS</strong></h2><p>Embora você não possa mais usar a tag blink, você ainda tem várias opções. O CSS fornece diversas opções de animação nativamente. Então, se você deseja recriar seu passatempo favorito em HTML &nbsp;ou <a href="https://codepen.io/colbyfayock/pen/aEqsL">recriar a sequência do título de "Alien, o oitavo passageiro"</a>, pratique. As possibilidades são virtualmente infinitas.</p><figure class="kg-card kg-image-card"><img src="https://res.cloudinary.com/fay/image/upload/w_2000,h_400,c_fill,q_auto,f_auto/w_1020,c_fit,co_rgb:007079,g_north_west,x_635,y_70,l_text:Source%20Sans%20Pro_64_line_spacing_-10_bold:Colby%20Fayock/w_1020,c_fit,co_rgb:383f43,g_west,x_635,y_6,l_text:Source%20Sans%20Pro_44_line_spacing_0_normal:Follow%20me%20for%20more%20JavaScript%252c%20UX%252c%20and%20other%20interesting%20things!/w_1020,c_fit,co_rgb:007079,g_south_west,x_635,y_70,l_text:Source%20Sans%20Pro_40_line_spacing_-10_semibold:colbyfayock.com/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_68,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_145,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_222,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/w_300,c_fit,co_rgb:7c848a,g_north_west,x_1725,y_295,l_text:Source%20Sans%20Pro_40_line_spacing_-10_normal:colbyfayock/v1/social-footer-card" class="kg-image" alt="Follow me for more Javascript, UX, and other interesting things!" width="600" height="400" loading="lazy"></figure><ul><li><a href="https://twitter.com/colbyfayock">Siga o autor no Twitter</a></li><li><a href="https://youtube.com/colbyfayock">Inscreva-se no canal do autor no YouTube</a></li><li><a href="https://www.colbyfayock.com/newsletter/">✉️ Assine a newsletter do autor</a></li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Como aprender Flutter ]]>
                </title>
                <description>
                    <![CDATA[ O Flutter é uma tendência em tecnologia. Este artigo vai sugerir algumas formas gratuitas e pagas de como aprender a desenvolver aplicações do iOS e do Android com Flutter. Você tem interesse em desenvolvimento de aplicações para dispositivos móveis? Se a sua resposta é sim, você está lendo o artigo ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/como-aprender-flutter/</link>
                <guid isPermaLink="false">63e1a17a043d830559f4120c</guid>
                
                    <category>
                        <![CDATA[ Flutter ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Arthur Fücher ]]>
                </dc:creator>
                <pubDate>Mon, 27 Mar 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/03/how-to-learn-flutter-in-2020.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-learn-flutter-in-2020/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Learn Flutter in 2020</a>
      </p><p>O Flutter é uma tendência em tecnologia. Este artigo vai sugerir algumas formas gratuitas e pagas de como aprender a desenvolver aplicações do iOS e do Android com Flutter.</p><h2 id="voc-tem-interesse-em-desenvolvimento-de-aplica-es-para-dispositivos-m-veis"><strong>Você tem interesse em desenvolvimento de aplicações para dispositivos móveis?</strong></h2><p>Se a sua resposta é sim, você está lendo o artigo correto! Talvez você não conheça sobre Flutter ainda, mas não se preocupe – eu escrevi um artigo sobre o que o Flutter é e por que você deveria aprender sobre ele.</p><blockquote>O Flutter é um framework de interface gratuito e de código aberto criado pelo Google e lançado em maio de 2017. Em poucas palavras, ele permite que você crie aplicações móveis nativas com um único código. Isso significa que você pode usar uma linguagem de programação e uma base de código para criar duas aplicações diferentes (para iOS e para Android). – <a href="https://herewecode.io/blog/what-is-flutter-and-why-you-should-learn-it-in-2020/">What is Flutter and Why You Should Learn It in 2020</a> (em inglês)</blockquote><p>Neste texto, eu compartilho com você dois tipos de conteúdo, gratuito e pago. Eu tentei achar recursos excelentes para apoiar cada tipo de aluno (vídeos, cursos, livros, tutoriais e assim por diante).</p><p>Antes de começarmos, eu também escrevi <a href="https://herewecode.io/blog/should-you-learn-programming-with-paid-or-free-content-and-why/">um artigo sobre como e por que aprender a programar com conteúdo pago ou gratuito</a> (em inglês). Se você não sabe que tipo de conteúdo é melhor para você, eu recomendo que você leia esse artigo antes de ler este.</p><p>Então, vamos começar. Eu tentei explicar cada recurso com um pequeno parágrafo. Todas as informações vieram da descrição do site associado. Como você pode imaginar, eu não tentei todos esses métodos. Se precisar de mais detalhes, eu convido você a visitar o site vinculado.</p><h2 id="conte-do-gratuito"><strong>Conteúdo gratuito</strong></h2><h3 id="v-deos-cursos"><strong>Vídeos/cursos</strong></h3><ul><li><a href="https://www.youtube.com/watch?v=Ej_Pcr4uC2Q">Dart Programming Tutorial - Full Course</a> (em inglês) </li></ul><p>Um curso completo do freeCodeCamp sobre Dart.</p><blockquote>Aprenda a linguagem de programação Dart neste tutorial completo para iniciantes. O Dart é uma linguagem de programação fortemente tipada que é usada no framework Flutter para desenvolvimento de aplicações para dispositivos móveis multiplataforma.</blockquote><ul><li><a href="https://www.youtube.com/watch?v=pTJJsmejUOQ">Flutter Course - Full Tutorial for Beginners (Build iOS and Android Apps)</a> (em inglês)</li></ul><p>Um tutorial completo do freeCodeCamp para iniciantes. Este tutorial foi uma das minhas referências quando comecei com Flutter. É uma excelente introdução e ajuda você a entender os conceitos básicos que serão úteis para você.</p><blockquote>Aprenda Flutter, o framework de desenvolvimento multiplataforma para dispositivos móveis inovador do Google, para criar aplicações para Android e iOS. Neste curso, Nick Manning do <a href="https://fluttercrashcourse.com/">FlutterCrashCourse</a> ensina como começar a usar o Flutter de maneira rápida e eficaz. Nick é engenheiro do Flutter desde 2017 e resumiu esse conhecimento do mundo real em um curso intensivo direto, realista e passo a passo.</blockquote><ul><li><a href="https://www.youtube.com/watch?v=1gDhl4leEzA&amp;feature=youtu.be">Flutter Crash Course</a> (em inglês)</li></ul><p>Curso intensivo de Flutter, da Traversy Media.</p><blockquote>Neste curso intensivo, vamos ver Flutter para a construção de aplicações para dispositivos móveis nativas. Veremos o que é o Flutter, como configurá-lo, construir widgets, widgets stateless e stateful, roteamento e mais.</blockquote><ul><li><a href="https://www.youtube.com/playlist?list=PL4cUxeGkcC9jLYyp2Aoh6hcWuxFDX6PBJ">Flutter Tutorial for Beginners</a> (em inglês)</li></ul><p>Uma lista de vídeos do YouTube sobre Flutter para iniciantes criada por The Net Ninja.</p><blockquote>Você vai descobrir como usar o Flutter (e o Dart) para criar aplicações para Android e iOS do zero. Você vai aprender tudo sobre widgets, pacotes, assets e código assíncrono para criar a aplicação de Horário Mundial (World Time), assim como outras duas miniaplicações para colocar suas habilidades de Flutter em bom uso!</blockquote><ul><li><a href="https://www.youtube.com/playlist?list=PL4cUxeGkcC9j--TKIdkb3ISfRbJeJYQwC">Flutter &amp; Firebase App Build</a> (em inglês)</li></ul><p>Uma lista de vídeos do YouTube sobre Flutter e Firebase criada por The Net Ninja. Quando eu quis usar Firebase na minha primeira aplicação, eu fiz este curso pela primeira vez. Ele era amplo e me deu um bom entendimento sobre como integrar essa ferramenta com o Flutter.</p><blockquote>Você vai aprender como criar uma aplicação em Flutter do zero, usando o Firebase Firestore (um banco de dados sincronizado em tempo real) e a Firebase Authentication. Essa lista é para pessoas que já sabem Flutter.</blockquote><ul><li><a href="https://www.youtube.com/channel/UCSIvrn68cUk8CS8MbtBmBkA/featured">Reso Coder</a> (em inglês)</li></ul><p>Um canal no YouTube dedicado ao Flutter. Reso Coder criou diversos tutoriais explicando como o <em>framework </em>funciona. Diversas ferramentas que você pode usar com Flutter são explicadas para que você possa integrá-las ao seu projeto. Existem inclusive lições sobre arquitetura de código para Flutter.</p><blockquote>O Flutter está mudando a cena do desenvolvimento de aplicações. Não fique para trás! Aprenda como desenvolver para multiplataformas móveis e para a web. Aprenda através de lições orientadas a projetos cuidadosamente elaboradas e aplique imediatamente o que aprender nas suas próprias aplicações.</blockquote><ul><li><a href="https://www.youtube.com/channel/UC2d0BYlqQCdF9lJfydl_02Q/featured">FilledStacks</a> (em inglês)</li></ul><p>Um canal do YouTube dedicado ao Flutter. Você descobrirá diversos tutoriais sobre Flutter, como por exemplo Firebase, interfaces (UI), arquitetura e outros. Também existem aulas de Flutter para celular e para a web.</p><blockquote>Aprenda a criar aplicações para dispositivos móveis de alta qualidade e prontas para produção usando o Flutter.</blockquote><ul><li><a href="https://www.youtube.com/c/CodeWithAndrea">Code With Andrea</a> (em inglês)</li></ul><blockquote>Tutoriais sobre aprender Flutter. Vídeos regulares cobrindo todas as coisas relacionadas ao Flutter, incluindo gerenciamento de estado, leiautes, testes, e mais. Este canal vai ajudar você a se tornar melhor em Flutter.</blockquote><h3 id="google-codelabs"><strong>Google Codelabs</strong></h3><p>Você também pode aprender Flutter com o site <a href="https://codelabs.developers.google.com/?cat=Flutter">Google Codelabs</a>. O site fornece uma experiência prática de programação, baseada em tutoriais. Eu acabo de descobrir este site. Você pode até usá-lo para outras coisas além do Flutter. Ele faz referência a todas as tecnologias do Google com muitos tutoriais para ajudar você a usá-las.</p><blockquote>A maior parte dos codelabs (tutoriais da plataforma) guiarão você em um processo de criar uma pequena aplicação ou adicionar uma nova funcionalidade a uma aplicação existente. Eles cobrem uma grande variedade de tópicos como Android Wear, Google Compute Engine, Projeto Tango e Google APIs no iOS.</blockquote><h3 id="documenta-o"><strong>Documentação</strong></h3><p>Uma coisa que eu adoro no Flutter é a <a href="https://flutter.dev/docs">documentação</a> (em inglês). Ela é completa e pode ser muito útil enquanto você está aprendendo ou desenvolvendo uma aplicação.</p><p>A documentação passa por vários tópicos como:</p><ul><li>Como começar com Flutter</li><li>Todas as widgets disponíveis</li><li>Documentação da API (documentação de bibliotecas)</li><li>Um guia passo a passo com diversos tutoriais</li><li>Alguns exemplos de aplicações</li><li>O canal do Flutter no YouTube</li></ul><h3 id="livros"><strong>Livros</strong></h3><ul><li><a href="https://www.syncfusion.com/ebooks/flutter-succinctly">Flutter Succinctly</a> (em inglês)</li></ul><p>Pesquisando na documentação do Flutter, eu achei este livro. O autor cria uma aplicação completamente funcional, que permite entender claramente o <em>framework</em>. Esse livro é acessível independentemente de você ter ou não a experiência com desenvolvimento móvel.</p><ul><li><a href="https://kodestat.gitbook.io/flutter/">Flutter Tutorials Handbook</a> (em inglês)</li></ul><p>Este livro contém receitas que demonstram como solucionar problemas comuns enquanto se escreve aplicações com o Flutter. Cada método é individual e pode ser usado como referência para ajudar a construir uma aplicação. Pode ser usado em adição à documentação do Flutter. Diversos exemplos são listados aqui.</p><h3 id="herewecode"><strong>HereWeCode</strong></h3><p>Eu planejo criar tutoriais de Flutter em breve. Para ficar sabendo, você pode me seguir no meu <a href="https://www.youtube.com/channel/UCSRuzHhjUaAnBb6_rmlr10g">canal do Youtube</a> e no <a href="https://twitter.com/gaelgthomas/">Twitter</a>. Fique à vontade para me falar quais tópicos e tutoriais você quer ver.</p><h2 id="conte-do-pago"><strong>Conteúdo pago</strong></h2><h3 id="cursos"><strong>Cursos</strong></h3><ul><li><a href="https://www.udemy.com/course/flutter-bootcamp-with-dart/">The Complete 2020 Flutter Development Bootcamp with Dart</a> (em inglês)</li></ul><blockquote>Este Bootcamp de Flutter foi criado oficialmente com a colaboração do time de Flutter do Google. Você vai aprender do zero e criar algumas aplicações. O curso inclui mais de 27 horas de tutoriais em vídeo e projetos. Mesmo que tenha zero de experiência com programação, você pode começar aqui.</blockquote><ul><li><a href="https://www.udemy.com/course/learn-flutter-dart-to-build-ios-android-apps/">Learn Flutter &amp; Dart to Build iOS &amp; Android Apps [2020]</a> (em inglês)</li></ul><blockquote>Um guia completo sobre o SDK do Flutter e o sobre o framework do Flutter para criar aplicações nativas para iOS e Android. Conhecimento básico em linguagem de programação ajuda, mas não é obrigatório. Com este curso, você aprenderá Flutter não somente na teoria, mas também construindo uma aplicação completa e realista. Ela usará recursos como o Google Maps, câmera, animações e mais.</blockquote><ul><li><a href="https://www.udemy.com/course/dart-and-flutter-the-complete-developers-guide/?ranMID=39197&amp;ranEAID=R7BSs79ua1Y&amp;ranSiteID=R7BSs79ua1Y-SpCxrCZ5bX.j71JLQLZ2Bg&amp;LSNPUBID=R7BSs79ua1Y">Dart and Flutter: The Complete Developer's Guide</a> (em inglês)</li></ul><blockquote>Tudo o que você precisa saber para construir aplicações para dispositivos móveis com Flutter e Dart, incluindo RxDart e animações! Experiência prévia com JavaScript, Java, Python ou similar é requerida. Neste curso, você vai entender como projetar, criar animações e arquitetura de uma aplicação com Flutter. Este curso parece ser mais avançado que outros. Você vai aprender habilidades como usar o armazenamento off-line, otimizar solicitações de rede, usar padrões de design avançados, e mais.</blockquote><ul><li><a href="https://www.udemy.com/course/flutter-firebase-build-a-complete-app-for-ios-android/?couponCode=JAN-20">Flutter &amp; Firebase: Build a Complete App for IOS &amp; Android</a> (em inglês)</li></ul><blockquote>Neste curso, você vai construir uma aplicação completa e real para iOS e Android, usando Dart, Flutter e Firebase. Aqui, você começa com o básico. O curso inclui uma introdução completa ao Dart e ao Flutter. Conforme for progredindo, o curso apresentará tópicos mais avançados, com ênfase especial em escrever código pronto para produção, para que você aprenda a construir aplicações robustas que escalem. Conceitos importantes são explicados com diagramas claros. Ao final deste curso, você será uma pessoa desenvolvedora de Flutter competente.</blockquote><h3 id="mais-livros">Mais livros</h3><ul><li><a href="https://www.amazon.com/dp/1092297375?creativeASIN=1092297375&amp;imprToken=3roEoQsoEHSkrt2BzcZW9g&amp;slotNum=33&amp;tag=reactdom-20&amp;linkCode=osi&amp;th=1&amp;psc=1&amp;keywords=flutter%20programming%20books">Learn Google Flutter Fast: 65 Example Apps</a> (em inglês)</li></ul><p>Um livro completo sobre Flutter. Aprenda Flutter através de 65 miniaplicações de exemplo. Você aprenderá a criar tudo, desde a aplicação mais básica até a avançada com arquitetura complexa. No final do livro, o autor explica como publicar sua aplicação nas lojas.<br></p><ul><li><a href="https://www.amazon.com/Beginning-Flutter-Hands-Guide-Development/dp/1119550823/ref=sr_1_5?keywords=Flutter&amp;qid=1579668628&amp;sr=8-5">Beginning Flutter: A Hands-On Guide to App Development 1st Edition</a> (em inglês)</li></ul><p>Esta é uma excelente introdução ao Flutter para que você possa começar rápido e aprender os princípios fundamentais. Se você prefere aprender através dos livros, não hesite!</p><blockquote>Beginning Flutter: A Hands-On Guide to App Development 1st Edition é um recurso essencial tanto para desenvolvedores experientes quanto para novatos interessados em começar com Flutter. É uma introdução ao Flutter, passo a passo. Este livro foi escrito por Marco L. Napoli, CEO da Pixolini Inc. e experiente desenvolvedor de aplicações para dispositivos móveis, web e desktop. Ele tem um forte histórico comprovado no desenvolvimento de sistemas visualmente elegantes e simples de usar.</blockquote><h2 id="conclus-o"><strong>Conclusão</strong></h2><p>Você conhece outros recursos para aprender Flutter? Envie uma mensagem para o autor pelo Twitter para que ele os adicione por lá.</p><p>Fique à vontade para compartilhar este artigo se gostou dele.</p><p>Se quiser mais conteúdo do gênero, pode <a href="https://twitter.com/gaelgthomas/">seguir o autor no Twitter</a>, onde ele escreve sobre desenvolvimento para a web, autoaperfeiçoamento e minha jornada como desenvolvedor <em>full-stack</em>!</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
