Desenvolvimento - CSS
Botão com CSS 3: Como criar um botão sem imagens
Neste tutorial iremos ver como criar um botão com css3, abolindo o uso de imagens para criar botões personalizados.
por Anderson WeschnhoskiAinda a melhor forma que temos de criar um botão personalizado para um site, que tenha compatibilidade com todos os navegadores, é utilizando uma imagem. Porém, em muitos casos podemos criar o mesmo botão apenas com CSS3. O que torna a manutenção e a personalização muito mais fáceis e práticas, além de ser muito mais leve.
Vou ensinar logo abaixo como fazer um botão com CSS3. Ele até poderia ser animado com jquery, ou alguma outra biblioteca javascript, mas a ideia é mostrar as possibilidades do CSS.
Figura 1: Prévia final do botão
HTML
Abaixo vamos criar o nosso documento HTML, dentro do body não teremos nada demais, além de uma div que vai posicionar o elemento na tela, e um link que vai ser nosso botão.
Listagem 1: Código HTML
<html> <head> <title>Botão com CSS3</title> </head> <body> <div class="content"> <a href="#" class="botao01">Botao</a> </div> </body> </html>
Para colocarmos todos esses efeitos no botão, vamos usar dois pseudo-elementos, o :after e o :before. Esses dois são utilizados com a propriedade “content”, porém, neste momento não precisamos saber exatamente como funciona seu comportamento, na verdade mais pra frente eu falo melhor sobre isso.
Agora vamos começar a estilizar o nosso botão com CSS:
Listagem 2: Primeira parte do CSS
<html> <head> <title>Botão com CSS3</title> </head> <style> .botao01{ background: -webkit-linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); background: -moz-linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); background: -o-linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); background: -ms-linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); background: linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); border: 1px solid #CCCCCE; border-radius: 3px; box-shadow: 0 3px 0 rgba(0, 0, 0, .3), 0 2px 7px rgba(0, 0, 0, 0.2); color: #616165; display: block; font-family: "Trebuchet MS"; font-size: 14px; font-weight: bold; line-height: 25px; text-align: center; text-decoration: none; text-transform: uppercase; text-shadow:1px 1px 0 #FFF; padding: 5px 15px; position: relative; width: 80px; } </style> <body> <div class="content"> <a href="#" class="botao01">Botao</a> </div> </body> </html>
Com esse primeiro bloco de CSS, já definimos boa parte da forma do botão. Não têm muito segredo, apenas duas coisas em quê você deve manter a atenção, no background, onde usei um linear-gradient que ainda é algo novo para alguns navegadores, e o box-shadow. Neste ultimo, são duas sombras, então deve se separar com uma vírgula cada valor.
Agora vamos trabalhar com os pseudo-elementos :after e :before. Com eles vamos conseguir colocar mais alguns estilos no botão sem ter que criar outro elemento, como uma div ou span.
Listagem 3: Segunda parte do CSS, inclusão dos pseudo-elementos
<html> <head> <title>Botão com CSS3</title> </head> <style> .botao01{ background: -webkit-linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); background: -moz-linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); background: -o-linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); background: -ms-linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); background: linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); border: 1px solid #CCCCCE; border-radius: 3px; box-shadow: 0 3px 0 rgba(0, 0, 0, .3), 0 2px 7px rgba(0, 0, 0, 0.2); color: #616165; display: block; font-family: "Trebuchet MS"; font-size: 14px; font-weight: bold; line-height: 25px; text-align: center; text-decoration: none; text-transform: uppercase; text-shadow:1px 1px 0 #FFF; padding: 5px 15px; position: relative; width: 80px; } .botao01:before{ border: 1px solid #FFF; border-radius: 3px; box-shadow: inset 0 -2px 12px -4px rgba(70, 70, 70, .2), inset 0 3px 2px -1px rgba(255, 255, 255, 1); content: ""; bottom: 0; left: 0; right: 0; top: 0; padding: 5px; position: absolute; } .botao01:after{ background: rgba(255, 255, 255, .4); border-radius: 2px; content: ""; bottom: 15px; left: 0px; right: 0px; top: 0px; position: absolute; } </style> <body> <div class="content"> <a href="#" class="botao01">Botao</a> </div> </body> </html>
Para fazermos o uso deles, temos que utilizar a propriedade content, ela adiciona conteúdo dentro de um elemento via CSS, é muito útil. E para que os peseudo-elementos “existam” é necessário que tenha alguma coisa dentro deles, por isso temos que usá-la.
Contendo essa propriedade podemos colocar os estilos. O :before, usamos para colocar duas sombras internas e mais uma borda na cor branca. No :after, é onde tem o style que faz aquele efeito espelhado.
No próximo passo vamos colocar um efeito de clique, como se o botão estivesse abaixando quando clicamos em cima dele.
Segue o código logo abaixo:
Listagem 4: Terceira parte do CSS, efeito do click
<html> <head> <title>Botão com CSS3</title> </head> <style> .content{ margin: 30px; } .botao01{ background: -webkit-linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); background: -moz-linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); background: -o-linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); background: -ms-linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); background: linear-gradient(bottom, #E0E0E0, #F9F9F9 70%); border: 1px solid #CCCCCE; border-radius: 3px; box-shadow: 0 3px 0 rgba(0, 0, 0, .3), 0 2px 7px rgba(0, 0, 0, 0.2); color: #616165; display: block; font-family: "Trebuchet MS"; font-size: 14px; font-weight: bold; line-height: 25px; text-align: center; text-decoration: none; text-transform: uppercase; text-shadow:1px 1px 0 #FFF; padding: 5px 15px; position: relative; width: 80px; } .botao01:before{ border: 1px solid #FFF; border-radius: 3px; box-shadow: inset 0 -2px 12px -4px rgba(70, 70, 70, .2), inset 0 3px 2px -1px rgba(255, 255, 255, 1); content: ""; bottom: 0; left: 0; right: 0; top: 0; padding: 5px; position: absolute; } .botao01:after{ background: rgba(255, 255, 255, .4); border-radius: 2px; content: ""; bottom: 15px; left: 0px; right: 0px; top: 0px; position: absolute; } .botao01:active{ box-shadow: inset 0 0 7px rgba(0, 0, 0, .2); top: 4px; } .botao01:active:before{ border: none; box-shadow:none; } </style> <body> <div class="content"> <a href="#" class="botao01">Botao</a> </div> </body> </html>
Aqui colocamos um estilo para quando o botão receber um click. Removemos as sombras externas, inclusive aquela que dá a impressão de que o botão está saltado, e o movemos um pouco para baixo, para dar a impressão de que ele está afundando.
E pra finalizar inserimos uma margin na div content, pra dar um espaçamento entre o botão e as bordas do browser. Nada que modifique o elemento diretamente.
Esse é um exemplo de uma estilização de um simples botão com css, as possibildades são imensas e a sua criatividade é o limite.
Finalizo aqui este tutorial, se alguém estiver com alguma dúvida pode usar a área de comentários ou me enviar um email: andersonweschnhoski@gmail.com