Brincando com CSS3

abduzeedo ter, 12/08/2009 - 16:38

Quando eu estava trabalhando na nova versão do Abduzeedo, a atual, eu decidi aprender e usar CSS 3 para melhorar a parte visual de alguns elementos. Ao invés de usar imagens para criar sombras e cantos aredondados, eu usei CSS 3. Claro que eu sabia que seria compatível com todos os browsers, precisamente, o Internet Explorer.

A partir das estatísticas do site, sabemos que a maioria dos leitores usa Firefox (51.05%), seguido por Safari (25.38) e Internet Explorer com apenas 11.73. Então pensei que funcionaria bem, e para aqueles que usam outros browsers, conseguiriam acessar o site mas sem ver esses pequenos detalhes.

Então neste tutorial vou mostrar a vocês como eu criei alguns dos efeitos que você encontra no Abduzeedo UI. Nós vamos brincar com Box-Shadow, Round-Corners, Tex-Shadow e CSS gradients. A idéia é praticar, que na minha opinião, é a melhor maneira de aprender.

Resultado Final

Este é o resultado final que teremos no final do tutorial. A idéia é brincar um pouco com o CSS3 mesmo que isso não funcione bem no IE e Opera.

Playing with CSS3
Clique na Imagem para ver a DEMO - Funciona apenas com Safari, Firefox e Chrome

Passo 1

A primeira coisa a fazer é criar o arquivo HTML com as informações. Vamos criar também o link para o nosso arquivo CSS (<link rel="stylesheet" href="tut.css" type="text/css" media="all">). Existem vários lugares legais para aprender mais sobre HTML e CSS, eu recomendo CSS Tricks, Nettuts, Smashingmagazine, W3C, 24ways, Woork e outros.

Abaixo você consegue ver a página sem nenhum estilo.

Playing with CSS3

Passo 2

Aqui está o arquivo HTML, como você pode ver estamos usando HTML 5, para praticar. Isso é o melhor dos projetos pessoaism podemos praticar e aprender.

Nós temos basicamente uma seção chamada "Box" onde vamos posicionar o conteúdo. Depois temos a navigation (Nav), outra seção com o conteúdo (content) e então, dentro da content section temos as messages. Usamos tag article para elas.

Playing with CSS3

Passo 4

Vamos começar trocando o estilo do "body". Então vamos definir a fonte, a largura dela, as margens, paddings e cor de background. É muito importante que você tenha algum conhecimento sobre CSS, especialmente sobre CSS Box Model para entender como funcionam Padding, Margins, Border e sizes. Eu recomendo esse artigo muito legal do Chris Coyer: The CSS Box Model

body{
    font: 14px/140% "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
    font-weight: lighter;
    margin: 0;
    padding: 0;
    background: #ddd;
}

Agora, para o box nós vamos brincar com uma nova propriedade do CSS 3, Box Shadow. Nós podemos adicionar shadows a elementos sem usar qualquer imagem. É muito simples de usar, basta ajustar Horizonal Lenght, Vertical Lenght, Blur and Color.

Exemplo: box-shadow: horizontal lenght vertical legnth blur color = box-shadow: 0px 0px 10px #666.

Para mais informações sobre Box-Shadow leia esse artigo: Box-shadow: shadow effect on elements in css3.

#box{
    display: block;
    position: relative;
    width: 500px;
    margin: 20px auto;
    border: 1px solid #666;
    -webkit-box-shadow: 0 0px 10px #666;
    -moz-box-shadow:0 0px 10px #666;
    box-shadow: 0 0px 10px #666;
}
    

Playing with CSS3

Passo 5

Para navigation eu criei uma imagem PNG com 'alpha transparency' para então criar o bevel effect da navigation bar.

nav{
    position: relative;
    display: block;
    clear: both;
    background: #444 url(imgs/bg-gradient.png) repeat-x left -25px;
    height: 25px;
    padding: 10px 20px 10px 20px;
}

Eu recomendo que use RESET.CSS para seus projetos, mas aqui não estou usando, então vou apenas 'reset the UL and LI behaviors' para criar meus navigation buttons. Para entender porque fazemos isso com nosso CSS, leia esse artigo de Eric Meyer: CSS Tools: Reset CSS.

nav ul, nav ul li{
    list-style-type: none;
    padding: 0;
    margin: 0;
}

O objetivo de uma 'reset stylesheet' é reduzir as inconsistencias do browser em coisas como alturas de linhas default, margens e tamanho de fontes em headings, etc.

Playing with CSS3

Passo 6

Para os botões vamos usar round corners, box-shadow e text shadow para criar um efeito legal. Dê uma olhada no código abaixo. Text-shadow é quase igual ao box-shadow mas para o texto, é a mesma syntax. Agora, a parte de round corners é diferente e é um dos efeitos mais desejados. Nós não precisaremos adicionar muito markup e as imagens para criar esse efeito.

Eu recomendo 2 artigos sobre Round Corners: Border-radius: create rounded corners with CSS! e Have a Field Day with HTML5 Forms. O último vai cobrir outro HTML 5 e CSS 3 novas características.

nav ul li{
    float: left;
    background: #555 url(imgs/bg-gradient.png) repeat-x left -35px;
    padding: 0 10px;
    margin: 0 10px 0 0 ;
    color: #fff;
    font-weight: bold;
    height: 25px;
    line-height: 25px;
    font-size: 13px;
    cursor: pointer;
    -moz-border-radius: 20px;
    -webkit-border-radius: 20px;
    border-radius: 20px;
    -webkit-box-shadow: 0 -1px 1px #333;
    -moz-box-shadow:0 1px 1px #333;
    box-shadow:0 1px 1px #333;
    text-shadow: #000000 0 -1px 1px;
}

Playing with CSS3

Passo 7

Quando o usuário passar o mouse pelo botão, vamos trocar a cor do background, fonte e efeitos.

nav ul li:hover{
    background-color: #ccc;
    box-shadow: 0 -1px 1px #fff;
    -webkit-box-shadow: 0 -1px 1px #fff;
    -moz-box-shadow: 0 -1px 1px #fff;
    color: #333;
    text-shadow: #fff 0 1px 1px;
}

Playing with CSS3

Passo 8

Para o campo de busca vai ser quase igual, no entanto vamos usar outra imagem para o background, o magnifying glass icon, e posicionaremos na direita.

input{
    background: #ddd url(imgs/mglass.png) no-repeat 135px 2px ;
    outline: none !important;
    position: absolute;
    right: 20px;
    display: block;
    padding: 5px 10px;
    top: 9px;
    border: none;
    -moz-border-radius: 20px;
    -webkit-border-radius: 20px;
    border-radius: 20px;
    box-shadow: 0 -1px 1px #333;
    -moz-box-shadow: 0 -1px 1px #333;
    -webkit-box-shadow: 0 -1px 1px #333;
}

Para o focus state vamos trocar apenas a cor do background.

input:focus{
    background: #fff;
}

Playing with CSS3

Passo 9

Para content, vamos brincar com gradientes via CSS3. Isso vai funcionar apenas em Webkit based browsers (Safari, Chrome, Webkit). Basicamente nós setamos 2 ou mais cores que vão criar o gradiente. Recomendo que a leitura desse artigo: Introducing to CSS Gradients. Apenas Webkit browsers vão mostrar o gradiente que adicionei 2 backrounds, o primeiro é cinza (#ddd) e vai funcionar em outros browsers que vão ignorar o gradiente.

section#content{
    display: block;
    position: relative;    
    background: #ddd;
    background: #ddd -webkit-gradient(linear, 0% 0%, 0% 90%, from(rgba(100, 100, 100, .5)), to(rgba(90, 90, 90, .1)));
    padding: 20px 20px 10px 20px;
}

.clear{
    clear: both;
}

Playing with CSS3

Passo 10

Para os thumbnails vamos mais uma vez usar Round Corners e Box Shadow. Além disso use FLOAT:LEFT para alinhar eles a esquerda e 3px solid white border.

#thumb img{
    float: left;
    border: 3px solid #fff;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    border-radius: 4px;
    -webkit-box-shadow: 0 0px 3px #333;
    -moz-box-shadow:0 0px 3px #333;
    box-shadow:0 0px 3px #333;
}

Playing with CSS3

Passo 11

A idéias para as messages é criar uma dialog box. Aplique Round-corners em todos os lados menos no superior esquerdo. Também adicionei Box Shadow e CSS Gradient.

div.msg{
    float: right;
    width: 320px;
    padding: 20px;
    background: #f0f0f0 -webkit-gradient(linear, 0% 0%, 0 90%, from(rgba(100, 100, 100, 0)), to(rgba(90, 90, 90, .2)));
    
    -webkit-box-shadow: 0 0px 5px #333;
    -moz-box-shadow:0 0px 5px #333;
    box-shadow:0 0px 5px #333;
    
    margin-top: 40px;
    
    -moz-border-radius-bottomleft:0px;
    -moz-border-radius-bottomright:10px;
    -moz-border-radius-topleft:0;
    -moz-border-radius-topright:10px;
    
    -webkit-border-top-left-radius: 0px;
    -webkit-border-top-right-radius: 10px;
    -webkit-border-bottom-left-radius: 10px;
    -webkit-border-bottom-right-radius: 10px;
    
}

Como eu não fiz o reset do meu CSS, o H3 estava usando o estilo browser default para isso. Então precisei mudar a margem para 0 e para o padding eu troquei o topo, direita e esquerda para 0 apenas adicionando 10 pixels na parte de baixo do padding.

h3{
         padding: 0 0 10px;
         margin: 0;
}

Playing with CSS3

Passo 12

Uma das coisas mais legais do CSS 3 é que podemos brincar com shadows e também criar brilhos apenas trocando a cor do box-shadow.

div.msg:hover, #thumb img:hover{
    -webkit-box-shadow: 0 0px 5px #0cf;
    -moz-box-shadow:0 0px 5px #0cf;
    box-shadow:0 0px 5px #0cf;
}

Playing with CSS3

Conclusão

Mais uma vez, a idéia desse tutorial rápido é mostrar as possibilidades. Tem muito mais para aprender e tudo deve ser testado para garantir que funcione em diferentes browsers. É tudo uma questão de praticar.

Playing with CSS3
Clique na imagem para ver a DEMO - Funciona apenas no Safari, Firefox e Chrome

Download dos Arquivos usados nesse Tutorial

Clique aqui para fazer o download dos arquivos usados nesse tutorial

About the author

Abduzeedo is a blog about design. There are all sorts of articles for those who want to look for inspiration. Also you will find very useful tutorials for the most used applications out there, with a special selection of Photoshop Tutorials and Illustrator Tutorials. Of course there are other softwares conteplated like Pixelmator, Fireworks, and web design tutorials.

Sponsored Links

More articles about: