Je développe un site où l'image de profil des utilisateurs doit être affichée en cercle. Il y a beaucoup de cercles sur ce site et la taille du cercle peut varier.
Je peux afficher correctement les images carrées, mais je rencontre un problème avec les images verticales et horizontales.
Je dois afficher l'image dans un cercle avec les critères ci-dessous:
500x300
. L'image doit être rognée à 100 pixels des côtés droit et gauche afin que le centre de l'image soit affiché. Maintenant, l'image devrait être 300x300
, centrée. Ensuite, je dois faire un cercle à partir de cette image. OR masque 100 pixels de droite et de gauche de l'image à l'aide de CSS.300x500
, les zones supérieure et inférieure doivent être masquées à l'aide de CSSQue dois-je faire pour résoudre ce problème? Les réponses CSS uniquement sont meilleures pour moi, si possible.
background-size
MDN - Astuces CSS - Puis-je utiliser
Comme les tailles d’image sont variables, vous voulez vous assurer qu’elles cover
la div ainsi que center
ed qu’elle contient.
L'ajout du border-radius: 50%;
vous donnera l'effet de cercle.
.user {
display: inline-block;
width: 150px;
height: 150px;
border-radius: 50%;
background-repeat: no-repeat;
background-position: center center;
background-size: cover;
}
.one {
background-image: url('http://placehold.it/400x200');
}
.two {
background-image: url('http://placehold.it/200x200');
}
.three {
background-image: url('http://placehold.it/200x400');
}
<div class="user one">
</div>
<div class="user two">
</div>
<div class="user three">
</div>
En pratique, vous ne voudriez pas avoir une classe pour chaque image, vous devriez donc la spécifier avec un style en ligne dans le balisage:
<div class="user" style="background-image:url('path/to/user/img.png')"></div>
object-fit
MDN - Astuces CSS - Puis-je utiliser
Une alternative plus récente consiste à utiliser la propriété object-fit
sur une balise <img>
normale. Cela ne fonctionne pas dans IE ou dans les versions antérieures d'Edge.
.user {
display: inline-block;
width: 150px;
height: 150px;
border-radius: 50%;
object-fit: cover;
}
<img src="http://placehold.it/400x200" class="user">
<img src="http://placehold.it/200x200" class="user">
<img src="http://placehold.it/200x400" class="user">
définir l'image comme arrière-plan, centré.
<div class="image"></div>
css:
.image{
width: 300px;
height: 300px;
border-radius: 50%; /*don't forget prefixes*/
background-image: url("path/to/image");
background-position: center center;
/* as mentioned by Vad: */
background-size: cover;
}
<html>
<head>
<style>
#circle
{
border-radius:50% 50% 50% 50%;
width:300px;
height:300px;
}
</style>
</head>
<body>
<img src="skin-tone.jpg"
id="circle">
</body>
</html>
Si vous utilisez bootstrap, vous avez la classe img-circle pour le faire.