Quando se trata de web design, visuais cativantes podem fazer toda a diferença. As imagens desempenham um papel crucial na criação de uma experiência de usuário envolvente e memorável.

Mas como transformar suas imagens de comuns em extraordinárias? É aí que entra o estilo de imagem. Com o poder do CSS ao seu alcance, você pode liberar sua criatividade e transformar suas imagens em elementos visuais cativantes que deixam uma impressão duradoura.

Neste artigo, iremos explorar o mundo do estilo de imagem com CSS, examinando várias técnicas e propriedades que elevarão suas habilidades de design web a novos patamares.

Como adicionar imagens em HTML

Antes de estilizar uma imagem, você deve primeiro adicioná-la ao documento HTML. Para fazer isso, você pode usar a tag <img>. A tag <img> é uma tag de fechamento automático (não requer uma tag de fechamento). Ela tem um atributo src que especifica a URL ou o caminho do arquivo da imagem que você deseja exibir.

<img src="image.jpg" alt="Description of the image">

Você também pode fornecer uma URL absoluto ou um caminho de arquivo relativo para a imagem.

<img src="https://source.unsplash.com/tMHAmxLyzvA" alt="Boston city skyline">

O atributo alt representa o texto alternativo e é essencial para a acessibilidade. A tag <img> também oferece dois atributos opcionais: width e height. Esses atributos permitem que você especifique as dimensões da imagem em pixels.

<img src="image.jpg" alt="Description of the image" width="300" height="200">

No entanto, geralmente é recomendável evitar o uso dos atributos width e height, a menos que você precise manter dimensões específicas da imagem. Em vez disso, você pode usar CSS para controlar o tamanho da imagem, proporcionando mais flexibilidade no design responsivo.

img {
  height: 200px;
  width: 700px;
}

Estilo de imagem responsivo

Aplicar valores específicos para os atributos width e height de uma imagem pode levar a consequências indesejáveis, como compressão ou distorção da imagem. Isso é especialmente verdadeiro se as dimensões especificadas não corresponderem à proporção de aspecto original da imagem.

Imagem comprimida.
Imagem comprimida.

Para evitar esses problemas e manter as proporções adequadas da imagem, é aqui que o estilo de imagem responsivo entra em ação. O estilo de imagem responsivo garante que as imagens se adaptem a diferentes tamanhos de tela, o que é crucial para o design responsivo da Web.

Você pode conseguir isso usando a propriedade max-width, que limita a largura máxima de uma imagem.

img {
  max-width: 100%;
  height: auto;
}
Imagem responsiva.
Imagem responsiva.

Você também pode usar consultas de mídia para modificar o estilo da imagem com base em diferentes pontos de interrupção do dispositivo. As consultas de mídia permitem que você aplique regras CSS específicas com base no tamanho da tela do dispositivo, na orientação e em outros recursos. Por exemplo:

@media screen and (max-width: 600px) {
  .my-image {
    max-width: 50%;
  }
}

Utilizando object-fit para manter a proporção e evitar redução de tamanho

Às vezes, existem cenários em que você precisa especificar uma largura e altura específicas para uma imagem. Nesses casos, você pode utilizar a propriedade CSS object-fit para controlar o comportamento da imagem dentro de suas dimensões especificadas.

A propriedade object-fit permite que você especifique como uma imagem deve caber dentro do seu contêiner, mantendo a proporção de aspecto. Ela pode receber vários valores, como:

  • fill (preencher): Este valor estica ou comprime a imagem para se ajustar exatamente ao contêiner, potencialmente causando distorção.
  • contain (conter): Este valor redimensiona a imagem proporcionalmente para caber dentro do contêiner sem cortes, mantendo a proporção. Garante que a imagem inteira seja visível dentro do contêiner, podendo resultar em espaços vazios.
  • cover (cobrir): Este valor redimensiona a imagem proporcionalmente para cobrir o contêiner, mantendo a proporção. Pode resultar no corte das bordas da imagem para preencher todo o contêiner.
  • none (nenhum): Esse valor não aplica nenhum dimensionamento ou corte, e a imagem manterá seu tamanho original, podendo transbordar o contêiner.
