J'ai des images qui seront assez grandes en dimension et je veux les réduire avec jQuery tout en gardant les proportions contraintes, c'est-à-dire le même rapport hauteur / largeur.
Quelqu'un peut-il m'indiquer du code ou expliquer la logique?
javascript
jquery
image
resize
Kobe
la source
la source
max-width
etmax-height
sur100%
.<img src='image.jpg' width=200>
Réponses:
Jetez un œil à ce morceau de code sur http://ericjuden.com/2009/07/jquery-image-resize/
la source
max-width
etmax-height
sur100%
. jsfiddle.net/9EQ5cJe pense que c'est une méthode vraiment cool :
la source
Math.floor
que cela aidera vraiment avec un design pixel parfait :-)function imgSizeFit(img, maxWidth, maxHeight){ var ratio = Math.min(1, maxWidth / img.naturalWidth, maxHeight / img.naturalHeight); img.style.width = img.naturalWidth * ratio + 'px'; img.style.height = img.naturalHeight * ratio + 'px'; }
Si je comprends bien la question, vous n'avez même pas besoin de jQuery pour cela. Réduire l'image proportionnellement sur le client peut être fait avec CSS seul: il suffit de définir son
max-width
etmax-height
sur100%
.Voici le violon: http://jsfiddle.net/9EQ5c/
la source
width: auto; height: auto;
pour que votre code fonctionne :)Afin de déterminer le rapport hauteur / largeur , vous devez avoir un rapport à viser.
Dans cet exemple, j'utilise
16:10
depuis le format d'image typique du moniteur.Les résultats ci-dessus seraient
147
et300
la source
en fait, je viens de rencontrer ce problème et la solution que j'ai trouvée était étrangement simple et étrange
et miraculeusement l'image est redimensionnée à la nouvelle hauteur et en conservant le même rapport!
la source
Il y a 4 paramètres à ce problème
Et il y a 3 paramètres conditionnels différents
Solution
c'est tout ce que vous devez faire.
C'est un forum mature, je ne vous donne pas de code pour ça :)
la source
Ça
<img src="/path/to/pic.jpg" style="max-width:XXXpx; max-height:YYYpx;" >
aide?Le navigateur veillera à conserver le rapport hauteur / largeur intact.
c'est-à-dire entre
max-width
en action lorsque la largeur de l'image est supérieure à la hauteur et que sa hauteur sera calculée proportionnellement. De mêmemax-height
sera en vigueur lorsque la hauteur est supérieure à la largeur.Vous n'avez pas besoin de jQuery ou de javascript pour cela.
Pris en charge par ie7 + et d'autres navigateurs ( http://caniuse.com/minmaxwh ).
la source
Cela devrait fonctionner pour les images avec toutes les proportions possibles
la source
Voici une correction à la réponse de Mehdiway. La nouvelle largeur et / ou hauteur n'étaient pas définies sur la valeur maximale. Un bon cas de test est le suivant (1768 x 1075 pixels): http://spacecoastsports.com/wp-content/uploads/2014/06/sportsballs1.png . (Je n'ai pas pu le commenter ci-dessus en raison du manque de points de réputation.)
la source
la source
Si l'image est proportionnée, ce code remplira le wrapper avec l'image. Si l'image n'est pas proportionnée, la largeur / hauteur supplémentaire sera rognée.
la source
Sans temp-vars ou parenthèses supplémentaires.
Gardez à l'esprit: les moteurs de recherche ne l'aiment pas, si l'attribut largeur et hauteur ne correspond pas à l'image, mais ils ne connaissent pas JS.
la source
Après quelques essais et erreurs, je suis arrivé à cette solution:
la source
Le redimensionnement peut être réalisé (en maintenant le rapport hauteur / largeur) en utilisant CSS. Il s'agit d'une autre réponse simplifiée inspirée du post de Dan Dascalescu.
http://jsbin.com/viqare
la source
2 étapes:
Étape 1) Calculez le rapport largeur / hauteur d'origine de l'image.
Étape 2) Multipliez le rapport largeur_original / hauteur_original par la nouvelle hauteur souhaitée pour obtenir la nouvelle largeur correspondant à la nouvelle hauteur.
la source
Ce problème peut être résolu par CSS.
la source
Redimensionner pour s'adapter au conteneur, obtenir le facteur d'échelle, réduire le pourcentage de contrôle
la source
Cela a totalement fonctionné pour moi pour un élément déplaçable - aspectRatio: true
la source