【发布时间】:2023-03-29 14:28:02
【问题描述】:
我试图制作一个数据网格,其中 粘性导航栏可以水平滚动到其下方的内容。然而,行为在两个场景中发生了变化。
- 当最外层框太窄时,主区域可以水平滚动,但是
nav和rows的宽度被限制为父框的宽度,导致不希望的行为 背景颜色。- 这可以通过将
nav和rows的宽度都设置为fit-content来解决
- 这可以通过将
- 当最外面的框太宽时,因为宽度已设置为
fit-content,所有行都收缩到左侧而不是填满整行。- 这可以通过将
nav和rows的宽度都设置为100%来解决
- 这可以通过将
那么我应该怎么做才能让它们在这两种情况下都能正常运行。
我尝试过的其他解决方案:
- 使用
flex-row和warp,但是,当内容的宽度太小时,导航栏和行将在同一行。 - 在
nav中使用inline-block,在rows中使用inline-flex,行为同上。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.grid {
height: 60px;
width: 200px;
overflow: auto;
}
.subgrid {
}
.nav {
position: sticky;
top: 0;
background: #da1039;
}
.rows {
display: flex;
flex-direction: column;
flex-wrap: nowrap;
background: #00b89c;
}
.row {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-evenly;
}
.rowitem {
border: 1px solid;
min-width: 20px;
}
</style>
</head>
<body>
<div class="grid">
<div class="subgrid">
<div class="nav">
<div class="row">
<div class="rowitem">HHH</div>
<div class="rowitem">HHH</div>
<div class="rowitem">HHH</div>
<div class="rowitem">HHH</div>
<div class="rowitem">HHH</div>
</div>
</div>
<div class="rows">
<div class="row">
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
</div>
<div class="row">
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
</div>
<div class="row">
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
</div>
<div class="row">
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
</div>
</div>
</div>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.grid {
height: 60px;
width: 50px;
overflow: auto;
}
.subgrid {
}
.nav {
position: sticky;
top: 0;
background: #da1039;
}
.rows {
display: flex;
flex-direction: column;
flex-wrap: nowrap;
background: #00b89c;
}
.row {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-evenly;
}
.rowitem {
border: 1px solid;
min-width: 20px;
}
</style>
</head>
<body>
<div class="grid">
<div class="subgrid">
<div class="nav">
<div class="row">
<div class="rowitem">HHH</div>
<div class="rowitem">HHH</div>
<div class="rowitem">HHH</div>
<div class="rowitem">HHH</div>
<div class="rowitem">HHH</div>
</div>
</div>
<div class="rows">
<div class="row">
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
</div>
<div class="row">
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
</div>
<div class="row">
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
</div>
<div class="row">
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
<div class="rowitem">AAA</div>
</div>
</div>
</div>
</div>
</body>
</html>
【问题讨论】:
标签: javascript html css flexbox