Ajouter de défilement pour chaque colonne dans la Grille CSS de Mise en page
Je veux séparer de défilement sur chacune de mes colonnes dans ma grille de mise en page.
Actuellement, je suis en train d'élaborer un mobile uniquement de l'application web. Je veux utiliser une autre grille de mise en page pour les orientations portrait et paysage.
L'orientation portrait est à seulement 1 colonne et chaque élément est après les autres. Pas de problème ici.
Dans le paysage de l'orientation que je veux utiliser 2 colonnes. Tout mon contenu est affiché sur le côté gauche et ma navigation se déplace vers le côté droit. Maintenant, je veux les deux parties d'avoir un défilement. Est-il un moyen pour mettre en œuvre cette? Et le défilement doit s'arrêter si le contenu de la colonne en cours se termine.
Code sur CodePen: https://codepen.io/SuddenlyRust/pen/rmJOqV
CSS:
.grid-container {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: 1fr;
grid-gap: 15px 0;
}
header {
background-color: green;
grid-column: 1;
grid-row: 1
}
main {
background-color: blue;
grid-column: 1;
grid-row: 2;
}
nav {
background-color: pink;
grid-column: 1;
grid-row: 3;
}
footer {
background-color: teal;
grid-column: 1;
grid-row: 4;
}
@media only screen and (orientation: landscape) {
.grid-container {
grid-template-columns: 5fr 4fr;
}
nav {
grid-column: 2;
grid-row: 1 / span 3;
}
footer {
grid-row: 3;
}
}
h1 {
min-height: 200px;
}
HTML:
<div class="grid-container">
<header>
<h1>Logo</h1>
</header>
<main>
<h1>content</h1>
</main>
<nav>
<h1>Navigation</h1>
</nav>
<footer>
<h1>Footer</h1>
</footer>
</div>
Je vous remercie beaucoup pour votre temps!
Vous devez vous connecter pour publier un commentaire.
Dans la colonne de gauche vous avez trois éléments de la grille: le
header
,main
etfooter
éléments.Dans la colonne de droite vous avez une grille de point: le
nav
élément.L'ajout d'une barre de défilement verticale ou horizontale de la colonne de gauche n'est pas faisable car il y a trois éléments distincts. Vous devez placer tous les éléments dans un conteneur pour une seule barre de défilement de travail.
L'ajout d'une barre de défilement verticale ou horizontale de la colonne de droite est assez facile car il n'est qu'un élément.
En supposant que vous parlez d'une barre de défilement verticale, voici un moyen de le faire fonctionner:
CSS:
HTML:
révisé codepen
Navigateur Support pour Grille CSS
Voici le tableau complet: http://caniuse.com/#search=grid
Ici est une version étendue de ma réponse à votre question précédente, comment obtenir de défilement pour les deux d'en-tête/content/principale et de la valeur liquidative à l'aide de
flexbox
.Violon démo
Pile extrait de
JS:
CSS:
HTML:
(function(d, timeout) {...})();
appelle une fermeture et l'envelopper ce qui est en elle de sorte qu'il ne pollue pas la portée mondiale avec des variables et des trucs. Il exécute lui-même avec le dernier(document)
et oùdocument
(le DOM du document) est transmis en tant que premier paramètred
. Je l'ai fait donc au lieu d'écriredocument.body
etc, je peux utiliser le plus courtd.body
. Letimeout
est utilisé dans l'événement resize et depuis c'est passé comme ça, comme un paramètre, il est accessible par le biais de l'ensemble de la fermeture de la fonction, tout comme une variable globale est. Espérons que cela a du sens.