После создания явных дорожек, которые представляют собой строки и столбцы, созданные с использованием следующих свойств:
grid-template-rows
grid-template-columns
grid-template-areas
grid
(стенография)
... вы застряли с этими треками. Они не уходят.
Ваша попытка удалить явную строку с display: none
для элемента сетки (.username
) не работает. Команда работает на уровне элемента, но строка была создана на уровне контейнера.
Если вы хотите построить сетку с динамическим притоком и оттоком дорожек, используйте неявные , не явные, дорожки.
Неявные дорожки - это строки и столбцы, созданные автоматически для размещения элементов сетки, которые расположены за пределами явной сетки.
Когда нет элемента сетки, который бы занимал неявную дорожку, эта дорожка просто не существует.
Ниже приведены два примера, основанные на вашем коде.
- первый пример отображает строку для
.username
, другой пример - нет;
grid-template-rows
был удален, поэтому нет явных строк; все строки неявные;
- высоты, ранее установленные на
grid-template-rows
, были перемещены в соответствующие им элементы сетки;
- неявная высота строки определяется
grid-auto-rows
, чье начальное значение auto
(на основе содержимого), поэтому оно хорошо работает с предыдущей точкой; и
- , поскольку вы имеете дело с неявными треками, порядок источника имеет значение.
с именем пользователя в строке
.layout {
display: grid;
grid-template-columns: minmax(200px, auto) minmax(200px, 300px) minmax(900px, auto) minmax(200px, auto);
grid-gap: 5px;
height: 100vh;
}
/* implicit first row */
.navbar {
height: 60px;
grid-column: 1 / -1;
background-color: #3a3f51;
border-bottom: 1px solid #797d89;
text-align: center;
color: aliceblue;
}
/* implicit second row */
.username {
/* display: none; */
height: 60px;
grid-column: 1 / -1;
background-color: #f7f9f9;
border-bottom: 1px solid #dee5e7;
text-align: center;
}
/* implicit third row (start) */
.statement-list {
height: 60px;
grid-column: 2 / 3;
max-height: 600px;
}
/* implicit third row */
.title {
height: 60px;
grid-column: 3 / 4;
grid-row: 3 / 4;
}
.content {
min-height: 700px;
grid-column: 3 / 4;
overflow-x: auto;
overflow-y: auto;
}
body {
margin: 0;
}
<body class="layout">
<div class="navbar">About</div>
<div class="username">CSS Grid User</div>
<div class="title">Lorem Ipsum</div>
<div class="statement-list">
Phasellus commodo sit amet eros non pharetra. Phasellus consequat augue est, ornare finibus lectus auctor non. Praesent rutrum odio tortor. Proin id massa magna. Phasellus commodo sit amet eros non pharetra. Phasellus consequat augue est, ornare finibus
lectus auctor non. Praesent rutrum odio tortor. Proin id massa magna.
</div>
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet a odio quis commodo. In nisl justo, tincidunt vel aliquet eget, mollis eget lorem. Aenean sit amet nibh eget nunc sodales vestibulum id ac ante. Nullam eleifend sodales ipsum, sed
porta tellus posuere molestie. Vestibulum congue porta odio sed iaculis. Phasellus varius sodales ullamcorper. Praesent consectetur ante eget turpis pretium, eget sagittis leo volutpat. Aenean posuere, sapien quis placerat pulvinar, lectus est interdum
dui, at pretium risus sapien et neque. Sed eu fringilla turpis. Ut viverra, nisl non euismod sollicitudin, tellus lectus finibus leo, in ornare sem mauris non eros. Fusce augue est, rhoncus vitae tristique in, malesuada nec libero. Sed venenatis vehicula
ultricies. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce interdum auctor ante a fermentum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam malesuada
scelerisque tortor ac faucibus. Integer pharetra eget velit a tempus. Aenean at lobortis massa, vel accumsan ligula.
</div>
без строки имени пользователя (просто добавив display: none
)
.layout {
display: grid;
grid-template-columns: minmax(200px, auto) minmax(200px, 300px) minmax(900px, auto) minmax(200px, auto);
grid-gap: 5px;
height: 100vh;
}
/* implicit first row */
.navbar {
height: 60px;
grid-column: 1 / -1;
background-color: #3a3f51;
border-bottom: 1px solid #797d89;
text-align: center;
color: aliceblue;
}
/* implicit second row */
.username {
display: none; /* ADDED */
height: 60px;
grid-column: 1 / -1;
background-color: #f7f9f9;
border-bottom: 1px solid #dee5e7;
text-align: center;
}
/* implicit third row (start) */
.statement-list {
height: 60px;
grid-column: 2 / 3;
max-height: 600px;
}
/* implicit third row */
.title {
height: 60px;
grid-column: 3 / 4;
grid-row: 3 / 4;
}
.content {
min-height: 700px;
grid-column: 3 / 4;
overflow-x: auto;
overflow-y: auto;
}
body {
margin: 0;
}
<body class="layout">
<div class="navbar">About</div>
<div class="username">CSS Grid User</div>
<div class="title">Lorem Ipsum</div>
<div class="statement-list">
Phasellus commodo sit amet eros non pharetra. Phasellus consequat augue est, ornare finibus lectus auctor non. Praesent rutrum odio tortor. Proin id massa magna. Phasellus commodo sit amet eros non pharetra. Phasellus consequat augue est, ornare finibus
lectus auctor non. Praesent rutrum odio tortor. Proin id massa magna.
</div>
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet a odio quis commodo. In nisl justo, tincidunt vel aliquet eget, mollis eget lorem. Aenean sit amet nibh eget nunc sodales vestibulum id ac ante. Nullam eleifend sodales ipsum, sed
porta tellus posuere molestie. Vestibulum congue porta odio sed iaculis. Phasellus varius sodales ullamcorper. Praesent consectetur ante eget turpis pretium, eget sagittis leo volutpat. Aenean posuere, sapien quis placerat pulvinar, lectus est interdum
dui, at pretium risus sapien et neque. Sed eu fringilla turpis. Ut viverra, nisl non euismod sollicitudin, tellus lectus finibus leo, in ornare sem mauris non eros. Fusce augue est, rhoncus vitae tristique in, malesuada nec libero. Sed venenatis vehicula
ultricies. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce interdum auctor ante a fermentum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam malesuada
scelerisque tortor ac faucibus. Integer pharetra eget velit a tempus. Aenean at lobortis massa, vel accumsan ligula.
</div>
Спецификации: