Bordas internas em imagens com CSS
Postado por: Pedro Rogério em
Você alguma vez já tentou fazer aqueles efeitos de bordas internas em imagens semelhantes a utilizadas no sites da Globo.com e não conseguiu ou não teve saco algum para descobrir como fazer? Pois bem, vou postar aqui uma forma muito simples de conseguir esse efeito que acabei encontrando aqui.
Primeiro vamos a marcação HTML, bem simples, utilizaremos listas para estruturar as imagens:
<ul>
<li><a title="" href="#"><img alt="" src="caminho_da_imagem"/></a></li>
<li><a title="" href="#"><img alt="" src="caminho_da_imagem"/></a></li>
<li><a title="" href="#"><img alt="" src="caminho_da_imagem"/></a></li>
<li><a title="" href="#"><img alt="" src="caminho_da_imagem"/></a></li>
<li><a title="" href="#"><img alt="" src="caminho_da_imagem"/></a></li>
<li><a title="" href="#"><img alt="" src="caminho_da_imagem"/></a></li>
<li><a title="" href="#"><img alt="" src="caminho_da_imagem"/></a></li>
<li><a title="" href="#"><img alt="" src="caminho_da_imagem"/></a></li>
<li><a title="" href="#"><img alt="" src="caminho_da_imagem"/></a></li>
</ul>
No HTML nenhum segredo até agora, agora vamos iniciar o processo de verdade aplicando o CSS:
img {border:none}
ul {margin:0; padding:0; width:236px}
ul:after {clear:both; content:"."; display:block; height:0; visibility:hidden;}
ul li {list-style-type:none; float:left; margin:0 3px 3px 0}
ul li a, ul li a img {float:left; overflow:hidden}
ul li a:hover {border:4px solid #f00}
ul li a:hover img {margin:-4px}
Agora vamos a explicação de cada item:
- Linha 1: Retirei as bordas padrão do link, que por default são azuis, nesse momento minha imagem não pode ter borda alguma.
- Linha 2: Defini uma largura para meu objeto container (ul) para que as imagens ficassem uma ao lado da outra.
- Linha 3: Uma técnica utilizada para “limpar floats”, prometo fazer um post sobre isso qualquer dia desses.
- Linha 4: Adicionei float:left para colocar as imagens uma do lado da outra.
- Linha 5: É obrigatório o uso de float e oveflow:hidden para que as imagens não fiquem sambando na tela.
- Linha 6: É aí onde eu defini a cor e espessura da borda da imagem.
- Linha 7: Onde a mágica toda acontece, quando eu defini 4px de borda para a imagem no hover do link, para que o efeito ocorra corretamente eu preciso deslocar as margens da imagem com seus valores negativos nas 4 direções (top, right, bottom e left), por isso o valor de margin:-4px.
Agora vejam o exemplo em funcionamento.













