2013-02-26 5 views
7

J'ai un site qui a un tas d'images différentes à afficher, toutes les différentes résolutions et les proportions. Est-il un moyen facile en CSS de redimensionner et recadrer les images à une certaine résolution? Pour mes besoins, je veux que l'image redimensionnée soit 280x280.Redimensionner et rogner des images avec CSS

Bien sûr, je peux simplement définir <img height = '280' width = '280' /> mais cela va l'étirer. Je voudrais le plus petit des deux résolutions, faire un carré, puis prendre les pixels du centre. Par exemple, si la résolution est de 480x200 je veux qu'il prenne une section de 200x200 hors du centre de l'image. J'ai essayé Google, mais en vain.

+0

Je doute que ca n le faire avec CSS – revolver

+0

Que diriez-vous de php? Mon site utilise php, donc c'est une option aussi, à moins qu'il ne ralentisse beaucoup le site. – jas7457

Répondre

9

une "vraie récolte" d'images avec css n'est pas possible. Real Crop signifie que l'image est réduite aux nouvelles valeurs et que sa taille est plus petite qu'auparavant.

Mais il existe une solution avec des marges négatives ou un positionnement absolu, ce qui vous aidera beaucoup. J'ai utilisé cette technique plusieurs fois.

S'il vous plaît jeter un oeil à: Cropping images with CSS

+0

Cela semble très prometteur. Je vais vérifier et voir si je peux le faire fonctionner – jas7457

-1

Vous pouvez définir la taille de toutes les images sur votre site Web avec CSS:

img { 
    width: 280px; 
    height: 280px; 
} 

Le problème est, que certaines images semblera étrange à cause de leur aspect radio. La meilleure chose serait de créer différentes tailles de chaque image (mieux connu sous le nom de vignettes) lorsque vous les télécharger. Noot sur l'exécution, cela prendrait trop de temps.

+3

Ne pensez pas que vous avez vraiment lu ma question. Je cours un blog de musique et j'ai besoin de quelque chose pour redimensionner/recadrer dynamiquement les images pour chaque publication.Je ne veux pas simplement les étirer, comme je l'ai dit dans ma question. – jas7457

+0

Oui, c'est pourquoi je vous ai dit que vous devez créer des miniatures via PHP;) – Chris

+0

Vous n'avez pas dit si les utilisateurs téléchargent des images ou simplement les lient. Il y a une grosse différence. – Chris

0

Je suis récemment tombé sur ce même problème récemment et je me suis retrouvé avec une approche légèrement différente de l'image de fond. L'autre différence principale est que mon chemin ne suppose pas de connaître la largeur et la hauteur de l'image - donc cela fonctionnera dynamiquement avec n'importe quelle image. Il faut cependant un petit peu de jQuery pour déterminer l'orientation des images (je suis sûr que vous pourriez utiliser simplement JS à la place).

J'ai écrit un blog post about it si vous êtes intéressé par plus explaination mais le code est assez simple:

HTML:

<ul class="cropped-images"> 
    <li><img src="http://fredparke.com/sites/default/files/cat-portrait.jpg" /></li> 
    <li><img src="http://fredparke.com/sites/default/files/cat-landscape.jpg" /></li> 
</ul> 

CSS:

li { 
    width: 150px; // Or whatever you want. 
    height: 150px; // Or whatever you want. 
    overflow: hidden; 
    margin: 10px; 
    display: inline-block; 
    vertical-align: top; 
} 
li img { 
    max-width: 100%; 
    height: auto; 
    width: auto; 
} 
li img.landscape { 
    max-width: none; 
    max-height: 100%; 
} 

jQuery:

$(document).ready(function() { 

    $('.cropped-images img').each(function() { 
     if ($(this).width() > $(this).height()) { 
     $(this).addClass('landscape');   
     } 
    }); 

}); 
Questions connexes