Gostaria de saber como eu poderia redimensionar uma imagem junto com a janela do navegador, aqui está o que fiz até agora (ou baixar o site inteiro em um ZIP ).
Isso funciona bem no Firefox, mas tem problemas no Chrome: a imagem nem sempre é redimensionada, de alguma forma depende do tamanho da janela quando a página foi carregada.
Isso também funciona bem no Safari, mas às vezes a imagem é carregada com sua largura / altura mínima. Talvez isso seja causado pelo tamanho da imagem, não tenho certeza. (Se carregar bem, tente atualizar várias vezes para ver o bug.)
Alguma ideia de como eu poderia tornar isso mais à prova de balas? (Se o JavaScript for necessário, posso aceitar isso também, mas CSS é preferível.)
Respostas:
Isso pode ser feito com CSS puro e nem requer consultas de mídia.
CSS:
E se você quiser impor uma largura máxima fixa da imagem, basta colocá-la dentro de um contêiner, por exemplo:
Exemplo JSFiddle aqui . Não requer JavaScript. Funciona nas últimas versões do Chrome, Firefox e IE (que é tudo o que testei).
fonte
2018 e solução posterior:
Usar unidades relativas à janela de visualização deve tornar sua vida mais fácil, já que temos a imagem de um gato:
Agora queremos esse gato dentro do nosso código, respeitando as proporções:
Até agora não é muito interessante, mas e se quisermos alterar a largura dos gatos para no máximo 50% da janela de visualização?
A mesma imagem, mas agora restrita a uma largura máxima de 50vw vw (= largura da janela de visualização) significa que a imagem terá a largura X da janela de visualização, dependendo do dígito fornecido. Isso também funciona para altura:
Isso restringe a altura da imagem a um máximo de 20% da janela de visualização.
fonte
No IE, o
onresize
evento é disparado a cada mudança de pixel (largura ou altura), portanto, pode haver problemas de desempenho. Atrasar o redimensionamento da imagem por alguns milissegundos usando window.setTimeout () do javascript.http://mbccs.blogspot.com/2007/11/fixing-window-resize-event-in-ie.html
fonte
Defina a propriedade resize para ambos. Em seguida, você pode alterar a largura e a altura assim:
fonte
Você está usando jQuery?
Porque fiz uma pesquisa rápida nos plugings jQuery e eles parecem ter algum plugin para fazer isso, marque este, deve funcionar:
http://plugins.jquery.com/project/jquery-afterresize
EDITAR:
Esta é a solução CSS, acabei de adicionar um style = "largura: 100%" , e funciona para mim pelo menos no Chrome e Safari. Eu não tenho ie, então apenas teste lá e me avise, aqui está o código:
fonte
s why I
estou perguntando a ele, se ele está usando jQuery, porque se ele usar, pode ser uma boa ideia apenas adicionar o plugin!Inicialmente, eu estava usando o seguinte html / css:
Então eu adicionei
class="img"
o<div>
assim:E tudo começou a funcionar bem.
fonte
Você pode usar a
scale
propriedade CSS3 para redimensionar a imagem com css:Leitura adicional :
fonte
Basta usar este código. O que a maioria está esquecendo é especificar a largura máxima como a largura máxima da imagem
Verifique esta demonstração http://shorturl.at/nBKVY
fonte
Experimentar
Funciona apenas com display block e inline block, não tem efeito nos flex items, já que passei anos tentando descobrir.
fonte