Question D'Origine
Quel est le moyen le plus efficace pour calculer la largeur d'une image par rapport à la div contenant en css?
J'ai le code suivant qui définit #image1.width
à un pourcentage par rapport à la largeur de son parent. Je suis à l'aide d'un pourcentage parce que j'ai besoin de l' image à l'échelle proportionnellement au parent lorsque l'écran est redimensionné.
div {
position: relative;
display: block;
width: 100%;
}
#image1 {
position: absolute;
left: 10%;
top: 10%;
width: 29.43%;
height: auto;
}
#under {
width: 100%;
}
<div>
<img id="image1" src="http://placehold.it/206x115">
<img id="under" src="http://placehold.it/700x300/ff00f0/ffffff">
</div>
Il travaille actuellement comme prévu, sauf que j'ai calculer manuellement le pourcentage de la largeur de chaque image. c'est à dire
#image1 dimensions == 206x115
#under dimensions == 700x300
new #image1.width % == #image1.width / #under.width == 206/700 == ~29.43%
Ce que je veux savoir c'est si il y a un id calc()
méthode ou similaire, je peut mettre en œuvre pour faciliter, simplifier ce processus?
J'allais utiliser width: calc(100% / 700)
cependant de toute évidence, cela ne fonctionnera pas lorsque la taille de l'écran change.
Objectifs
Pour ré-itérer, il est impératif que l' #under
de l'image s'adapte à la taille de l'écran et l' #image
reste proportionnée.
Je veux que l'image naturelle ratios conservés l'un à l'autre (c'est à dire une image qui est un quart de la taille de l'autre restera comme tel navigateur de largeur).
Remarque: L' html
peut être reconfiguré en aucune façon à atteindre cet objectif.
Cible les navigateurs: Chrome, Firefox, Edge.
Poste Prime D'Examen
Commentaire sur @Obsidienne Âge de réponse (fin de la première prime 31.03.17):
Malheureusement @Obsidienne Âge de réponse n'est pas correcte - c'est proche mais pas tout à fait et je voulais juste préciser ici... ci-Dessous est un extrait de sa réponse... à Noter que je pense que c'est une bonne réponse, juste clarifier la raison pour laquelle il n'a pas été acceptée:
:root {
--width: 90vw; // Must be viewport-driven
}
#image1 {
width: calc(var(--width) / 3); // The 3 can be replaced with any float
}
Paramètre --width: 90vw
ce qui se passe si body
ou div
ont un max-width
ensemble? C'est aussi très difficile à calculer pour tous les périphériques lorsque l'affacturage dans viewport-scaling
.
#image1 { width:calc(var(--width) / 3); }
, Ce qui équivaut à calc(90vw / 3)
qui 30vw
ce qui équivaut à 30% de la largeur des images. Mais comment pouvons-nous le nombre de diviser par? Eh bien, il est de retour là où nous avons commencé... width:calc(var(--width) * calc(206/700*100));
, Et c'est pourquoi je n'ai pas accepté cette réponse.