Je sais qu'il est impossible de modifier réellement une image avec CSS, c'est pourquoi je mets le recadrage entre guillemets.
Ce que j'aimerais faire, c'est prendre des images rectangulaires et utiliser CSS pour les faire apparaître carrées sans déformer l'image du tout.
J'aimerais essentiellement tourner ceci:
Dans ceci:
background-position
ou l'ancien div wrapper avecoverflow:hidden
et image avec un positionnement relatif.Réponses:
En supposant qu'ils ne doivent pas nécessairement figurer dans les balises IMG ...
HTML:
CSS:
EDIT: Si le div a besoin de créer un lien quelque part, ajustez simplement le HTML et les styles comme ceci:
HTML:
CSS:
Notez que cela pourrait également être modifié pour être réactif, par exemple% largeurs et hauteurs, etc.
la source
height: 460px; width: 100%;
et cela fonctionne comme un charmeUne solution CSS pure sans wrapper
div
ou autre code inutile:la source
overflow:hidden
).Par exemple:
la source
Utilisation de la taille de fond: couverture - http://codepen.io/anon/pen/RNyKzB
CSS:
Balisage:
la source
En fait, je suis tombé sur ce même problème récemment et je me suis retrouvé avec une approche légèrement différente (je ne pouvais pas utiliser d'images de fond). Cela nécessite cependant un petit peu de jQuery pour déterminer l'orientation des images (je suis sûr que vous pouvez utiliser JS à la place).
J'ai écrit un article de blog à ce sujet si vous êtes intéressé par plus d'explications mais le code est assez simple:
HTML:
CSS:
jQuery:
la source
$(this).load(function(){...
à l'intérieur de chaque boucle, donc jQuery attend un peu jusqu'à ce que l'image soit chargée et obtienne les dimensions réelles de l'image.Si l'image se trouve dans un conteneur avec une largeur réactive :
HTML
CSS
la source
J'ai eu un problème similaire et je ne pouvais pas «faire de compromis» avec les images de fond. Je suis venu avec ça.
J'espère que cela t'aides!
Exemple: https://jsfiddle.net/cfbuwxmr/1/
la source
Utilisez CSS: overflow:
la source
Soit utiliser un div avec des dimensions carrées avec l'image à l'intérieur avec la classe .testimg:
ou un carré div avec un arrière-plan de l'image.
Voici quelques exemples: http://jsfiddle.net/QqCLC/1/
MISE À JOUR POUR LES CENTRES D'IMAGE
la source
object-fit: cover
fera exactement ce dont vous avez besoin.Mais cela pourrait ne pas fonctionner sur IE / Edge. Suivez comme indiqué ci-dessous pour le réparer avec juste CSS pour fonctionner sur tous les navigateurs .
L'approche que j'ai adoptée a consisté à positionner l'image à l'intérieur du conteneur avec un absolu , puis à la placer au centre en utilisant la combinaison:
Une fois qu'il est au centre, je donne à l'image,
Cela donne à l'image l'effet de Object-fit: cover.
Voici une démonstration de la logique ci-dessus.
https://jsfiddle.net/furqan_694/s3xLe1gp/
Cette logique fonctionne dans tous les navigateurs.
Image originale
Recadrée verticalement
Recadrée horizontalement
la source