Eu sei que é impossível realmente modificar uma imagem com CSS, e é por isso que coloco recortar entre aspas.
O que eu gostaria de fazer é pegar imagens retangulares e usar CSS para fazê-las parecer quadradas sem distorcer a imagem.
Eu basicamente gostaria de transformar isso:
Nisso:
background-position
ou no div wrapper antigooverflow:hidden
e na imagem com posicionamento relativo.Respostas:
Supondo que eles não precisem estar em tags IMG ...
HTML:
CSS:
Edição: Se a div precisa vincular em algum lugar basta ajustar HTML e estilos da seguinte forma:
HTML:
CSS:
Observe que isso também pode ser modificado para responder, por exemplo% larguras e alturas, etc.
fonte
height: 460px; width: 100%;
e funciona como um encantoUma solução CSS pura, sem invólucro
div
ou outro código inútil:fonte
overflow:hidden
).Por exemplo:
fonte
Usando o tamanho do plano de fundo: cover - http://codepen.io/anon/pen/RNyKzB
CSS:
Marcação:
fonte
Na verdade, me deparei com esse mesmo problema recentemente e acabei com uma abordagem um pouco diferente (não consegui usar imagens de fundo). No entanto, é necessário um pouco de jQuery para determinar a orientação das imagens (tenho certeza de que você poderia usar JS simples).
Eu escrevi um post sobre isso se você estiver interessado em mais explicações, mas o código é bem simples:
HTML:
CSS:
jQuery:
fonte
$(this).load(function(){...
dentro de cada loop, para que o jQuery aguarde um pouco até que a imagem seja carregada e obtenha dimensões reais da imagem.Se a imagem estiver em um contêiner com uma largura responsiva :
HTML
CSS
fonte
Eu tive um problema semelhante e não pude "comprometer" as imagens de plano de fundo. Eu vim com isso.
Espero que isto ajude!
Exemplo: https://jsfiddle.net/cfbuwxmr/1/
fonte
Use CSS: overflow:
fonte
Use uma div com dimensões quadradas com a imagem dentro da classe .testimg:
ou uma div quadrada com um plano de fundo da imagem.
Aqui estão alguns exemplos: http://jsfiddle.net/QqCLC/1/
ATUALIZADO PARA OS CENTROS DE IMAGEM
fonte
object-fit: cover
fará exatamente o que você precisa.Mas pode não funcionar no IE / Edge. Siga como mostrado abaixo para corrigi-lo com apenas CSS para funcionar em todos os navegadores .
A abordagem adotada foi posicionar a imagem dentro do contêiner com absoluta e, em seguida, colocá-la no centro usando a combinação:
Uma vez no centro, dou a imagem,
Isso faz com que a imagem obtenha o efeito de Object-fit: cover.
Aqui está uma demonstração da lógica acima.
https://jsfiddle.net/furqan_694/s3xLe1gp/
Essa lógica funciona em todos os navegadores.
Imagem original
Cortado verticalmente
Cortado horizontalmente
fonte