Resultado para estilos populares de ajuste de objeto.
Resultado para estilos populares de ajuste de objeto.

Aqui está um exemplo de uso da propriedade de ajuste de objeto:

img {
  width: 300px;
  height: 300px;
  object-fit: cover;
}

Criando imagens com cantos arredondados com CSS

Ao adicionar cantos arredondados às imagens, você pode dar a elas uma aparência mais suave e visualmente mais atraente.

Com o CSS, você pode obter esse efeito facilmente aplicando a propriedade border-radius à imagem.

Veja a seguir como você pode criar imagens com cantos arredondados:

img {
  border-radius: 10px;
}

No exemplo acima, definimos a propriedade border-radius como 10px. Ajuste o valor de acordo com sua preferência para controlar o arredondamento dos cantos. Este valor pode usar as unidades de medida de sua preferência, como rem, porcentagem, etc.

Imagem com cantos arredondados.
Imagem com cantos arredondados.

Criando imagens circulares com CSS

Para criar imagens perfeitamente circulares, combine a propriedade border-radius com dimensões iguais de largura e altura.

Veja como você pode criar imagens circulares:

img {
  border-radius: 50%;
  width: 200px;
  height: 200px;
}

No exemplo acima, a propriedade border-radius está definida como 50%, criando um círculo ao fazer com que a curva da borda tenha metade da largura ou da altura da imagem.

Você também pode usar a propriedade clip-path. Ela permite que você defina um caminho de recorte para um elemento, criando formas exclusivas.

Aqui está um exemplo de uma imagem recortada em um círculo:

img {
  clip-path: circle(50%);
  width: 200px;
  height: 200px;
}

Centralizando imagens com CSS

O alinhamento de imagens no centro do seu contêiner é uma prática comum em web design. Você pode definir a propriedade display da imagem como block e aplicar margin: 0 auto, que centraliza horizontalmente a imagem em seu contêiner.

img {
  display: block;
  margin: 0 auto;
  width: 700px;
}
Imagem centralizada.
Imagem centralizada.

Criando imagens transparentes

Você pode usar CSS para aplicar o efeito de transparência desejado para tornar uma imagem transparente. A propriedade opacity permite que você controle o nível de transparência de um elemento, incluindo imagens.

Um valor de 1 representa opacidade total (completamente visível), enquanto 0 representa transparência total (completamente invisível).

img {
  opacity: 0.5;
}

A opacidade da imagem no código acima está definida como 0.5, resultando em um efeito semitransparente. Você pode ajustar o valor da opacidade para obter o nível desejado de transparência.

Imagem transparente.
Imagem transparente.

Inserindo texto em imagens

Ao colocar texto em imagens, você pode criar designs visualmente atraentes e informativos. Para colocar o texto em cima de uma imagem, você pode usar uma combinação de posicionamento CSS e z-index.

Aqui está um exemplo:

 // HTML
<div class="image-container">
  <img src="https://source.unsplash.com/tMHAmxLyzvA" alt="Boston city skyline" >
  <div class="image-text">Welcome to Kinsta</div>
</div>

// CSS
.image-container {
  position: relative;
}


.image-text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1;
  color: white;
  font-size: 20px;
  font-weight: bold;
}

No código acima, image-container div serve como contêiner para a imagem e a sobreposição de texto. A propriedade position: relative é aplicada ao contêiner para estabelecer um contexto de posicionamento. A classe image-text é então usada para posicionar o texto de forma absoluta dentro do contêiner usando position: absolute e as propriedades top, left e transform para centralizá-lo. A propriedade garante que o texto seja centralizado. A propriedade z-index garante que o texto apareça acima da imagem, e você pode personalizar ainda mais a aparência do texto com cor, tamanho e espessura da fonte.

Observe que os valores específicos de posicionamento e estilo podem ser ajustados para atender às suas preferências e requisitos de design.

Invertendo imagens: Criação de efeitos espelhados

