0
votes

Comment ajuster les dimensions de l'image dans le conteneur parent?

J'essaie d'ajuster les dimensions de l'image après l'avoir téléversée. Supposons que mon image téléchargée a à l'origine des dimensions 450x700 et que son conteneur parent a des dimensions 400x400. Dans mon cas, j'utilise object-fit pour adapter l'image à son conteneur parent en préservant les proportions et cela ressemble à

 entrez la description de l'image ici

Mais j'ai besoin d'afficher l'image complètement et object-fit n'est pas la bonne option dans ce cas. La suppression de object-fit et l'ajout de la largeur et de la hauteur avec 100% le rend entièrement visible, tout en diminuant la qualité. Ici, ça ressemble à

 entrez la description de l'image ici

 entrez la description de l'image ici

Dans la dernière image, l'image originale est celle-ci

 entrez la description de l'image ici

En fait, je peux le résoudre avec object-fit: contain , mais ce n'est pas à 100% pour moi ou peut-être qu'il n'y a pas d'autre moyen. Avec contenir, j'obtiens ça

 entrez la description de l'image ici

Vous pouvez remarquer le fond blanc de l'image, qui ne vient pas bien avec la couleur de fond du conteneur (qui est gris clair). Y a-t-il une possibilité de le résoudre?


1 commentaires

si vous utilisez la balise img, vous pouvez essayer d'utiliser les trois propriétés height: 100%; largeur: 100% et ajustement de l'objet: couverture


5 Réponses :


2
votes

Quand vous dites que object-fit ne fonctionne pas, est-ce parce qu'il recadre l'image? Et avez-vous essayé de changer object-fit: cover en object-fit: contain ?

Une autre option est d'avoir l'image comme image d'arrière-plan et de définir la taille de l'arrière-plan à contient également. Cela redimensionnera l'image pour qu'elle tienne dans les limites en conséquence. par exemple

.image__wrapper {
    background: url(../your-img.jpg);
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
}

Malheureusement, l'étirement de l'image pour l'adapter sera toujours déformé et donc dégrader l'image.


1 commentaires

Si l'arrière-plan de l'image est toujours blanc, vous pouvez simplement définir une couleur d'arrière-plan pour le wrapper parent (par exemple background-color: white )



1
votes

vous pouvez utiliser la propriété css ..

background: url('images_here')no-repeat center center
 background-size: cover (or) contain
 width:400px;
 height: 400px;


0 commentaires

1
votes

Si vous voulez que l'image complète soit visible, vous devez utiliser object-fit: contain , voir https://www.w3schools.com/css/css3_object-fit.asp .

<html>
<head>
<style>
.contain {object-fit: contain;}
</style>
</head>
<body>

<h1>The object-fit Property</h1>

<h2>object-fit: contain:</h2>
<img class="contain" src="SOMEFILENAME.jpg" alt="Paris" style="width:200px"> <!--Put the restricting size value here-->

</body>
</html>


1 commentaires

Utilisez des images avec des canaux alpha (comme png) ou utilisez des svgs. Une autre façon consiste à définir l'arrière-plan des parents sur blanc également.



1
votes

image-parent suppose qu'il s'agit de votre classe de conteneur parent.Vous pouvez donc ajouter des css comme ceci

.image-parent img{
    height:400px;
    width:auto;
    display:block;
    margin:0 auto;
}

0 commentaires

1
votes

Si sa balise d'image, vous pouvez définir object-fit: contain avec la hauteur et la largeur et si son image d'arrière-plan, vous pouvez définir background-size: contain


2 commentaires

Cela n'est possible que si vous modifiez les images avant de les télécharger, sinon vous devez scarifier une chose, soit l'image complète avec l'image coupée, soit une image avec un arrière-plan. L'autre astuce consiste à utiliser une classe de couleur pour remplir l'arrière-plan avec l'arrière-plan de l'image, mais cela n'est pas possible pour vous lorsque des images inconnues sont téléchargées @NorayrGhukasyan


Le plaisir est tout à moi @NorayrGhukasyan mais je vous suggère de visiter les ans de KEVIN dans ce lien peut-être vous aider stackoverflow.com/questions/3029422/...