Je viens d'apprendre l'existence d'une nouvelle unité CSS peu commune. vh
et vw
mesurez respectivement le pourcentage de hauteur et de largeur de la fenêtre.
J'ai regardé cette question de Stack Overflow, mais cela a rendu les unités encore plus similaires.
Comment fonctionnent les unités VW et VH
La réponse dit spécifiquement
vw et vh sont respectivement un pourcentage de la largeur et de la hauteur de la fenêtre: 100vw est 100% de la largeur, 80vw est 80%, etc.
Cela semble être exactement la même chose que l' %
unité, qui est plus courante.
Dans Developer Tools, j'ai essayé de changer les valeurs de vw / vh en% et vice versa et j'ai obtenu le même résultat.
Y a-t-il une différence entre les deux? Sinon, pourquoi ces nouvelles unités ont-elles été introduites CSS3
?
la source
Réponses:
100%
peut être100%
de la hauteur de n'importe quoi. Par exemple, si j'ai un parentdiv
de1000px
grande taille et un enfantdiv
en100%
hauteur, cet enfantdiv
pourrait théoriquement être beaucoup plus grand que la hauteur de la fenêtre, ou bien plus petit que la hauteur de la fenêtre, même si ellediv
est définie à100%
hauteur .Si je fais à la place de cet enfant
div
défini à100vh
, alors il ne remplira que100%
la hauteur de la fenêtre , et pas nécessairement le parentdiv
.la source
Je sais que la question est très ancienne et @Josh Beam a abordé la plus grande différence, mais il y en a encore une autre:
Supposons que vous ayez un
<div>
enfant direct de<body>
celui dont vous voulez remplir toute la fenêtre, donc vous l'utilisezwidth: 100vw; height: 100vh;
. Tout fonctionne de la même manière quewidth: 100%; height: 100vh;
jusqu'à ce que vous ajoutiez plus de contenu et qu'une barre de défilement verticale apparaisse. Étant donné que levw
compte de la barre de défilement dans le cadre de la fenêtre,width: 100vw;
sera légèrement plus grand quewidth: 100%;
. Cette petite différence finit par ajouter une barre de défilement horizontale (nécessaire à l'utilisateur pour voir cette petite largeur supplémentaire) et par conséquent, la hauteur serait également un peu différente dans les deux cas.Cela doit être pris en considération pour décider lequel utiliser, même si la taille de l'élément parent est la même que la taille de la fenêtre d'affichage du document.
Exemple:
Utilisation
width:100vw;
:Utilisation
width:100%;
:la source
body { overflow: hidden }
empêchera l'affichage des barres de défilement.Merci pour votre réponse et votre exemple de code, @IanC. Cela m'a beaucoup aidé. Une précision: je crois que vous vouliez dire «barre de défilement» lorsque vous avez écrit «barre latérale».
Voici quelques discussions connexes sur les unités de fenêtre comptant les barres de défilement que j'ai également trouvées utiles:
Pourquoi vw inclut-il la barre de défilement dans la fenêtre d'affichage?
L'utilisation de 100vw provoque un recadrage horizontal lorsque des barres de défilement verticales sont présentes
Empêcher 100vw de créer un défilement horizontal
Différence entre la largeur: 100% et la largeur: 100vw?
La spécification W3C pour les unités vw, vh, vmin, vmax (les "longueurs de pourcentage de la fenêtre") indique que "toute barre de défilement est supposée ne pas exister".
Apparemment, Firefox soustrait la largeur de la barre de défilement de 100vw, comme le commentaire de @ Nolonar à Différence entre la largeur: 100% et la largeur: 100vw? observe, citant «Puis-je utiliser».
Puis-je utiliser , peut-être en tension avec la spécification (?), Dit que tous les navigateurs autres que Firefox considèrent actuellement "incorrectement" 100vw comme la largeur totale de la page, y compris la barre de défilement verticale.
la source
les unités vw (largeur de vue) et vh (hauteur de vue) sont liées à la taille du port de vue, où 100vw ou vh est 100% de la largeur / hauteur du port de vue.
Par exemple, si un port de vue a une largeur de 1600 pixels et que vous spécifiez quelque chose comme étant 2vw, ce sera l'équivalent de 2% de la largeur du port de vue, soit 32 pixels.
% unit est toujours basé sur la largeur de l'élément parent de l'élément courant
la source
Il y a une différence qui n'a pas nécessairement été soulevée. 100vw inclut la largeur de la barre de défilement, tandis que 100% ne l'inclut pas. C'est une petite différence, mais importante lors de la conception.
la source