A inversão de imagens pode acrescentar um elemento visual interessante ao web design. Se você quiser criar um efeito espelhado ou inverter uma imagem vertical, ou horizontalmente, o CSS oferece técnicas simples para obter esse efeito.

Inversão horizontal

Para inverter horizontalmente uma imagem, você pode usar a propriedade transform com a função scaleX(). O valor scaleX(-1) inverte a imagem ao longo do eixo horizontal.

img {
  transform: scaleX(-1);
}

Inversão vertical

Para inverter verticalmente uma imagem, você pode usar a propriedade transform com a função scaleY(). O valor scaleY(-1) inverte a imagem ao longo do eixo vertical.

img {
  transform: scaleY(-1);
}

Inversão diagonal

Para criar um efeito de inversão diagonal, você deve combinar as funções scaleX() e scaleY() na propriedade transform.

img {
  transform: scaleX(-1) scaleY(-1);
}

No código acima, a imagem será espelhada horizontal e verticalmente, resultando em um efeito de inversão diagonal.

Inversão de imagem horizontal, vertical e diagonal.
Inversão de imagem horizontal, vertical e diagonal.

Adicionando filtros às imagens: Aprimorando os efeitos visuais

Os filtros podem transformar a aparência das imagens, permitindo que você crie efeitos visuais exclusivos. O CSS oferece uma série de propriedades de filtro que podem ser aplicadas às imagens, permitindo que você ajuste o brilho, o contraste, a saturação e muito mais.

Você pode usar a propriedade filter para aplicar um filtro a uma imagem. Essa propriedade aceita várias funções de filtro, cada uma alterando diferentes aspectos da imagem.

img {
  filter: brightness(150%);
}

No código acima, a função brightness(150%) é aplicada à imagem. Isso aumenta o brilho da imagem em 150%.

Funções de filtro comumente usadas

Aqui estão algumas funções de filtro comumente usadas:

  • brightness(): Ajusta o brilho da imagem.
  • contrast(): Modifica o contraste da imagem.
  • saturate(): Altera o nível de saturação da imagem.
  • grayscale(): Converte a imagem em escala de cinza.
  • blur(): Aplica um efeito de desfoque à imagem.
  • sepia(): Aplica um efeito de tom sépia à imagem.

Você pode experimentar diferentes funções e valores de filtro para obter os efeitos visuais desejados. A combinação de vários filtros também pode produzir transformações mais complexas.

Criando sobreposições ao passar o mouse sobre imagens

As sobreposições ao passar o mouse sobre imagens podem trazer interatividade e interesse visual ao seu site. Quando um usuário passa o mouse sobre uma imagem, um efeito de sobreposição pode ser aplicado, como uma sobreposição de cor ou uma legenda de texto.

O CSS oferece várias técnicas para criar sobreposições ao passar o mouse; uma maneira é usando transições CSS. Ao fazer a transição de propriedades específicas de um elemento, você pode animar suavemente as alterações ao passar o mouse sobre uma imagem.

// HTML
<div class="image-container">
  <img src="image.jpg" alt="Description of the image">
  <div class="overlay"></div>
</div>

// CSS
.image-container {
  position: relative;
  display: inline-block;
}
.overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.image-container:hover .overlay {
  opacity: 1;
}

No código acima, um elemento .image-container envolve a imagem e um elemento .overlay. A sobreposição é inicialmente transparente (opacity: 0) e cobre toda a imagem. Quando você passa o mouse sobre .image-container, a opacidade de .overlay passa para 1, revelando a sobreposição de cores.

Para obter o efeito visual desejado, você pode personalizar a sobreposição ajustando as propriedades background-color e opacidade.

Resumo

A estilização de imagens com CSS abre um mundo de possibilidades criativas, permitindo que você aprimore o apelo visual e a interatividade das suas páginas da internet.

Quando você estilizar imagens com CSS, tenha sempre em mente a acessibilidade, a capacidade de resposta e o desempenho.

Qual é o estilo de imagem CSS que você mais usa? Qual deles te interessa mais? Deixe-nos saber nos comentários.

Joel Olawanle Kinsta

Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 200 technical articles majorly around JavaScript and it's frameworks.