J'ai besoin de créer un DIV où width=height
et height=100%
de la fenêtre d'affichage (qui, évidemment, est variable).
En d'autres termes, un DIV parfaitement carré qui calcule ses dimensions en fonction de la hauteur de la fenêtre . Les éléments de cette DIV prendront leurs dimensions sous forme de pourcentages de la hauteur et de la largeur de la DIV-parent.
Il me semble que cela devrait être simple à faire en CSS , mais je suis resté coincé avec! Tous les indicateurs seraient très appréciés.
Vous pouvez le faire avec jquery (ou javascript pur si vous préférez).
Avec jquery:
<div id="square">
</div>
$(document).ready(function(){
var height = $(window).height();
$('#square').css('height', height);
$('#square').css('width', height);
});
Il y a une astuce en utilisant pure css que je suis tombé sur:
#square {
width: 100%;
height: 0;
padding-bottom: 100%;
}
J'espère que cela pourra aider.
vh
unitésPour redimensionner l’élément en fonction de la hauteur de la fenêtre, vous pouvez utiliser les unités vh:
vh: 1/100ème de la hauteur de la fenêtre. [ source MDN ]
Exemple:
body{margin:0;}
div{
background:gold;
height:100vh;
width:100vh;
}
<div></div>
Cela rendra la largeur et la hauteur de l'élément égales à la hauteur de la fenêtre.
Le support Bowser pour les unités vh est IE9 +. Plus d'infos ici
Une astuce supplémentaire que j'ai proposée pour aider à résoudre partiellement ce problème, pour tous ceux qui trébuchent sur cette page ... Exécutez le code suivant dans l'événement onload de votre page:
$('body').css('font-size',$(window).height()/100)
Cela signifie que l'unité "em" css est égale à 100e de la hauteur de votre page. Vous pouvez maintenant l'utiliser de manière arbitraire dans votre fichier CSS pour redimensionner tout élément par rapport à la hauteur de votre fenêtre. C’est plus générique que les autres solutions énumérées ici. Et probablement, vous souhaitez redimensionner tous des éléments de votre page pour prendre en compte la hauteur de votre fenêtre. Par exemple, si vous voulez maintenant créer votre carré, vous pouvez simplement écrire:
#square{width:100em;height:100em}
Bien sûr, vous devrez également en tenir compte pour tout texte de votre page (car cette astuce affecte la taille de la police)
CSS3 a un moyen de le faire en utilisant vw, viewport width et vh, viewport height. En utilisant ces mesures, 100vw correspond à la largeur totale de la fenêtre et 100vh à la hauteur totale. Plus d'informations sur les valeurs relatives css3 et les unités ici .
Au moment de la rédaction de cet article, le seul support concerne toutefois Internet Explorer 9; il ne s'agit donc probablement pas de ce que vous recherchez, mais de quelque chose de bien à garder à l'esprit lors du support ultérieur.
Pour ceux qui recherchent une méthode CSS pure pour contenir un squarediv
avec les dimensions maximales:
La chose importante à retenir ici est que vous définissez
max-width
etmax-height
en définissantwidth
etheight
aux valeurs opposées.
HTML
<div>
</div>
CSS
html, body {
margin: 0;
padding: 0;
width: 100vw;
height: 100vh;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
}
div {
background-color: red;
width: 100vh;
height: 100vw;
max-width: 100vw;
max-height: 100vh;
}
Exemple d'exécution en cours:https://jsfiddle.net/resistdesign/szrv5o19/
Je ne sais pas si je comprends bien, mais si vous voulez le régler à 100% oh la hauteur de la fenêtre, vous pouvez facilement le faire en CSS
.stuff {
background:#DDD;
display:inline-block;
height: 100vh;
width : 100vh;
}
Vous pouvez le vérifier ici
Vous pouvez utiliser Javascript et obtenir la taille de l'écran. Après quoi, vous pouvez définir la largeur et la hauteur en conséquence.
window.screen.width et window.screen.height devrait fonctionner.
Vous pouvez ensuite utiliser ces informations et générer un petit peu de CSS pour que la page soit affichée en conséquence.