J'ai trouvé une solution parfaite qui fonctionne. J'étais aussi coincé avec ce problème, alors j'ai essayé de le découvrir. Lorsque vous faites défiler la page vers le haut dans l'iPhone, la barre inférieure de Safari est masquée. C'est peut-être le même problème que vous avez rencontré ?
J'ai essayé cette solution dans react.
Et si ce n'est pas ce que vous dites, une autre solution pour votre problème est de ne pas utiliser 100vh comme hauteur partout, mais plutôt 100%.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My Website</title>
<style>
body, html, root {
height: 100vh;
margin: 0;
padding: 0;
}
.header {
position: fixed;
background-color: steelblue;;
width: 100vw;
height: 50px;
z-index: 1;
}
.content {
display: flex;
position: absolute;
top: 50px;
min-height: calc(100vh - 50px);
}
</style>
</head>
<body>
<div>
<div class="header">
Header
</div>
<div class="content">
<div>
<p>The header will stick to the top when you reach its scroll position.</p><p>Scroll back up to remove the sticky effect.</p>
<p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset
concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum.
Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
<p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset
concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum.
Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
<p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset
concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum.
Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
<p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset
concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum.
Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p><p>Some
text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et
eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus
repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p><p>Some text to enable
scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera
fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et.
Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p><p>Some text to enable scrolling.. Lorem ipsum
dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae
gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his
ad. Eum no molestiae voluptatibus.</p><p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum
definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id
agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae
voluptatibus.</p><p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo,
maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur
eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
<p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset
concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum.
Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p><p>Some
text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et
eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus
repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
<p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset
concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum.
Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
<p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset
concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum.
Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
<p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset
concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum.
Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
<p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset
concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum.
Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
</div>
</div>
</div>
</body>
</html>
2 votes
Si j'ai bien compris la question, le problème auquel vous êtes confronté est que dans le navigateur mobile, la hauteur est supérieure à la hauteur du viewport visible n'est-ce pas ?
0 votes
Intéressant, je n'avais jamais remarqué ça avant. C'est principalement l'image d'arrière-plan qui est sensiblement instable. Et si vous ajoutiez un
transition: 0.5s
ou plus, pour que le changement soit moins brutal ?1 votes
@GauravAggarwal non, c'est exactement le contraire : la hauteur réelle du viewport est supérieure à celle fournie par le navigateur lorsque sa barre d'adresse est visible...
2 votes
Puisque ma question devient populaire, je voudrais donner mes 5 centimes : ne serait-il pas plus intelligent de maintenir la hauteur réelle de la fenêtre et de ne faire glisser que la barre de menu vers le haut ? cela ne semble pas si difficile. En fait, ça devrait être plus facile... un doigt vers le haut -> la barre de menu glisse vers le haut jusqu'à ce qu'elle soit invisible, un doigt vers le bas -> la barre de menu glisse vers le bas jusqu'à ce qu'elle soit complètement visible... le tout avec le corps sans aucun réajustement ni effet de saut...
7 votes
Google a de bonnes informations à ce sujet : developers.google.com/web/updates/2016/12/url-bar-resizing Vous pouvez utiliser 100% au lieu de 100vh SI vous avez changé la hauteur du corps à 100%.
2 votes
J'ai remarqué le contraire. Malheureusement,
100vh
dans Chrome sur iOS égaleouterWidth
au lieu de deinnerWidth
ce qui me pose des problèmes puisque ces barres de navigation ne disparaissent que lorsque l'on fait défiler la page.body
élément. Malheureusement, c'est un élément enfant qui défile sur mon site Web, de sorte que les barres ne disparaissent jamais et que la navigation sur mon site Web est masquée par ces barres de navigation...0 votes
@Benisburgers cela casse complètement ma mise en page. Je cache les barres de défilement sur un élément avec un débordement, de sorte qu'au lieu de faire défiler la fenêtre entière, vous ne faites défiler que l'élément avec un débordement.
1 votes
Je pense avoir trouvé une très bonne solution à cette "fonctionnalité" : stackoverflow.com/questions/58886797/