Comment Redimensionner automatiquement un DIV en CSS tout en gardant les proportions?
Ce que j'ai est une norme formulaire en HTML qui permet à l'utilisateur de sélectionner une "Largeur" et "Hauteur" de l'option (chacune avec des valeurs allant de 1 à 10). Lors de l'envoi du formulaire, il l'envoie à un PHP/HTML page PHP attrape la "Largeur" et "Hauteur" des variables et l'attribue à une largeur et une hauteur d'un DIV.
Mais ce que j'essaie de faire c'est d'utiliser la "Largeur" et "Hauteur" variables à attribuer un ratio d'aspect pour que le DIV, et alors que la DIV de redimensionnement automatique à 100% du conteneur, il est à l'intérieur, mais tout en gardant le même ratio d'aspect.
Exemple:
L'utilisateur sélectionne une Largeur de 4 et une Hauteur de 2, puis envoie le formulaire. Sur la réception de la page PHP, que DIV (celui qui reçoit la largeur et la hauteur des ratios) est à l'intérieur d'un conteneur 1000px de largeur et de 600px de hauteur. Alors maintenant, que DIV redimensionne à 1000px de large et 500px de haut (ce qui serait le ratio d'aspect de 4 à 2)
Des idées, des codes, des scripts serait extrêmement utile, merci beaucoup!
Aaron
Vous devez vous connecter pour publier un commentaire.
Depuis des valeurs en pourcentage de la
padding-*
propriétés sont calculées par rapport à la largeur de la boîte contenant le bloc, vous pourriez:padding-top
oupadding-bottom
), correspondant au rapport d'aspect désiré.Cette idée est tirée de http://ansciath.tumblr.com/post/7347495869/css-aspect-ratio
CSS:
HTML:
Note de la marge verticale peut être utilisée à la place de remplissage vertical, mais alors il y aurait de la marge de l'effondrement. Pour éviter cela, ajoutez
CSS:
HTML:
À l'aide de
::before
pseudo-élément, il n'y a pas besoin d'utiliser un élément de type dummy:CSS:
HTML:
content: '.'
content
afin d'être affiché. J'ai édité pour le plus simplecontent: ''
.Vous pouvez prendre avantage du fait que remplace éléments peuvent avoir une valeur intrinsèque de l'aspect ratio.
Selon le spec,
Par conséquent, vous pouvez
width:100%
à elle.Ensuite, le conteneur sera le ratio d'aspect que vous souhaitez.
Le premier élément pourrait être une image. Vous pouvez créer des images de format d'image désiré en PHP, ou à l'aide d'un tiers de service web comme http://placehold.it/
Dans l'extrait suivant, j'utilise un 2px 1px de largeur et de hauteur de l'image ():
CSS:
HTML:
Vous pouvez également utiliser un
<canvas>
élément au lieu d'une image. De cette façon, vous n'avez pas besoin de créer des images, mais il ne fonctionne pas sur les anciens navigateurs (IE 8 et versions antérieures):CSS:
HTML: