Dada qualquer imagem arbitrária, quero cortar um quadrado do centro da imagem e exibi-lo dentro de um determinado quadrado.
Esta pergunta é semelhante a esta: CSS exibe uma imagem redimensionada e cortada , mas não sei o tamanho da imagem, portanto não posso usar margens definidas.
Respostas:
Uma solução é usar uma imagem de plano de fundo centralizada em um elemento dimensionado para as dimensões cortadas.
Exemplo básico
Exemplo com
img
tagEsta versão mantém a
img
tag para que não percam a capacidade de arrastar ou clicar com o botão direito do mouse para salvar a imagem. Agradecemos a Parker Bennett pelo truque da opacidade.object-fit
/-position
Veja navegadores suportados .
A especificação de imagens CSS3 define as propriedades
object-fit
eobject-position
que, juntas, permitem maior controle sobre a escala e a posição do conteúdo da imagem de umimg
elemento. Com estes, será possível alcançar o efeito desejado:fonte
background-size: cover;
para reduzir a imagem ou preencher a div adequadamente, mantendo a proporção original.img
os atributos dasalt
formigastitle
serão perdidos para o seu SEO.object-fit: cover;
diretamente a tag img, que parece um pouco mais semântica.Eu estava procurando uma solução CSS pura usando
img
tags (não da maneira da imagem de fundo).Encontrei essa maneira brilhante de atingir a meta em miniaturas de culturas com css :
É semelhante à resposta de @Nathan Redblur, mas também permite imagens de retrato.
Funciona como um encanto para mim. A única coisa que você precisa saber sobre a imagem é se ela é retrato ou paisagem para definir a
.portrait
classe, então tive que usar um pouco de Javascript para esta parte.fonte
Tente isto: Defina as dimensões de corte da imagem e use esta linha no seu CSS:
fonte
Exemplo com
img
tag mas sembackground-image
Essa solução mantém a
img
marca para que não percam a capacidade de arrastar ou clicar com o botão direito do mouse para salvar a imagem, mas sembackground-image
apenas centralizar e cortar com css.Mantenha a proporção perfeita, exceto em imagens muito altas. (verifique o link)
(ver em ação)
Marcação
CSS
fonte
Criei uma diretiva angularjs usando as respostas @ Russ e @ Alex
Pode ser interessante em 2014 e além: P
html
js
ligação violino
fonte
Tente o seguinte:
Tenha em mente que
width
eheight
só irá funcionar se o seu elemento DOM tem layout (um bloco elemento exibida, como umdiv
ou umimg
). Se não estiver (um intervalo, por exemplo), adicionedisplay: block;
às regras de CSS. Se você não tiver acesso aos arquivos CSS, solte os estilos embutidos no elementofonte
Há outra maneira de cortar a imagem centralizada:
A única coisa que você precisará é adicionar a classe "vertical" às imagens verticais. Você pode fazer isso com este código:
Nota: "! Important" é usado para substituir possíveis atributos de largura e altura na tag img.
fonte