J'ai une DIV gauche avec id p> sidenav code> et un droit
principal code> divisez comme celui-ci
<div class="row">
<!-- navigation sidebar -->
<div class="col-2 pt-5" id="sideNav">
...
</div>
<!-- main content area -->
<main class="col-10">
...
</main>
</div>
4 Réponses :
c'est parce que corrigé obtient "ignoré" par d'autres conteneurs. Il est à la main comme si c'était absolu. Vous pouvez donner à votre barre latérale une largeur fixe et votre principal rembourrage.
#sideNav { background-color: #012d20; position: fixed; z-index: 1; top: 0; left: 0; overflow: hidden; border-right-style: groove; height: 100vh; width: 350px; } main { padding-left: 350px; }
La raison pour laquelle cela ne fonctionne pas pour vous, c'est parce que la ligne a une ligne d'affichage Flex, de sorte que tous les cols ci-dessous s'inscrivent dans cette ligne.
Vos cols sont ensuite espacés via leur valeur donnée par leur valeur donnée. COL-3 COL-4 etc p>
En modifiant le type d'affichage de la colonne (à fixer dans votre exemple), vous le supprimez de l'espacement Flex, et votre navigation principale se déplacera à gauche car vous ne l'avez pas compensé. . P>
Pour résoudre ce problème, n'en ajoutez pas de rembourrage, car d'autres ont suggéré, Bootstrap a des cours qui gèrent cela. Au lieu de cela, ajoutez Offset-2 à votre valeur de navigation principale et laissez tout le reste comme c'est. P>
P> <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<div class="row">
<!-- navigation sidebar -->
<div class="col-2 pt-5" id="sideNav">
...
</div>
<!-- main content area -->
<main class="col-10 offset-2">
...
</main>
</div>
Super, utiliser le décalage de bootstrap.
permet d'essayer,
iam ajoutant de la largeur pour Sidenav environ 40px; le même padding-gauche iam Mettez # contenu principal. p>
HTML P>
#sideNav { background-color: #012d20; position: fixed; z-index: 1; top: 0; left: 0; overflow: hidden; border-right-style: groove; height: 100%; width:40px; } #main-content{ width:100%; float:left; padding:0 0 0 40px; background:yellow; }
Je voyais que vous utilisez Bootstrap Grid, afin de garder la grille qui fonctionne, je vous recommande de mettre votre conteneur fixe dans le p> .col-2 code> div
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<div class="row">
<!-- navigation sidebar -->
<div class="col-2 pt-5">
<div id="sideNav">
...
</div>
</div>
<!-- main content area -->
<main class="col-10">
...
</main>
</div>
Donner le rembourrage-gauche à la main (largeur de la barre latérale)
Ouais, cela fonctionnerait mais cela signifie que je devrai également écrire une règle de CSS différente pour diverses tailles d'écran. N'y a-t-il pas un moyen de le faire fonctionner sans écrire plusieurs règles?
Vous n'avez pas vraiment besoin de positionner absolu si vous allez faire la première hauteur de la Div. Il suffit de mettre les deux divs comme flotteur: à gauche;