les éléments {1,2} font un vh de 88 et l'élément {3} fais un vh de 12. Totalisant un total de 100 et prenant ainsi toute la page.
Si je veux que ces éléments fassent 100 de vh et pas plus, c'est car ne je veux pas que le site soit scrollable. Uniquement les éléments 1 et 2 indépendamment.
Cependant lorsque je met la propriété
overflow: scroll;
aux éléments 1,2 ils disparaissent (ou plutot ils prennent une largeur de 0 en vérifiant avec une inspection)
Quelque chose m'échappe, tu souhaites ne pas avoir de scroll, mais tu ajoutes derrière overflow: scroll; dont le but est justement d'ajouter un scroll, est-ce que j'aurais mal compris.
Normalement tu ne dois pas avoir de scroll si tu fais 12vh+88vh sauf si tu ne mets pas de reset CSS, dans ce cas il y aura les marges du body j'imagine ce qui doit fausser le calcul.
Il me semble qu'une bonne pratique en HTML/CSS en 2020 est de commencer en mettant un reset CSS qui peut éviter ce genre de problèmes, mais je m'écarte ce n'est peut-être pas le débat
Pour ce que tu veux faire, ce qui me semble le choix le plus judicieux est de te tourner vers le display grid. Je t'ai fait un petit codepen, si tu as des questions hésites pas
Cela fait des années que tous les reset CSS sont à fuir : https://www.emmanuelbeziat.com/blog/les-resets-css-a-la-poubelle/
Kovsky a écrit:
Il me semble qu'une bonne pratique en HTML/CSS en 2020 est de commencer en mettant un reset CSS qui peut éviter ce genre de problèmes, mais je m'écarte ce n'est peut-être pas le débat
Je ne rentrerai pas dans le débat des reset CSS ici n'étant pas le sujet de la discussion. Si vous souhaitez ouvrir un topic pour en discuter ce sera avec plaisir
Pour illustrer mon propos un autre codePen qui illustre le problème de l'auteur du topic qui se demande pourquoi avec 10vh + 90vh, il se retrouve avec un scroll
Le souci vient très probablement d'une marge non retirée quelque part. Il faudrait l'intégralité du code pour pouvoir le dire.
Par contre, l'intérêt d'utiliser flex et les hauteurs en vh est ici plutôt limitatif. Et si la hauteur du header venait à changer (modification du contenu, largeur de fenêtre réduite, modification du zoom par l'utilisateur, utilisation de CSS custom pour l'accessibilité) ?
- 2 suite à votre réponse je précise que le pb de vh 90+10vh ne marche pas à cause de la marge par défaut sur la balise body
Dans votre codepen vous retirez cette marge avec margin: auto;
Si vous permettez je trouve le choix de auto un peu douteux qui laisse le soin au navigateur de calculer une marge, ne serait-il pas plus judicieux et explicite de mettre à 0 ?
Car c'est bien là le problème nous avons une marge alors nous n'en souhaitons pas.
Nous souhaitons avoir une marge à 0 pour que 100vh = 90vh +10vh et ne pas avoir de scroll
Euuh, je crois que tu me confonds avec Mewen_bzh ?
Sinon, auto n'est pas une marge, c'est la hauteur du bloc.
Le problème est JUSTEMENT de vouloir que 100vh = 90+10vh (ou 88+12, dans l'exemple initial). Fixer une hauteur n'est pas une bonne idée, surtout avec des valeurs relatives.
Dans cet exemple, le header variera non pas en fonction de son contenu, mais en fonction de la taille du viewport. Si je redimensionne ma fenêtre, le header est modifié, quitte à tronquer son contenu. Si je change le contenu, la hauteur du bloc ne s'adaptera pas.
Avec auto + fr, le problème ne se présente pas, et le layout sera toujours adapté, peu importe le contenu et le viewport.
- Edité par EmmanuelBeziat 19 octobre 2020 à 16:08:42
Il n'y a pas de mauvais navigateur, il n'y a que du mauvais code !
Ah, au temps pour moi, je croyais qu'on parlait du auto sur la grid en lieu et place des hauteurs en vh.
Non, ça effectivement c'est une erreur d'inattention de ma part. Même si auto produira le même résultat tant qu'on n'indique pas à body une largeur définie, c'est bien 0 qu'il faut mettre en général.
Il n'y a pas de mauvais navigateur, il n'y a que du mauvais code !
merci beaucoup ! je ne m'attendais pas a d'autant d'aide !
suite à vos conseils, je vais positionner mes 3 éléments en display grid.
Cependant il y a un quiproquo (et c'est ma faute j'ai mal expliqué) le problème n'est pas que ma fenêtre est scrollable, elle ne l'est d'ailleurs pas (avec 100vh en tout, et il n'y a pas de margin en plus)
Je ne veux pas que la fenêtre soit scrollable mais uniquement et indépendamment les éléments 1 et 2. et lorsque je leur met un overflow: scroll à ces éléments, ils prennent une width de 0.
J'appuie ça par un exemple sur le site d'ups par exemple:
On voit bien que c'est un élément (ici la liste des points relais) qui est indépendamment scrollable de la page !
J'ai mis le codepen à jour, pas de problème pour ajouter le scroll, je préfère mettre le scroll uniquement sur la partie verticale avec overflow-y qui a la valeur auto, plutot que scroll, ainsi si le contenu est réduit le scroll disparait
merci beaucoup pour votre aide. ton codepen m'a été super utile !
width:0 lorsque j'ajoute overflow: scroll;
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Développeur react freelance à Toulouse
Je suis développeur react freelance spécialisé dans la création de site internet basé à Toulouse
Développeur react freelance à Toulouse
Je suis développeur react freelance spécialisé dans la création de site internet basé à Toulouse
Il n'y a pas de mauvais navigateur, il n'y a que du mauvais code !
Développeur react freelance à Toulouse
Je suis développeur react freelance spécialisé dans la création de site internet basé à Toulouse
Il n'y a pas de mauvais navigateur, il n'y a que du mauvais code !
Développeur react freelance à Toulouse
Je suis développeur react freelance spécialisé dans la création de site internet basé à Toulouse
Il n'y a pas de mauvais navigateur, il n'y a que du mauvais code !
Développeur react freelance à Toulouse
Je suis développeur react freelance spécialisé dans la création de site internet basé à Toulouse