117 votes

React - Composant plein écran (avec une hauteur de 100%)

Je suis coincé avec l'affichage d'un composant React nommé "home" qui prend 100% de la hauteur de mon écran. J'ai beau utiliser un style en ligne CSS ou React, cela ne fonctionne pas.

Dans l'exemple ci-dessous, html , corps y #app sont définis par la CSS avec la valeur height : 100%. Pour .home J'ai utilisé un style en ligne (mais que ce soit en CSS ou en style en ligne, c'est pareil) : enter image description here Le problème semble provenir <div data-reactroot data-reactid='1'> qui n'est pas défini avec height : 100%.

Si je le pirate avec l'outil de développement de Chrome, ça marche : enter image description here

Quelle est donc la bonne façon d'afficher un composant de pleine hauteur dans React ?

Toute aide est la bienvenue :)

2 votes

Votre composant <MyComponent ...> est ce qui crée ce div avec un reactid. Vous devez donc lui ajouter une classe ou un style, par exemple <MyComponent className="full-height">

0 votes

Merci beaucoup, vous aviez raison, j'ai juste oublié un composant supérieur !

89voto

bora89 Points 1511
html, body, #app, #app>div {
  height: 100%
}

Cela permettra à toute la chaîne d'être height: 100%

30 votes

Bien que ce code puisse répondre à la question, fournir des informations supplémentaires contexte concernant comment et/ou por qué elle résout le problème améliorerait la valeur à long terme de la réponse. Il n'est pas non plus inutile de mentionner pourquoi cette réponse est plus appropriée que d'autres.

6 votes

@Dev-iL plutôt que de dire ce qu'il faudrait faire, pourquoi ne pas faire ce qu'il faudrait faire.

2 votes

Fixer les valeurs de html y body sont nécessaires car 100% suivra le parent le plus "proche" qui a spécifié la dimension de manière explicite. Ce qui signifie que si les deux html y body ont indéterminé height les enfants avec height: 100% n'a aucun effet.

58voto

Daniel Kim Points 81

Vous pouvez aussi le faire :

body > #root > div {
  height: 100vh;
}

3 votes

Merci. Dans mon cas, j'ai omis de passer la hauteur par #Root

23voto

michaelfeng Points 271

Cela m'ennuie pendant des jours. Et finalement, j'utilise le sélecteur de propriétés CSS pour le résoudre.

[data-reactroot] 
        {height: 100% !important; }

3 votes

Devrait être la réponse acceptée. Pour être sûr, ajoutez : position: absolute; width: 100% !important; height: 100% !important;

2 votes

Cela fonctionne, mais peut causer des problèmes avec d'autres composants. Il doit y avoir une façon plus "correcte" de le faire.

12 votes

Mais où l'avez-vous ajouté ?

7voto

Aman Parmar Points 41

Ce n'est peut-être pas la réponse idéale, mais essayez ceci :

style={{top:'0', bottom:'0', left:'0', right:'0', position: 'absolute'}}

La taille reste attachée aux frontières, ce qui n'est pas ce que vous voulez, mais vous donne un peu le même effet.

6voto

user3785155 Points 26
body{
  height:100%
}

#app div{
  height:100%
}

cela fonctionne pour moi

1 votes

Cela rendra tous les divs n'importe où en dessous #app ont une hauteur de 100%. Vous pouvez utiliser #app>div en ne sélectionnant que les divs enfants immédiats de #app

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X