Vignettes d'image CSS pure
Je veux afficher une collection de vignettes dans une grille. Les images viennent dans une variété de tailles, mais j'aimerais limiter les vignettes pour une taille donnée (disons 200px
large et 150px
de haut).
Ce que j'aimerais trouver sont magiques balisage HTML et CSS règles
- Permettre les images à inclure dans la normale
<img>
éléments - De s'assurer que les vignettes s'intégrer dans leur 200x150 pixels, conservent leurs proportions, et sont centrées dans n'importe quelle dimension ils débordement.
- Pas besoin de JavaScript ou de connaissances particulières de chaque image dimensions réelles
Je ne suis pas sûr si cela est possible. Je peux faire un (mauvais) approximation de ce que je veux avec le balisage suivant:
<div class="thumb">
<img src="360x450.jpeg">
</div>
et CSS:
.thumb {
width: 200px;
height: 150px;
overflow: hidden;
}
.thumb img {
min-width: 200px;
min-height: 150px;
width: 200px;
}
Cette tentative se brise dans une variété de façons:
- Images qui sont en orientation portrait sera de taille correctement, mais un débordement à travers le fond du récipient, résultant à la verticale-centre de recadrage.
- Images qui sont larges et courtes sera déformée dans la dimension horizontale, en raison de la codées en dur
width
etmin-height
règles. - Mais sans que codée en dur
width
les images qui sont plus grandes que la hauteur minimale et la largeur ne sera pas redimensionnée.
Si c'est utile, j'ai mis un exemple qui va (je l'espère) illustrer ce que je suis en train de faire, ici:
Je sais que je peux résoudre ce problème en omettant la <img>
élément tout à fait et au lieu de tirer la forme de miniatures dans un centré sur l'image de fond sur l'élément conteneur, mais, si c'est possible, j'aimerais garder le <img>
les éléments dans la page.
Merci pour toute aide ou des pointeurs vous pouvez fournir!
Edit: je suppose que je devrais noter que l'idéal d'une solution fonctionne dans IE 6+ et les navigateurs modernes, mais aucune solution qui fonctionne dans IE 9+ et les autres navigateurs modernes (récent WebKit, Gecko, etc.) seront acceptés avec plaisir.
source d'informationauteur Will McCutchen
Vous devez vous connecter pour publier un commentaire.
Possible, probablement.
Aussi, probablement pas la meilleure idée. Votre gros problème à surmonter ici est l'orientation de vignettes. Que faire si vous avez affaire à un panorama? Certainement, qui rétrécit va créer une très inesthétique "écrasé" de l'image, comme le ferait une très grande image. Il est rare que tout le monde traite en 4X3 ou 16X9 100% du temps. Ainsi, vous aurez besoin d'un mécanisme pour combler l'image. Même si le ratio est correct, il ne va pas à redimensionner aussi proprement que vous pouvez faire avec un logiciel comme Photoshop ou Gimp.
L'autre problème majeur dans ce processus de pensée est que vous allez envoyer des quantités massives de données inutiles sur le serveur via les grandes images. Ça va prendre plus de temps à charger, remplir le DOM inutilement, et dans l'ensemble juste inhiber l'expérience d'INTERFACE utilisateur.
Il y a un certain nombre de méthodes pour contourner ce problème, aucun d'entre eux pur CSS. J'ai abordé ce problème plusieurs fois, chacun d'une manière unique basé sur le client. Pour un client qui voulait que les choses totalement personnalisé, c'était une coutume uploader, redimensionnement via iMagick (partie de l'image de la magie) et custom CSS/Javascript pour l'album avec les grands de l'interactivité. Dans un autre exemple, j'utilise Galerie comme le backend--la manipulation de la création de la miniature, le téléchargement, la délivrance de titres de propriété, de recadrage et de l'organisation-et ensuite juste tiré la reformaté le lien d'une image de la DB pour les afficher en plus attrayant. Vous pouvez aussi économiser encore plus d'ennuis et il suffit d'utiliser quelque chose comme l'api de Flickr pour tirer des images pour votre utilisation.
Voici un tut sur en utilisant ImageMagick pour faire des miniatures.
Vous pouvez (genre de) réaliser avec les CSS3
background-size
ajouts:contain
etcover
.Démonstration En Direct
contain
(photo du haut) correspond à la totalité de l'image, en gardant les proportions. Rien n'est recadrée.cover
(photo du bas) remplit le contenant de l'élément, soit verticalement ou horizontalement (selon l'image) et les cultures le reste.Eh bien, je sais pour les pouces comme vous le souhaitez, max et min si vous voulez une petite image pour la rendre de plus en plus grande de l'image pour la rendre plus petite.
essayez de régler max-width et la hauteur, et pas min parce que si l'image n'est pas exactement ce que la taille elle déborde 🙂