Je veux que ma page pour avoir une mise en page de FlexBox, où l'en-tête et le séjour de pied au même endroit, mais le contenu remplit le reste de l'écran. Cependant, en raison de la façon dont ma page est mis en place, je dois utiliser un conteneur dans la zone de contenu principal de mon code. Cela me donne le problème d'une barre de défilement qui ne sont pas du côté de la page où il devrait être, il est plutôt au bord du récipient. Est-ce que quelqu'un peut m'aider soit à placer la barre de défilement là où elle est censée être, soit à me dire pourquoi je ne peux pas le faire comme je le fais et à me donner une solution de rechange viable?L'utilisation d'un FlexBox dans un conteneur d'amorçage me donne des barres de défilement dans les mauvais endroits
Voici l'exemple de travail d'origine sans amorçage:
https://jsfiddle.net/SuperMelons/n2s9xrt0/
HTML:
<div class="mybox">
<div class="myrow myheader">
<p><b>header</b>
<br />
<br />(sized to content)</p>
</div>
<div class="myrow mycontent">
<p>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
</p>
</div>
<div class="myrow myfooter">
<p><b>footer</b> (fixed height)</p>
</div>
</div>
CSS:
html,
body {
height: 100%;
margin: 0
}
.mybox {
display: flex;
flex-flow: column;
height: 100%;
}
.mybox .myrow {
border: 1px dotted grey;
}
.mybox .myrow.myheader {
flex: 0 1 auto;
}
.mybox .myrow.mycontent {
display: flex;
flex-flow: column;
flex: 1 1 auto;
overflow-y: auto;
}
.mybox .myrow.myfooter {
flex: 0 1 40px;
}
Voici l'exemple qui ne fonctionne pas à cause de le conteneur d'amorçage:
https://jsfiddle.net/SuperMelons/2L5cbt8m/2/
HTML avec Bootstrap:
<div class="mybox">
<div class="myrow myheader">
<p><b>header</b>
<br />
<br />(sized to content)</p>
</div>
<div class="myrow mycontent container">
<p>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
content<br>
</p>
</div>
<div class="myrow myfooter">
<p><b>footer</b> (fixed height)</p>
</div>
</div>
assez sûr ceci est impossible avec CSS. Le broswer ajoute des barres de défilement lorsqu'il y a un débordement. Puisque la page ne déborde pas, vous n'avez pas de barres de défilement sur la page. JS pourrait faire quelque chose. –
Une solution simple consiste à définir 'largeur: 100%' 'dans votre règle de mybox', ce qui évite également la requête des médias _bootstraps_ de la largeur fixe applique à certaines tailles d'écran https://jsfiddle.net/2L5cbt8m/6/ – LGSon