--- title: slug: Web/HTML/Element/button tags: - Elemento - Formulários HTML - HTML - Intermediário - Referência(2) - Web - formulários translation_of: Web/HTML/Element/button --- Sumário O Elemento HTML <button> representa um botão clicável. Categorias de conteúdo Conteúdo de fluxo, conteúdo fraseado, Conteúdo iterativo, listado, rotulável, e elemento enviável associado a formulário, conteúdo palpável. Conteúdo permitido Conteúdo fraseado. Omissão de TagNenhuma, as tags de abertura e fechamento são obrigatórias. Elementos pai permitidos Qualquer elemento que aceite conteúdo fraseado. Interface DOM {{domxref("HTMLButtonElement")}} Tipo de elemento Inline Atributos Esse elemento inclui os atributos globais. {{htmlattrdef("autofocus")}} {{HTMLVersionInline(5)}} Esse atributo booleano permite-o especificar que o botão possuirá o foco de entrada assim que a página carrega, a menos que o usuário sobrecreva esse comportamento digitanto um controle diferente. Apenas um elemento de um documento associado a um formulário pode ter esse atributo específico. {{htmlattrdef("autocomplete")}} {{non-standard_inline}} O uso desse atributo em um {{HTMLElement("button")}} não está padronizado nem dentro das especificações do Firefox. Por padrão, diferente de outros navegadores, o Firefox persiste com o estado dinâmico desativado de um {{HTMLElement("button")}} nas páginas carregadas. Definir o valor desse atributo para off (ex: autocomplete="off") desabilita esse recurso. Veja {{bug(654072)}}. {{htmlattrdef("disabled")}} Esse atributo booleano indica que o usuário não poderá interagir com o botão. Se esse atributo não for especificado, o botão herdará a configuração do elemento que o contém, por exemplo {{HTMLElement("fieldset")}}, se não existir nenhum elemento com o atributo disabled definido, então o botão estará habilitado. Firefox irá, diferente de outros navegadores, por padrão, persiste com o estado dinâmico desativado de um {{HTMLElement("button")}} sob as páginas carregadas. Use o atributo {{htmlattrxref("autocomplete","button")}} para controlar esse recurso. {{htmlattrdef("form")}} {{HTMLVersionInline(5)}} O elemento de formulário que o botão está associado (é o formulário proprietário). O valor do atributo deve ser o atributo id de um elemento {{HTMLElement("form")}} no mesmo documento. Se esse atributo não for especificado, o elemento <button> deve ser descendente de um elemento de formulário. Esse atributo permite que você coloque elementos <button> em qualquer lugar do documento, não apenas como descendente de seus elementos {{HTMLElement("form")}}. {{htmlattrdef("formaction")}} {{HTMLVersionInline(5)}} A URI de um programa que processa a informação submetida pelo botão. Se especificado, ele sobrescreve o atributo {{htmlattrxref("action","form")}} do formulário proprietário do botão. {{htmlattrdef("formenctype")}} {{HTMLVersionInline(5)}} Se o botão é um botão de envio, esse atributo especifica o tipo de conteúdo que é usado para enviar o formulário para o servidor; Possíveis valores são: application/x-www-form-urlencoded: O valor padrão se o atributo não está especificado. multipart/form-data: Use esse valor se você está usando um elemento {{HTMLElement("input")}} com o atributo {{htmlattrxref("type","input")}} definido para o arquivo. text/plain Se esse atributo fro especificado, ele sobrescreve o atributo {{htmlattrxref("enctype","form")}} do formulário proprietário do botão. {{htmlattrdef("formmethod")}} {{HTMLVersionInline(5)}} Se o botão for um botão de envio, esse atributo especifica o método HTTP que o navegador usará para enviar o formulário. Possíveis valores são: post: Os dados obtidos do formulário são incluídos em seu corpo e enviados para o servidor. get: Os dados obtidos do formulário são anexados aos atributos URI do formulário, com uma '?' como separador, e o resultado URI é enviado para o servidor. Use esse método quando o formulário não possui efeitos colaterais e contém apenas caracteres ASCII. Se especificado, esse atributo sobrescreve o atributo {{htmlattrxref("method","form")}} do formulário proprietário do botão. {{htmlattrdef("formnovalidate")}} {{HTMLVersionInline(5)}} Se o botão é um botão de envio, esse atributo Booleano especifica que o formulário não é para ser validado quando submetido. Se esse atributo for especificado, ele sobrescreve o atributo {{htmlattrxref("novalidate","form")}} do formulário proprietário do botão. {{htmlattrdef("formtarget")}} {{HTMLVersionInline(5)}} Se o botão é um botão de envio, esse atributo é um nome ou palavra-chave indicando onde exibir a resposta que é recebida após o envio do formulário. Esse é um nome de, ou palavra-chave para, um contexto de navegação (por exemplo, uma aba, janela ou quadro embutido). Se esse atributo é especificado, ele sobrescreve o atributo {{htmlattrxref("target", "form")}} do formulário proprietário do botão. As seguintes palavras-chaves possuem significados especiais: _self: Carrega a resposta no mesmo contexto navegação como o atual. Esse valor é o padrão se o atributo não é especificado. _blank: Carrega a resposta em um contexto de navegação sem nome. _parent: Carrega a resposta no contexto de navegação pai do atual. Se não há nenhum pai, essa opção passa a ser o mesmo que _self. _top: Carrega a resposta para o contexto de navegação no nível superior (ou seja, o contexto de navegação é um ancestral do atual e não possui nenhum pai). Se não possui nenhum pai, essa opção passa a agir da mesma forma que _self. {{htmlattrdef("name")}} O nome do botão que é enviado com os dados do formulário. {{htmlattrdef("type")}} O tipo de botão. O possíveis valores são: submit: O botão envia os dados do formulário para o servidor. Esse é o padrão se o atributo não for especifidado, ou se o atributo é dinamicamente mudado para um valor vazio ou inválido. reset: O botão restaura todos os controles para seus valores iniciais. button: O botão não possui comportamento padrão. Ele pode ter scripts do lado do cliente associado com os eventos do elemento, no qual são acionados quando o evento ocorrer. {{htmlattrdef("value")}} O valor inicial do botão. Notas É muito mais fácil estilizar elementos <button> do que elementos {{HTMLElement("input")}}. Você pode adicionar conteúdo HTML (como <em>, <strong>, ou até <img>), e usar pseudo-elementos {{Cssxref("::after")}} e {{Cssxref("::before")}} para executar composições complexas, enquanto {{HTMLElement("input")}} aceita apenas um atributo value do tipo texto. Exemplo <button name="button">Click me</button> {{ EmbedLiveSample('Example', 200, 64) }} Note que esse botão possui CSS aplicado. Especificações Especificações Status Comentário {{SpecName('HTML WHATWG', 'the-button-element.html#the-button-element', '<button>')}} {{Spec2('HTML WHATWG')}} {{SpecName('HTML5 W3C', 'forms.html#the-button-element', '<button>')}} {{Spec2('HTML5 W3C')}} {{SpecName('HTML4.01', 'interact/forms.html#h-17.5', '<button>')}} {{Spec2('HTML4.01')}} Compatibilidade de navegadores {{CompatibilityTable}} Recurso Chrome Firefox (Gecko) Internet Explorer Opera Safari Suporte básico 1.0 {{CompatGeckoDesktop("1.0")}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} Atributo formaction 9.0 {{CompatGeckoDesktop("2.0")}} 10 {{CompatUnknown}} {{CompatUnknown}} Atributo formenctype 9.0 {{CompatGeckoDesktop("2.0")}} 10 10.6 {{CompatUnknown}} Atributo formmethod 9.0 {{CompatGeckoDesktop("2.0")}} 10 {{CompatUnknown}} {{CompatUnknown}} Atributo autofocus 5.0 {{CompatGeckoDesktop("2.0")}} 10 9.6 5.0 Recurso Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Suporte básico {{CompatVersionUnknown}} {{CompatGeckoMobile("1.0")}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} Atributo formaction {{CompatUnknown}} {{CompatGeckoMobile("2.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} Atributo formenctype {{CompatUnknown}} {{CompatGeckoMobile("2.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} Atributo formmethod {{CompatUnknown}} {{CompatGeckoMobile("2.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} Clicando e focando Se um {{HTMLElement("button")}} é clicado, como efeito ele (por padrão) ganha o foco que varia de acordo com o navegador e o SO. O resultado para {{HTMLElement("input")}} do tipo type="button" e type="submit" são os mesmos. Clicar em um {{HTMLElement("button")}} dá foco a ele? Navegadores de Desktop Windows 8.1 OS X 10.9 Firefox 30.0 Sim Não (nem com um tabindex) Chrome 35 Sim Sim Safari 7.0.5 N/A Não (nem com um tabindex) Internet Explorer 11 Sim N/A Presto (Opera 12) Sim Sim Tocar em um {{HTMLElement("button")}} dá foco a ele? Navegadores Moveis iOS 7.1.2 Android 4.4.4 Safari Mobile Não (nem com um tabindex) N/A Chrome 35 Não (nem com um tabindex) Sim Notas Elementos <button> são muito mais fáceis estilizá-los do que elementos {{HTMLElement("input")}}. Você pode adicionar dentro do conteúdo do HTML (imagine em <em>, <strong> ou mesmo <img>), e fazer uso do pseudo-elemento {{Cssxref(":after")}} e {{Cssxref(":before")}} para realizar renderizações complexas enquanto {{HTMLElement("input")}} apenas aceita um atributo com valor textual. IE7 possui um bug ao enviar um formulário com <button type="submit" name="myButton" value="foo">Click me</button>, os dados POST enviados terá como resultado em myButton=Click me em vez de myButton=foo. IE6 possui um bug ainda pior quando enviado um formulário através de um botão por enviar TODOS os botões do formulário com o mesmo bug do IE7. Esse bug foi corrigido no IE8. Firefox adicionará, com propósitos de acessibilidade, uma pequena borda pontinhada e um botão focado. Essa borda será declarada por meio de CSS, no estilo do navegador, mas você pode sobrescreve-lo se necessário para adicionar seu próprio estilo de foco usando button{{cssxref("::-moz-focus-inner")}} { } Firefox irá, diferente de outros navegadores, por padrão, persistir o estado dinâmico desativado de um {{HTMLElement("button")}} sob o carregamento das páginas. Definindo o valor do atributo {{htmlattrxref("autocomplete","button")}} para off desabilita esse recurso. See {{bug(654072)}}. Firefox <35 para Android define um padrão {{ cssxref("background-image") }} gradiente em todos os botões (see {{bug(763671)}}). Isso pode ser desabilitado usando background-image: none. Veja também Outros elementos que são usados para criar formulários: {{HTMLElement("form")}}, {{HTMLElement("datalist")}}, {{HTMLElement("fieldset")}}, {{HTMLElement("input")}},{{HTMLElement("keygen")}}, {{HTMLElement("label")}}, {{HTMLElement("legend")}}, {{HTMLElement("meter")}}, {{HTMLElement("optgroup")}}, {{HTMLElement("option")}}, {{HTMLElement("output")}}, {{HTMLElement("progress")}}, {{HTMLElement("select")}}, {{HTMLElement("textarea")}}. {{HTMLRef}}
O Elemento HTML <button> representa um botão clicável.
<button>
Esse elemento inclui os atributos globais.
off
autocomplete="off"
Esse atributo booleano indica que o usuário não poderá interagir com o botão. Se esse atributo não for especificado, o botão herdará a configuração do elemento que o contém, por exemplo {{HTMLElement("fieldset")}}, se não existir nenhum elemento com o atributo disabled definido, então o botão estará habilitado.
Firefox irá, diferente de outros navegadores, por padrão, persiste com o estado dinâmico desativado de um {{HTMLElement("button")}} sob as páginas carregadas. Use o atributo {{htmlattrxref("autocomplete","button")}} para controlar esse recurso.
application/x-www-form-urlencoded
multipart/form-data
arquivo
text/plain
Se esse atributo fro especificado, ele sobrescreve o atributo {{htmlattrxref("enctype","form")}} do formulário proprietário do botão.
post
get
Se especificado, esse atributo sobrescreve o atributo {{htmlattrxref("method","form")}} do formulário proprietário do botão.
_self
_blank
_parent
_top
submit
reset
button
É muito mais fácil estilizar elementos <button> do que elementos {{HTMLElement("input")}}. Você pode adicionar conteúdo HTML (como <em>, <strong>, ou até <img>), e usar pseudo-elementos {{Cssxref("::after")}} e {{Cssxref("::before")}} para executar composições complexas, enquanto {{HTMLElement("input")}} aceita apenas um atributo value do tipo texto.
<em>
<strong>
<img>
value
<button name="button">Click me</button>
{{ EmbedLiveSample('Example', 200, 64) }}
Note que esse botão possui CSS aplicado.
{{CompatibilityTable}}
formaction
formenctype
formmethod
autofocus
Se um {{HTMLElement("button")}} é clicado, como efeito ele (por padrão) ganha o foco que varia de acordo com o navegador e o SO. O resultado para {{HTMLElement("input")}} do tipo type="button" e type="submit" são os mesmos.
type="button"
type="submit"
tabindex
Elementos <button> são muito mais fáceis estilizá-los do que elementos {{HTMLElement("input")}}. Você pode adicionar dentro do conteúdo do HTML (imagine em <em>, <strong> ou mesmo <img>), e fazer uso do pseudo-elemento {{Cssxref(":after")}} e {{Cssxref(":before")}} para realizar renderizações complexas enquanto {{HTMLElement("input")}} apenas aceita um atributo com valor textual.
IE7 possui um bug ao enviar um formulário com <button type="submit" name="myButton" value="foo">Click me</button>, os dados POST enviados terá como resultado em myButton=Click me em vez de myButton=foo. IE6 possui um bug ainda pior quando enviado um formulário através de um botão por enviar TODOS os botões do formulário com o mesmo bug do IE7. Esse bug foi corrigido no IE8.
<button type="submit" name="myButton" value="foo">Click me</button>
myButton=Click me
myButton=foo
Firefox adicionará, com propósitos de acessibilidade, uma pequena borda pontinhada e um botão focado. Essa borda será declarada por meio de CSS, no estilo do navegador, mas você pode sobrescreve-lo se necessário para adicionar seu próprio estilo de foco usando button{{cssxref("::-moz-focus-inner")}} { }
button{{cssxref("::-moz-focus-inner")}} { }
Firefox irá, diferente de outros navegadores, por padrão, persistir o estado dinâmico desativado de um {{HTMLElement("button")}} sob o carregamento das páginas. Definindo o valor do atributo {{htmlattrxref("autocomplete","button")}} para off desabilita esse recurso. See {{bug(654072)}}.
Firefox <35 para Android define um padrão {{ cssxref("background-image") }} gradiente em todos os botões (see {{bug(763671)}}). Isso pode ser desabilitado usando background-image: none.
background-image: none
Outros elementos que são usados para criar formulários: {{HTMLElement("form")}}, {{HTMLElement("datalist")}}, {{HTMLElement("fieldset")}}, {{HTMLElement("input")}},{{HTMLElement("keygen")}}, {{HTMLElement("label")}}, {{HTMLElement("legend")}}, {{HTMLElement("meter")}}, {{HTMLElement("optgroup")}}, {{HTMLElement("option")}}, {{HTMLElement("output")}}, {{HTMLElement("progress")}}, {{HTMLElement("select")}}, {{HTMLElement("textarea")}}.