Criar Web, manuais e recursos para desenvolvimento web
Manuais
Programas
FAQS
Diretório
Comunidade
  Inicio > Manuais > Workshop de CSS
SEÇÕES
Manuais relacionados
+Workshop de CSS
Categorias
+CSS

Índice do Manual Workshop de CSS
+ Aplicação avançada de estilo aos links
+ Como evitar que um página se imprima
+ Título para tabelas decoradas com CSS
+ Bordas pontilhadas com CSS
+ Estilos em campo de texto
+ Montar uma página com CSS
+ Montar uma página com CSS II
+ Montar uma página com CSS III
+ Montar uma página com CSS IV
+ Montar uma página com CSS V
+ Variar o desenho e a construção com a folha de estilos
+ Workshop de CSS, Opacity
+ Links com estilo CSS que simulam botões
+ Criar um menu dinâmico com CSS
+ Utilizar CSS para montar um boletim
+ Caixa simples e elegante com CSS
+ Decorar um campo select de formulário com CSS
+ Esconder com CSS o e-mail aos spambots
+ Efeito de sombra com CSS
+ Texto na vertical usando CSS
+ Mudando o cursor do mouse
+ Caixa CSS para colocar conteúdo
+ Construção CSS com duas colunas
+ Construção CSS com três colunas
+ Variação da construção com CSS com 3 colunas
+ Caixa CSS com as esquinas arredondadas
+ Caixa CSS com linha de borda arredondada
+ Construir uma galeria de fotos com CSS
+ Construir uma galeria de fotos com CSS usando listas
+ Criação de gráficos de barras com CSS para a construção
+ Estilizando formulários
+ Realizar um rollover só com CSS e utilizando imagens
+ CSS para campos textarea de formulário
+ CSS para imprimir páginas web
+ Gerar colunas com CSS de uma lista sem tabelas
+ Molduras para fotos com CSS
+ Gráfico de barras com CSS, parte 2

Descrição dos capítulos

Parceiros
- CSS para Web Design
- S.O.S Designers
- Slackware-Brasil
- Crie seu Web site
- Oficina da Net


Efeito de sombra com CSS

Veremos vários métodos para realizar um efeito de sombreado utilizando folhas de estilo em cascata.


Encontramos 3 métodos diferentes para fazer um efeito de sombra. São os seguintes, que veremos comentados neste artigo:

  1. Método background-color
  2. Método canal alpha
  3. Método esticar imagem
Método Background color

Este método é bastante simples. Baseia-se em definir três caixas trasladadas, com diversas cores de fundo. Os elementos com as classes "blur" e "shadow" se definirão com tons cinzentos para criar o efeito de sombreado.

Código HTML:

<div class="blur">
<div class="shadow">
<div class="content">bla bla</div>
</div>
</div>

Código CSS:

.blur{
   background-color: #ccc; /*shadow color*/
   color: inherit;
   margin-left: 4px;
   margin-top: 4px;
}

.shadow,
.content{
   position: relative;
   bottom: 2px;
   right: 2px;
}

.shadow{
   background-color: #666; /*shadow color*/
   color: inherit;
}

.content{
   background-color: #fff; /*background color of content*/
   color: #000; /*text color of content*/
   border: 1px solid #000; /*border color*/
   padding: .5em 2ex;
}

A única desvantagem deste método é que usa cores definidas para as sombras e isso fazer com que não se possa misturar este efeito com outros elementos. Com um fundo branco, as sombras em cinza ficam bem, mas por exemplo, se o fundo fosse vermelho, então o efeito de sombreado deveria se realizar com tons vermelhos escuros.

Podemos ver o exemplo em funcionamento em uma página a parte.

Método canal alpha

Este método é muito parecido ao anterior, mas soluciona o problema de se misturar com outros elementos. O fundo da página onde será mostrado o elemento sombreado é indiferente, inclusive se o sombreado for na mesma página sobre diferentes fundos. Utilize imagens de fundo em formato PNG "alpha transparentes", ao invés de cores definidas na folha de estilo.

O código HTML necessário é o mesmo do exemplo anterior, você simplesmente deve modificar o código CSS, em concreto para as classes "blur" e "shadow". Mostramos o código CSS para este exemplo.

<style type=text/css>
.blur{
   background: transparent url(shadow1.png);
/*rota para o 80%-transparente 1x1 pixel colorido em preto */
   color: inherit;
   margin-left: 4px;
   margin-top: 4px;
}

.shadow{
   background: transparent url(shadow2.png);
/*rota para o 60%-transparent 1x1pixel colorido em preto */
   color: inherit;
}

.shadow,
.content{
   position: relative;
   bottom: 2px;
   right: 2px;
}

.content{
   background-color: #fff; /*background color of content*/
   color: #000; /*text color of content*/
   border: 1px solid #000; /*border color*/
   padding: .5em 2ex;
}
</style>


Para provar a vantagem deste tipo de fundo, podemos mudar a cor de fundo da página web e veremos como a sombra também mudará de cor.

Podemos ver o exemplo em funcionamento em uma página a parte .

Método esticar imagem

Opinamos que os dois métodos anteriores não são tão bons ou muito bons, devido a que a sombra não parece muito natural. Em outras palavras, não é um efeito suficientemente realista. De forma que abrimos nosso editor gráfico, criamos uma caixa retangular com efeito de sombra e exportamos a uma imagem. Possivelmente possa utilizar essa imagem para criar o efeito de sombra.

O código HTML experimental

<div class="shade">
<img src="shadow.png" width="0" height="0" alt="" class="shade" />
bla bla</div>


O código CSS experimental

img.shade{
   width: 37ex;
   height: 9em;
/* specify the dimension of the image */
   display: block;
   position: absolute;
   z-index: -1;
/* force the image to show below the content */
   right: -3ex;
   bottom: -1em;
}

div.shade{
   width: 30ex;
   height: 6em;
/* specify the dimension of the content, slightly smaller than the image */
   position: relative;
   z-index: 1;
/* force the content to show above the image */
   background-color: #fff;
   border: 1px solid #000;
   padding: 1em 2ex;
   margin-right: 6ex;
   margin-bottom: 3em;
}


Temos três desvantagens neste método

  1. Como a imagem se estica, pode talvez, não ficar muito bonito.
  2. Em Mozilla Firefox a imagem às vezes desaparece (pode ser recuperada refrescando ou deslocando a página). No Internet Explorer não se mostra bem o efeito, pelo menos na versão 6.
  3. O conteúdo não pode flutuar (não podemos utilizar o atributo float)
Podemos ver este exemplo em funcionamento em uma página a parte.

Um momento. Como faríamos um texto com sombreado?

Se utilizar um navegador baseado em Gecko, você poderá visualizar outro efeito interessante para realizar sombreado de textos sem utilizar imagens e "redimensionável" simplesmente mudando o tamanho do texto ou as fontes que usa o navegador (com o menu view>text size > increase / Decrease).

O código HTML seria o seguinte:

<span id="text">Texto sombreado</span>

O código CSS

#text{
   font-size: 3em; /* optional. just to increase the font size. */
   display: block;
   line-height: 1em;
   color: #666; /* shadow color */
   background-color: transparent;
   white-space: nowrap; /* wrapping breaks the effect */
}

#text:before,
#text:after{
   content: "Texto sombreado"; /* O mesmo texto que queremos mostrar sombreado */
   display: block;
}

#text:before{
   margin-bottom: -1.05em;
   margin-left: 0.1ex;
   color: #ccc; /* shadow color */
   background-color: transparent;
}

#text:after{
   margin-top: -1.05em;
   margin-left: -0.1ex;
   color: #fff; /* text color */
   background-color: transparent;
}


Este efeito pode ser útil por agora. Entretanto, as especificações de CSS2 incluem uma propriedade CSS chamada text-shadow, que serve para definir um efeito de sombra a um texto. Entretanto, a maioria dos navegadores ainda não suporta esta propriedade.

Interessantes recursos sobre este tema:

Este artigo é uma tradução do inglês. O original está em: http://www.phoenity.com/newtedge/drop_shadow/

Autoria e outras referências sobre este artigo

Manuais relacionados com este artigo
Dentro de Workshop de CSS

Categorias relacionadas
Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo:
+ Entrar em CSS


Comentários dos visitantes
Os comentários dos visitantes são para ampliar a informação do artigo. Todos podem participar.
Acrescentar um comentário do artigo Acrescentar um comentário do artigo



Sobre nós | Copyright | Anuncie | Entrar em contato <criarweb>

Hospedado por Hostnet Hospedagem de Sites