Imagens responsivas: truques CSS que economizam tempo

Se você está envolvido no desenvolvimento da Web, é altamente provável que esteja familiarizado com dois monstros, que serão discutidos no artigo, cuja tradução publicamos hoje. Estamos falando de imagens e prazos. Às vezes, por algum motivo, as imagens não desejam caber nos locais dos layouts de página projetados para elas, e você não pode gastar várias horas para descobrir isso.



O autor deste material diz que muitas vezes enfrentava um problema semelhante, e essas colisões lhe ensinaram algo. Aqui ele quer falar sobre cinco abordagens para gerenciar os tamanhos de imagem que ele mais gosta.

Abordagem nº 1: imagem de fundo


Sexta-feira. Cinco horas da noite. Você precisa urgentemente terminar uma determinada página. Tudo está pronto, o único problema são as imagens, que de nenhuma maneira se encaixam onde deveriam estar. Se isso aconteceu com você - aqui está uma ferramenta mágica que irá ajudá-lo:

.myImg {  background-image: url("my-image.png");  background-size: cover; } 

Parece familiar? Todos nós fizemos isso uma vez. Isso sugeriu uma fraude para você?

Usar as propriedades de background é muito útil, elas apenas fazem o que é esperado delas. No entanto, vale lembrar que eles devem ser usados ​​apenas para as imagens que não fazem parte do conteúdo principal da página, para imagens que substituem o texto e, em alguns casos especiais .

Abordagem # 2: ajuste ao objeto


E se eu disser que a propriedade de object-fit do object-fit aplica aos elementos <img> ? A propósito, ele também funciona com vídeo.

 .myImg { object-fit: cover; width: 320px; height: 180px; } 

Isso é tudo. Observe que a propriedade de object-fit do object-fit pode ser configurada para contain .

SupportSuporte para ajuste de objeto


Infelizmente, o object-fit não funcionará no IE e nas versões mais antigas do Safari, no entanto, nesses casos, existe um polyfill .

Aqui estão as informações de suporte obtidas aqui .


Suporte para navegadores de desktop ajustados ao objeto

Aqui está um exemplo usando ajuste de objeto

Abordagem nº 3: a maneira como a Netflix usa


O que acabamos de falar pode parecer interessante, mas em navegadores desatualizados, sem polyfills, isso não funcionará. Se você precisa de algo universal, talvez o que falaremos agora seja o mais adequado para você. Este método, um dos meus favoritos, funciona em qualquer lugar.

Consiste no fato de que a imagem deve ser colocada no elemento pai, cuja propriedade position é definida como relative e a propriedade padding é definida em termos percentuais. Como resultado, a imagem ocupará toda a área livre do elemento pai. É assim:

 .wrapper { position: relative; padding-top: 56.25%; /* 16:9 Aspect Ratio */ } img { position: absolute; left: 0; top: 0; width: 100%; height: auto; } 

Aqui você pode pensar que é muito complicado. No entanto, depois de entender o significado dessa técnica, você percebe que é muito simples e conveniente. Além disso, essa técnica é amplamente usada , por exemplo, no Netflix.


Dê uma olhada nos nomes das classes

Aqui está um exemplo da implementação desta técnica

Abordagem nº 4: altura


Aqui, para controlar o tamanho da imagem, use a propriedade height: auto e, além disso, a propriedade max-width . É possível que você já conheça esta técnica:

 img { height: auto; width: 100%; /*  max-width,     */ max-width: 720px; } 

Essa abordagem é aplicável na maioria dos casos, quando seu layout não é muito complicado.

Aqui está um exemplo

Abordagem nº 5: gerenciamento e desempenho de imagens


Por "desempenho", quero dizer o tempo de carregamento da página. Uma imagem grande pode levar muito tempo para carregar, o que dá ao usuário a impressão de que suas páginas estão lentas, especialmente se essas páginas são exibidas em dispositivos móveis.

Você sabia que nos navegadores modernos você pode alterar a fonte da imagem dependendo da largura da página? É por isso que o atributo srcset .

Atributos semelhantes podem ser usados ​​na tag HTML 5 . , , <img> . , , <img> :

 <picture> <source media="(max-width: 799px)" srcset="elva-480w.jpg"> <source media="(min-width: 800px)" srcset="elva-800w.jpg"> <img align="center" src="elva-800w.jpg"> </picture> 

Aqui está um exemplo

Sumário


Para resumir:

  • Se sua imagem não fizer parte do conteúdo da página, use background-image .
  • Se o suporte ao IE não lhe interessar, use object-fit .
  • A tecnologia de contêiner baseada na Netflix com padding personalizado funciona em qualquer lugar.
  • Na maioria dos casos, para resolver o problema com imagens, basta usar a propriedade height: auto no CSS;
  • Se você deseja reduzir o tempo de carregamento da página, use o atributo srcset para baixar imagens menores em dispositivos móveis.

Esperamos que as abordagens para trabalhar com imagens discutidas aqui sejam úteis para você.

Source: https://habr.com/ru/post/pt420619/


All Articles