<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos inputmode mobile html5 - Web-Zoneware</title>
	<atom:link href="https://webzoneware.com/tag/inputmode-mobile-html5/feed/" rel="self" type="application/rss+xml" />
	<link>https://webzoneware.com/tag/inputmode-mobile-html5/</link>
	<description>Mais do que apenas uma academia web.</description>
	<lastBuildDate>Wed, 21 Oct 2026 03:09:54 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://webzoneware.com/wp-content/uploads/icon-webzoneware-150x150.png</url>
	<title>Arquivos inputmode mobile html5 - Web-Zoneware</title>
	<link>https://webzoneware.com/tag/inputmode-mobile-html5/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Novos Tipos de Input no HTML5: Guia Completo &#124; Web Academy</title>
		<link>https://webzoneware.com/web-academy/curso-html/novos-tipos-de-input-html5/</link>
					<comments>https://webzoneware.com/web-academy/curso-html/novos-tipos-de-input-html5/#respond</comments>
		
		<dc:creator><![CDATA[Web-Zoneware]]></dc:creator>
		<pubDate>Wed, 21 Oct 2026 03:09:54 +0000</pubDate>
				<category><![CDATA[Curso de HTML & HTML5]]></category>
		<category><![CDATA[input email date html5]]></category>
		<category><![CDATA[inputmode mobile html5]]></category>
		<category><![CDATA[novos tipos de input html5]]></category>
		<category><![CDATA[tipos de campos html5]]></category>
		<category><![CDATA[validacao nativa formulario html]]></category>
		<category><![CDATA[web academy]]></category>
		<guid isPermaLink="false">https://webzoneware.com/?p=29324</guid>

					<description><![CDATA[<p>Antes do advento do HTML5, a coleta de dados na web era rudimentar: praticamente qualquer campo de formulário resumia-se ao genérico type="text" ou type="password". Se uma aplicação necessitava de um e-mail válido, de uma data de agendamento ou de um número de telefone, o desenvolvedor era obrigado a importar bibliotecas externas pesadas e criar scripts [&#8230;]</p>
<p>O post <a href="https://webzoneware.com/web-academy/curso-html/novos-tipos-de-input-html5/">Novos Tipos de Input no HTML5: Guia Completo | Web Academy</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wzw-lesson-lead">Antes do advento do HTML5, a coleta de dados na web era rudimentar: praticamente qualquer campo de formulário resumia-se ao genérico <code>type="text"</code> ou <code>type="password"</code>. Se uma aplicação necessitava de um e-mail válido, de uma data de agendamento ou de um número de telefone, o desenvolvedor era obrigado a importar bibliotecas externas pesadas e criar scripts de validação complexos. O HTML5 revolucionou a experiência do usuário ao introduzir <strong>mais de 13 novos tipos semânticos de entrada para o elemento &lt;input&gt;</strong>. Além de validarem os dados nativamente no cliente, esses tipos instruem os navegadores de smartphones a <strong>abrir o teclado virtual mais adequado</strong>, reduzindo o atrito de digitação e aumentando as conversões.</p>
<h2>1. O Fim do Input Genérico: Por Que Usar Tipos Específicos?</h2>
<p>Utilizar o tipo correto de entrada não é apenas uma boa prática semântica; é uma exigência crítica de usabilidade móvel e acessibilidade:</p>
<ul>
<li><strong>Abertura de Teclados Especializados em Celulares:</strong> Ao tocar em um campo <code>type="email"</code>, o teclado do smartphone exibe imediatamente as teclas <code>@</code> e <code>.com</code>. Ao tocar em <code>type="tel"</code> ou <code>type="number"</code>, o teclado numérico de discagem é ativado sem exigir que o usuário alterne manualmente entre telas de letras e números.</li>
<li><strong>Validação Nativa sem JavaScript:</strong> O navegador impede o envio do formulário caso o dado digitado não coincida com o formato esperado (por exemplo, avisando: <em>&#8220;Por favor, inclua um &#8216;@&#8217; no endereço de e-mail&#8221;</em>).</li>
<li><strong>Controles Gráficos Integrados ao Sistema Operacional:</strong> Campos como <code>type="date"</code> e <code>type="color"</code> abrem calendários e paletas de cores nativas do iOS, Android e Windows sem a necessidade de plugins pesados.</li>
</ul>
<h2>2. Guia dos Principais Novos Tipos de Entrada</h2>
<p>Conheça os comportamentos, validações e teclados acionados por cada tipo de entrada do HTML5:</p>
<div class="wzw-table-responsive">
<table class="wzw-table">
<thead>
<tr>
<th style="width: 170px;">Tipo de Entrada</th>
<th style="width: 200px;">Validação Nativa</th>
<th style="width: 220px;">Comportamento em Smartphones</th>
<th>Atributos Chave</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>type="email"</code></td>
<td>Exige formato de e-mail válido (usuário@domínio).</td>
<td>Abre teclado com as teclas <code>@</code> e <code>.</code> em destaque.</td>
<td><code>multiple</code> (permite vários e-mails separados por vírgula).</td>
</tr>
<tr>
<td><code>type="date"</code></td>
<td>Garante o formato ISO 8601 (<code>AAAA-MM-DD</code>).</td>
<td>Abre a roleta de calendário nativa do sistema móvel.</td>
<td><code>min</code>, <code>max</code> (bloqueia datas passadas ou futuras).</td>
</tr>
<tr>
<td><code>type="tel"</code></td>
<td>Sem regex rígido (aceita traços, parênteses e código de país).</td>
<td>Abre o teclado numérico de chamada telefônica.</td>
<td><code>pattern="[0-9]{2} [0-9]{5}-[0-9]{4}"</code>.</td>
</tr>
<tr>
<td><code>type="number"</code></td>
<td>Bloqueia a inserção de letras; valida valores numéricos.</td>
<td>Abre o teclado de dígitos com pontos e vírgulas.</td>
<td><code>min</code>, <code>max</code>, <code>step</code> (define o incremento).</td>
</tr>
<tr>
<td><code>type="url"</code></td>
<td>Exige protocolo completo (<code>https://</code> ou <code>http://</code>).</td>
<td>Abre teclado com atalhos de barra (<code>/</code>) e extensões (<code>.com</code>).</td>
<td><code>placeholder="https://exemplo.com"</code>.</td>
</tr>
<tr>
<td><code>type="color"</code></td>
<td>Retorna um código hexadecimal de 6 dígitos (<code>#RRGGBB</code>).</td>
<td>Abre o seletor visual nativo de cores (Colorpicker).</td>
<td><code>value="#0284c7"</code> (define a cor inicial).</td>
</tr>
<tr>
<td><code>type="range"</code></td>
<td>Retorna um valor dentro de um intervalo contínuo.</td>
<td>Exibe uma barra deslizante sensível ao toque (Slider).</td>
<td><code>min="0"</code>, <code>max="100"</code>, <code>step="5"</code>.</td>
</tr>
<tr>
<td><code>type="search"</code></td>
<td>Campo otimizado para consultas.</td>
<td>Exibe o botão de &#8220;Buscar&#8221; no teclado e um ícone &#8220;X&#8221; para limpar o campo.</td>
<td><code>autocomplete="on"</code>.</td>
</tr>
<tr>
<td><code>type="time"</code></td>
<td>Exige formato de horário (<code>HH:MM</code> de 24 horas).</td>
<td>Abre a roleta de seleção de horas e minutos.</td>
<td><code>min="08:00"</code>, <code>max="18:00"</code>.</td>
</tr>
</tbody>
</table>
</div>
<h2>3. O Atributo Especial inputmode: Ajuste Fino para Telas Sensíveis ao Toque</h2>
<p>Em alguns casos, usar <code>type="number"</code> pode ser inconveniente no desktop porque o navegador desenha setinhas de incremento (steppers) dentro do campo — algo indesejado para números de cartão de crédito, CEP ou CPF.</p>
<p>Para resolver isso, o HTML5 introduziu o atributo <strong><code>inputmode</code></strong>. Ele permite manter o campo como texto comum, mas forçar a abertura do teclado mobile desejado:</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span>HTML5 — Uso de inputmode para Teclados Numéricos sem Setinhas</span><br />
        <span>inputmode-exemplo.html</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-17006" data-lang="code">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">HTML</span>
                                <span class="wzw-ide-lines-count">7 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-17006', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-17006', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-comment">&lt;!-- Campo de CEP: texto comum, mas abre teclado numérico no celular --&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;label</span> <span class="wzw-tk-attr">for</span>=<span class="wzw-tk-str">&quot;cep&quot;</span><span class="wzw-tk-tag">&gt;</span>CEP de Entrega:<span class="wzw-tk-tag">&lt;/label&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;input</span> <span class="wzw-tk-attr">type</span>=<span class="wzw-tk-str">&quot;text&quot;</span> <span class="wzw-tk-attr">id</span>=<span class="wzw-tk-str">&quot;cep&quot;</span> <span class="wzw-tk-attr">name</span>=<span class="wzw-tk-str">&quot;cep&quot;</span> <span class="wzw-tk-attr">inputmode</span>=<span class="wzw-tk-str">&quot;numeric&quot;</span> <span class="wzw-tk-attr">maxlength</span>=<span class="wzw-tk-str">&quot;9&quot;</span> <span class="wzw-tk-attr">placeholder</span>=<span class="wzw-tk-str">&quot;00000-000&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">&lt;!-- Campo de Código de Autenticação 2FA --&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;label</span> <span class="wzw-tk-attr">for</span>=<span class="wzw-tk-str">&quot;token&quot;</span><span class="wzw-tk-tag">&gt;</span>Código de Segurança (6 dígitos):<span class="wzw-tk-tag">&lt;/label&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;input</span> <span class="wzw-tk-attr">type</span>=<span class="wzw-tk-str">&quot;text&quot;</span> <span class="wzw-tk-attr">id</span>=<span class="wzw-tk-str">&quot;token&quot;</span> <span class="wzw-tk-attr">name</span>=<span class="wzw-tk-str">&quot;token&quot;</span> <span class="wzw-tk-attr">inputmode</span>=<span class="wzw-tk-str">&quot;numeric&quot;</span> <span class="wzw-tk-attr">pattern</span>=<span class="wzw-tk-str">&quot;[0-9]{6}&quot;</span> <span class="wzw-tk-attr">autocomplete</span>=<span class="wzw-tk-str">&quot;one-time-code&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>&lt;!-- Campo de CEP: texto comum, mas abre teclado numérico no celular --&gt;
&lt;label for=&quot;cep&quot;&gt;CEP de Entrega:&lt;/label&gt;
&lt;input type=&quot;text&quot; id=&quot;cep&quot; name=&quot;cep&quot; inputmode=&quot;numeric&quot; maxlength=&quot;9&quot; placeholder=&quot;00000-000&quot;&gt;

&lt;!-- Campo de Código de Autenticação 2FA --&gt;
&lt;label for=&quot;token&quot;&gt;Código de Segurança (6 dígitos):&lt;/label&gt;
&lt;input type=&quot;text&quot; id=&quot;token&quot; name=&quot;token&quot; inputmode=&quot;numeric&quot; pattern=&quot;[0-9]{6}&quot; autocomplete=&quot;one-time-code&quot;&gt;</textarea>
        </div>
    </div>
    
</div>
<h2>4. Estilizando Estados de Validação com Pseudo-Classes CSS</h2>
<p>Quando você utiliza os novos tipos de entrada e atributos como <code>required</code>, o CSS permite aplicar estilos visuais imediatos conforme o usuário digita:</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span>CSS3 — Feedback Visual Imediato com :valid e :invalid</span><br />
        <span>validacao-estilos.css</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-52965" data-lang="code">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">CSS</span>
                                <span class="wzw-ide-lines-count">10 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-52965', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-52965', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-comment">/* Campo que foi preenchido de forma válida */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-attr">input</span>:valid {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-color</span>: <span class="wzw-tk-num">#10b981</span>; /* Verde esmeralda */</span>
<span class="wzw-code-line">}</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-comment">/* Campo que contém dados incorretos após a interação */</span></span>
<span class="wzw-code-line"><span class="wzw-tk-attr">input</span>:user-invalid {</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">border-color</span>: <span class="wzw-tk-num">#ef4444</span>; /* Vermelho rubi */</span>
<span class="wzw-code-line">    <span class="wzw-tk-attr">background-color</span>: rgba(239, 68, 68, 0.05);</span>
<span class="wzw-code-line">}</span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>/* Campo que foi preenchido de forma válida */
input:valid {
    border-color: #10b981; /* Verde esmeralda */
}

/* Campo que contém dados incorretos após a interação */
input:user-invalid {
    border-color: #ef4444; /* Vermelho rubi */
    background-color: rgba(239, 68, 68, 0.05);
}</textarea>
        </div>
    </div>
    
</div>
<h2>5. Exemplo Prático: Formulário Moderno de Agendamento no Playground IDE</h2>
<p>O exemplo abaixo reúne múltiplos tipos de entrada do HTML5 em um formulário responsivo de agendamento de consultoria:</p>
<div class="wzw-code-wrapper">
<div class="wzw-code-header">
        <span>HTML5 + CSS3 — Formulário de Agendamento com Novos Tipos de Entrada</span><br />
        <span>formulario-agendamento.html</span>
    </div>
    <div class="wzw-ide-card" id="wzw-code-21946" data-lang="code">
        <div class="wzw-ide-header">
            <div class="wzw-ide-dots" aria-hidden="true">
                <span class="wzw-dot wzw-dot-red"></span>
                <span class="wzw-dot wzw-dot-amber"></span>
                <span class="wzw-dot wzw-dot-green"></span>
            </div>
            <div class="wzw-ide-meta">
                <span class="wzw-ide-lang-badge">HTML</span>
                                <span class="wzw-ide-lines-count">126 linhas</span>
            </div>
            <div class="wzw-ide-actions">
                <button type="button" class="wzw-ide-btn wzw-ide-wrap-btn" onclick="wzwToggleCodeWrap('wzw-code-21946', this)" title="Alternar quebra automática de linhas">
                    ⇄ Wrap
                </button>
                <button type="button" class="wzw-ide-btn wzw-ide-copy-btn" onclick="wzwCopyCodeBlock('wzw-code-21946', this)" aria-label="Copiar código para a área de transferência">
                    📋 <span class="wzw-copy-text">Copiar Código</span>
                </button>
            </div>
        </div>
        <div class="wzw-ide-body">
            <pre class="wzw-ide-pre" tabindex="0"><code class="wzw-ide-code"><span class="wzw-code-line"><span class="wzw-tk-tag">&lt;!DOCTYPE</span><span class="wzw-tk-kw"> html</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;html</span> <span class="wzw-tk-attr">lang</span>=<span class="wzw-tk-str">&quot;pt-BR&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;head&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;meta</span> <span class="wzw-tk-attr">charset</span>=<span class="wzw-tk-str">&quot;UTF-8&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;meta</span> <span class="wzw-tk-attr">name</span>=<span class="wzw-tk-str">&quot;viewport&quot;</span> <span class="wzw-tk-attr">content</span>=<span class="wzw-tk-str">&quot;width=device-width, initial-scale=1.0&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;title&gt;</span>Agendamento com Novos Inputs HTML5<span class="wzw-tk-tag">&lt;/title&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;style&gt;</span></span>
<span class="wzw-code-line">        body {</span>
<span class="wzw-code-line">            font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif;</span>
<span class="wzw-code-line">            background: #0f172a;</span>
<span class="wzw-code-line">            color: #f8fafc;</span>
<span class="wzw-code-line">            padding: 30px;</span>
<span class="wzw-code-line">            margin: 0;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        .card-form {</span>
<span class="wzw-code-line">            max-width: 580px;</span>
<span class="wzw-code-line">            margin: 0 auto;</span>
<span class="wzw-code-line">            background: #1e293b;</span>
<span class="wzw-code-line">            border: 1px solid #334155;</span>
<span class="wzw-code-line">            border-radius: 16px;</span>
<span class="wzw-code-line">            padding: 32px;</span>
<span class="wzw-code-line">            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        .campo {</span>
<span class="wzw-code-line">            margin-bottom: 20px;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        label {</span>
<span class="wzw-code-line">            display: block;</span>
<span class="wzw-code-line">            font-size: 13px;</span>
<span class="wzw-code-line">            font-weight: 700;</span>
<span class="wzw-code-line">            color: #94a3b8;</span>
<span class="wzw-code-line">            margin-bottom: 6px;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        input[type=&quot;text&quot;],</span>
<span class="wzw-code-line">        input[type=&quot;email&quot;],</span>
<span class="wzw-code-line">        input[type=&quot;tel&quot;],</span>
<span class="wzw-code-line">        input[type=&quot;date&quot;],</span>
<span class="wzw-code-line">        input[type=&quot;time&quot;] {</span>
<span class="wzw-code-line">            width: 100%;</span>
<span class="wzw-code-line">            padding: 10px 14px;</span>
<span class="wzw-code-line">            background: #0b1120;</span>
<span class="wzw-code-line">            border: 1px solid #334155;</span>
<span class="wzw-code-line">            border-radius: 8px;</span>
<span class="wzw-code-line">            color: #f8fafc;</span>
<span class="wzw-code-line">            font-size: 14px;</span>
<span class="wzw-code-line">            box-sizing: border-box;</span>
<span class="wzw-code-line">            transition: border-color 0.15s ease;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        input:focus {</span>
<span class="wzw-code-line">            outline: none;</span>
<span class="wzw-code-line">            border-color: #38bdf8;</span>
<span class="wzw-code-line">            box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.15);</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        .linha-dupla {</span>
<span class="wzw-code-line">            display: grid;</span>
<span class="wzw-code-line">            grid-template-columns: 1fr 1fr;</span>
<span class="wzw-code-line">            gap: 16px;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        .btn-enviar {</span>
<span class="wzw-code-line">            width: 100%;</span>
<span class="wzw-code-line">            background: #0284c7;</span>
<span class="wzw-code-line">            color: white;</span>
<span class="wzw-code-line">            border: none;</span>
<span class="wzw-code-line">            padding: 12px;</span>
<span class="wzw-code-line">            border-radius: 8px;</span>
<span class="wzw-code-line">            font-size: 16px;</span>
<span class="wzw-code-line">            font-weight: 700;</span>
<span class="wzw-code-line">            cursor: pointer;</span>
<span class="wzw-code-line">            transition: all 0.2s ease;</span>
<span class="wzw-code-line">            margin-top: 10px;</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        .btn-enviar:hover {</span>
<span class="wzw-code-line">            background: #0369a1;</span>
<span class="wzw-code-line">            box-shadow: 0 4px 15px rgba(2, 132, 199, 0.4);</span>
<span class="wzw-code-line">        }</span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;/style&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/head&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;body&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;main</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;card-form&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;header&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;h2</span> <span class="wzw-tk-attr">style</span>=<span class="wzw-tk-str">&quot;margin-top:0; color:#38bdf8;&quot;</span><span class="wzw-tk-tag">&gt;</span>Agendar Consultoria Web<span class="wzw-tk-tag">&lt;/h2&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;p</span> <span class="wzw-tk-attr">style</span>=<span class="wzw-tk-str">&quot;color:#94a3b8; font-size:14px; margin-bottom:24px;&quot;</span><span class="wzw-tk-tag">&gt;</span>Preencha os dados com suporte aos validadores nativos do HTML5:<span class="wzw-tk-tag">&lt;/p&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;/header&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;form</span> <span class="wzw-tk-attr">action</span>=<span class="wzw-tk-str">&quot;#&quot;</span> <span class="wzw-tk-attr">method</span>=<span class="wzw-tk-str">&quot;POST&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;campo&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;label</span> <span class="wzw-tk-attr">for</span>=<span class="wzw-tk-str">&quot;nome&quot;</span><span class="wzw-tk-tag">&gt;</span>Nome Completo:<span class="wzw-tk-tag">&lt;/label&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;input</span> <span class="wzw-tk-attr">type</span>=<span class="wzw-tk-str">&quot;text&quot;</span> <span class="wzw-tk-attr">id</span>=<span class="wzw-tk-str">&quot;nome&quot;</span> <span class="wzw-tk-attr">name</span>=<span class="wzw-tk-str">&quot;nome&quot;</span> <span class="wzw-tk-attr">required</span> <span class="wzw-tk-attr">placeholder</span>=<span class="wzw-tk-str">&quot;Digite seu nome&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;campo&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;label</span> <span class="wzw-tk-attr">for</span>=<span class="wzw-tk-str">&quot;email&quot;</span><span class="wzw-tk-tag">&gt;</span>E-mail Corporativo:<span class="wzw-tk-tag">&lt;/label&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;input</span> <span class="wzw-tk-attr">type</span>=<span class="wzw-tk-str">&quot;email&quot;</span> <span class="wzw-tk-attr">id</span>=<span class="wzw-tk-str">&quot;email&quot;</span> <span class="wzw-tk-attr">name</span>=<span class="wzw-tk-str">&quot;email&quot;</span> <span class="wzw-tk-attr">required</span> <span class="wzw-tk-attr">placeholder</span>=<span class="wzw-tk-str">&quot;seu@empresa.com&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;linha-dupla&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;campo&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                    <span class="wzw-tk-tag">&lt;label</span> <span class="wzw-tk-attr">for</span>=<span class="wzw-tk-str">&quot;data&quot;</span><span class="wzw-tk-tag">&gt;</span>Data Desejada:<span class="wzw-tk-tag">&lt;/label&gt;</span></span>
<span class="wzw-code-line">                    <span class="wzw-tk-tag">&lt;input</span> <span class="wzw-tk-attr">type</span>=<span class="wzw-tk-str">&quot;date&quot;</span> <span class="wzw-tk-attr">id</span>=<span class="wzw-tk-str">&quot;data&quot;</span> <span class="wzw-tk-attr">name</span>=<span class="wzw-tk-str">&quot;data&quot;</span> <span class="wzw-tk-attr">required</span> <span class="wzw-tk-attr">min</span>=<span class="wzw-tk-str">&quot;2026-10-21&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;campo&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                    <span class="wzw-tk-tag">&lt;label</span> <span class="wzw-tk-attr">for</span>=<span class="wzw-tk-str">&quot;horario&quot;</span><span class="wzw-tk-tag">&gt;</span>Horário:<span class="wzw-tk-tag">&lt;/label&gt;</span></span>
<span class="wzw-code-line">                    <span class="wzw-tk-tag">&lt;input</span> <span class="wzw-tk-attr">type</span>=<span class="wzw-tk-str">&quot;time&quot;</span> <span class="wzw-tk-attr">id</span>=<span class="wzw-tk-str">&quot;horario&quot;</span> <span class="wzw-tk-attr">name</span>=<span class="wzw-tk-str">&quot;horario&quot;</span> <span class="wzw-tk-attr">required</span> <span class="wzw-tk-attr">min</span>=<span class="wzw-tk-str">&quot;09:00&quot;</span> <span class="wzw-tk-attr">max</span>=<span class="wzw-tk-str">&quot;18:00&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;div</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;campo&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;label</span> <span class="wzw-tk-attr">for</span>=<span class="wzw-tk-str">&quot;telefone&quot;</span><span class="wzw-tk-tag">&gt;</span>WhatsApp / Celular:<span class="wzw-tk-tag">&lt;/label&gt;</span></span>
<span class="wzw-code-line">                <span class="wzw-tk-tag">&lt;input</span> <span class="wzw-tk-attr">type</span>=<span class="wzw-tk-str">&quot;tel&quot;</span> <span class="wzw-tk-attr">id</span>=<span class="wzw-tk-str">&quot;telefone&quot;</span> <span class="wzw-tk-attr">name</span>=<span class="wzw-tk-str">&quot;telefone&quot;</span> <span class="wzw-tk-attr">inputmode</span>=<span class="wzw-tk-str">&quot;tel&quot;</span> <span class="wzw-tk-attr">placeholder</span>=<span class="wzw-tk-str">&quot;(11) 99999-9999&quot;</span><span class="wzw-tk-tag">&gt;</span></span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;/div&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line">            <span class="wzw-tk-tag">&lt;button</span> <span class="wzw-tk-attr">type</span>=<span class="wzw-tk-str">&quot;submit&quot;</span> <span class="wzw-tk-attr">class</span>=<span class="wzw-tk-str">&quot;btn-enviar&quot;</span><span class="wzw-tk-tag">&gt;</span>Confirmar Agendamento<span class="wzw-tk-tag">&lt;/button&gt;</span></span>
<span class="wzw-code-line">        <span class="wzw-tk-tag">&lt;/form&gt;</span></span>
<span class="wzw-code-line">    <span class="wzw-tk-tag">&lt;/main&gt;</span></span>
<span class="wzw-code-line">&nbsp;</span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/body&gt;</span></span>
<span class="wzw-code-line"><span class="wzw-tk-tag">&lt;/html&gt;</span></span>
</code></pre>
            <textarea class="wzw-ide-raw" aria-hidden="true" tabindex="-1" readonly>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;pt-BR&quot;&gt;
&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;Agendamento com Novos Inputs HTML5&lt;/title&gt;
    &lt;style&gt;
        body {
            font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif;
            background: #0f172a;
            color: #f8fafc;
            padding: 30px;
            margin: 0;
        }

        .card-form {
            max-width: 580px;
            margin: 0 auto;
            background: #1e293b;
            border: 1px solid #334155;
            border-radius: 16px;
            padding: 32px;
            box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);
        }

        .campo {
            margin-bottom: 20px;
        }

        label {
            display: block;
            font-size: 13px;
            font-weight: 700;
            color: #94a3b8;
            margin-bottom: 6px;
        }

        input[type=&quot;text&quot;],
        input[type=&quot;email&quot;],
        input[type=&quot;tel&quot;],
        input[type=&quot;date&quot;],
        input[type=&quot;time&quot;] {
            width: 100%;
            padding: 10px 14px;
            background: #0b1120;
            border: 1px solid #334155;
            border-radius: 8px;
            color: #f8fafc;
            font-size: 14px;
            box-sizing: border-box;
            transition: border-color 0.15s ease;
        }

        input:focus {
            outline: none;
            border-color: #38bdf8;
            box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.15);
        }

        .linha-dupla {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 16px;
        }

        .btn-enviar {
            width: 100%;
            background: #0284c7;
            color: white;
            border: none;
            padding: 12px;
            border-radius: 8px;
            font-size: 16px;
            font-weight: 700;
            cursor: pointer;
            transition: all 0.2s ease;
            margin-top: 10px;
        }

        .btn-enviar:hover {
            background: #0369a1;
            box-shadow: 0 4px 15px rgba(2, 132, 199, 0.4);
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

    &lt;main class=&quot;card-form&quot;&gt;
        &lt;header&gt;
            &lt;h2 style=&quot;margin-top:0; color:#38bdf8;&quot;&gt;Agendar Consultoria Web&lt;/h2&gt;
            &lt;p style=&quot;color:#94a3b8; font-size:14px; margin-bottom:24px;&quot;&gt;Preencha os dados com suporte aos validadores nativos do HTML5:&lt;/p&gt;
        &lt;/header&gt;

        &lt;form action=&quot;#&quot; method=&quot;POST&quot;&gt;
            &lt;div class=&quot;campo&quot;&gt;
                &lt;label for=&quot;nome&quot;&gt;Nome Completo:&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;nome&quot; name=&quot;nome&quot; required placeholder=&quot;Digite seu nome&quot;&gt;
            &lt;/div&gt;

            &lt;div class=&quot;campo&quot;&gt;
                &lt;label for=&quot;email&quot;&gt;E-mail Corporativo:&lt;/label&gt;
                &lt;input type=&quot;email&quot; id=&quot;email&quot; name=&quot;email&quot; required placeholder=&quot;seu@empresa.com&quot;&gt;
            &lt;/div&gt;

            &lt;div class=&quot;linha-dupla&quot;&gt;
                &lt;div class=&quot;campo&quot;&gt;
                    &lt;label for=&quot;data&quot;&gt;Data Desejada:&lt;/label&gt;
                    &lt;input type=&quot;date&quot; id=&quot;data&quot; name=&quot;data&quot; required min=&quot;2026-10-21&quot;&gt;
                &lt;/div&gt;
                &lt;div class=&quot;campo&quot;&gt;
                    &lt;label for=&quot;horario&quot;&gt;Horário:&lt;/label&gt;
                    &lt;input type=&quot;time&quot; id=&quot;horario&quot; name=&quot;horario&quot; required min=&quot;09:00&quot; max=&quot;18:00&quot;&gt;
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div class=&quot;campo&quot;&gt;
                &lt;label for=&quot;telefone&quot;&gt;WhatsApp / Celular:&lt;/label&gt;
                &lt;input type=&quot;tel&quot; id=&quot;telefone&quot; name=&quot;telefone&quot; inputmode=&quot;tel&quot; placeholder=&quot;(11) 99999-9999&quot;&gt;
            &lt;/div&gt;

            &lt;button type=&quot;submit&quot; class=&quot;btn-enviar&quot;&gt;Confirmar Agendamento&lt;/button&gt;
        &lt;/form&gt;
    &lt;/main&gt;

&lt;/body&gt;
&lt;/html&gt;</textarea>
        </div>
    </div>
    
<div class="wzw-playground-action-bar">
        <span class="wzw-playground-desc">Teste este formulário interativo e experimente as validações nativas:</span><br />
        <a href="/web-academy/playground-web/" class="wzw-btn-playground" target="_blank" rel="noopener">⚡ Testar no Playground IDE</a>
    </div>
</div>
<h2>6. Boas Práticas de Engenharia e Segurança</h2>
<ul>
<li><strong>Validação no Cliente Nunca Substitui o Backend:</strong> A validação nativa do HTML5 serve para proporcionar uma experiência fluida ao usuário. No entanto, usuários maliciosos podem desativá-la facilmente via DevTools ou enviar dados via cURL. Sempre valide e sanitize todos os dados novamente no servidor (PHP, Node.js, Python).</li>
<li><strong>Sempre Defina o Atributo name:</strong> Campos sem o atributo <code>name</code> não são incluídos no pacote de dados enviado na requisição HTTP.</li>
<li><strong>Formatadores de Código:</strong> Para manter a sintaxe de seus formulários limpa e sem tags mal-fechadas, utilize o <a href="/web-ferramentas/html-cleaner/" target="_blank" rel="noopener">HTML Cleaner &#038; Formatador</a> do Web-ZoneWare.</li>
</ul>
<div class="wzw-callout wzw-callout-pro">
    <span class="wzw-callout-icon">🚀</span></p>
<div class="wzw-callout-text">
        <strong>Próximo Passo Didático:</strong> Na <strong>Lição 32: Novos Elementos de Formulário</strong>, conheceremos as tags estruturais que acompanham os inputs: <code>&lt;datalist&gt;</code> (autocompletar nativo sem JavaScript), <code>&lt;output&gt;</code> para cálculos dinâmicos, <code>&lt;progress&gt;</code> para barras de carregamento e <code>&lt;meter&gt;</code> para indicadores de nível e capacidade.
    </div>
</div>
<p>O post <a href="https://webzoneware.com/web-academy/curso-html/novos-tipos-de-input-html5/">Novos Tipos de Input no HTML5: Guia Completo | Web Academy</a> apareceu primeiro em <a href="https://webzoneware.com">Web-Zoneware</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://webzoneware.com/web-academy/curso-html/novos-tipos-de-input-html5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
