Personalize o botão ENVIAR do formulário

O designer entrega para você codificar, uma imagem de um formulário com um visual digno de premiação e o botão de envio foi criado com o conhecido efeito aqua, facilmente obtido em um editor gráfico.
Você conhece a fundo como codificar o botão padrão
Mas, e esse botão com efeito aqua? Começa a ‘dar tratos à bola’ para descobrir como transformá-lo em e sem perda da sua funcionalidade, ou seja enviar o formulário.

Com relação a esta questão, você com toda certeza enquadra-se em um dos seguintes grupos de desenvolvedores: não tem a mínima idéia de como fazer – é fácil e sabe como fazer, mas desconhece como resolver as questões de acessibilidade ao botão – sabe tudo sobre tais botões.
Qualquer que seja o grupo a que você pertence, seria ótimo que você continuasse lendo, seja para aprender, seja para se aperfeiçoar, seja para conferir a matéria.

As Recomendações do W3C

Vamos consultar as Recomendações do W3C para o HTML4.01. Abaixo transcrevo os trechos que interessam a esta matéria e que retirei da tradução que fiz para as Recomendações do W3C para formulários

17.2.1 Tipos de controle

HTML define os seguintes tipos de controle:

botões
Autores podem criar três tipos de botão:
  • botão submit: Quando ativado, envia o formulário. Um formulário pode conter mais de um botão submit.
  • botão reset: Quando ativado, reseta todos os valores do formulário para seus valores iniciais.
  • botão push: Não possui um comportamento padrão. Todo botão push deve ter um script do lado do cliente associado aos atributos event do elemento. Quando um evento ocorre (p.ex.:, o usuário pressiona ou solta um botão, etc), o script é acionado.
    Autores devem definir a linguagem do script para um botão push na declaração padrão para scripts (no elemento META).

17.4.1 Tipos de controle criados com INPUT

O tipo de controle definido pelo elemento INPUT depende do valor do atributo type:
…………..
image

Cria um submit button gráfico. O valor do atributo src especifica a URI da imagem a ser usada na decoração do botão. Por questões de acessibilidade os autores devem fornecer um texto alternativo para a imagem via o uso do atributo alt.
Quando um dispositivo apontador for usado para clicar na imagem o formulário será enviado e as coordenadas do ponto de clicagem passadas ao servidor.

O código para o botão padrão

Para criar um botão "ENVIAR" padrão a ser renderizado com apresentação dependente do navegador do usuário usamos o elemento INPUT com o atributo type="button" e o atributo value="ENVIAR", conforme mostrado a seguir:

<input type="buttom" value="ENVIAR" />

Que é renderizado conforme mostrado abaixo:

Nota: Botões criados como mostrado acima são renderizados com apresentação e tamanhos diferente de acordo com o navegador em que são visualizados. Para padronizar a apresentação destes botões estilize com folhas de estilo em cascata

O código para o botão aqua

Para criar um botão "ENVIAR" gráfico (com uso de qualquer imagem) a ser renderizado com apresentação idêntica em qualquer navegador usamos também o elemento INPUT com o atributo type="image", o atributo value="ENVIAR", o atributo src="caminho/imagem.gif" e o atributo alt=descrição da imagem, conforme mostrado a seguir:

<input type="image" src="/botao-aqua.gif" value="ENVIAR" alt="botão enviar com efeito aqua" />

Que é renderizado conforme mostrado abaixo:

Isto é tudo. Quando necessário você poderá substituir o botão ENVIAR de um formulário por uma imagem. Faça bom uso.

Maujor

Exerci o magistério paralelamente a minha carreira profissional por toda uma vida e ao longo destes trinta anos aprendi tanto quanto ensinei. Sou um apaixonado por Web Standards e desenvolvo o site de tutoriais CSS para Web Design.

View Comments

  • Muito obrigado pelo código simples, mas de utilidade maravilhosa.
    Faz a diferença no design enlatado de hj em dia.
    Liberdade pra criar.
    Um bom dia.

  • Bom, uma dúvida em relação ao input tipo "file".

    o problema é o seguinte, quando mudo o valor do tipo do input pra "image", a funcionalidade file é desativada.

    Tem alguma forma, de mudar o visual do input, sem perder a sua funcionalidade?

    Desde já agradeço.

  • Gostaria de mudar a cor do botão padrão para outra cor. Como faço?
    Eu uso dreamweaver cs5.5....

    Grata

  • Eu queria que vocês me ajudassem a me explicar como que eu faço para criar um formulario e estilizar separadamente o botão enviar e redefinir,ou seja,eu quero mudar o tamanho dos botões,a cor,enfim.Obrigado e um abraço bem grande:D

  • Maujor, boa noite.

    Sou autodidata e estou a aprender PHP, Javascript e CSS.
    Infelizmente já tentei de vários modos fazer rodar o código:
    background-image: url(image.jpg);
    e o gajo não funciona.
    Já pus em classes, sem classes, com identificadores, sem identificadores, dentro ou fora de div e nada.
    Até mesmo um código que peguei na sua página em que há um tutorial sobre layouts tudo funcionou exceto ele.
    O gajo só funciona diretamente na tag o que dificulta a manipulação, pois fica fora da tag .
    Você poderia dar-me uma reza ou milagre que me ajudasse a fazer com que ele funcionasse dentro da tag div?

    Desde já lhe agradeço.
    Parabéns pelo seu trabalho.
    Aliás, também tenho uma queixa.
    Já enviei dois mails para o pessoal da Novatec perguntando ONDE posso achar os seus livros aqui em Portugal e os gajos nada respondem.
    Poderia então você dizer-me onde posso por cá encontrá-los
    Grato

Share
Published by
Maujor

Recent Posts

Teste seu conhecimento #20

Em 2006 comecei a publicar nesse blog uma série de desafios CSS que consistiam em…

7 anos ago

Teste seu conhecimento #19

Há muito tempo que eu não publico um "Teste seu conhecimento". Esta semana, revendo algumas…

9 anos ago

JavaScript bubbling e capturing

Introdução Elementos da marcação HTML podem ser aninhados uns dentro de outros, criando-se uma cadeia…

10 anos ago

HTML5 – W3C versus WHATWG

HTML5? Web universal? É comum eu me deparar com dúvidas sobre a HTML5 não só…

10 anos ago

Seria esse o futuro das imagens responsivas?

Quem é Tab Atkins Jr? Tab Atkins Jr, um desenvolvedor americano, trabalhou durante muitos anos…

10 anos ago

BrazilJS Conf 2013

Pessoal, a BrazilJS Conf 2013 disponibilizou para o Maujor cupons de desconto para serem oferecidos…

11 anos ago