我是一个初学者,我一生都无法理解为什么当我实现 grid-template-rows 来定义菜单栏和内容 div 的大小时,内容会失去其现有的滚动功能。 这是我将 grid-template-rows 添加到正文时
有人可以帮我理解为什么吗。
我尝试了模板行、自动行,不确定我错过了什么。
编辑:我也尝试过重新包裹整个身体。现在有点像在黑暗中刺伤。 编辑:一旦重新包裹高度超过 700px,滚动功能就会停止。 https://codepen.io/Jago971/pen/YzMYYGW
<body>
<ul>
<li class="menuOption">
<i class="fa-solid fa-house"></i>
</li>
<li class="menuOption">
<i class="fa-solid fa-user"></i>
</li>
<li class="menuOption">
<i class="fa-solid fa-magnifying-glass"></i>
</li>
<li class="menuOption">
<i class="fa-solid fa-gear"></i>
</li>
<li class="menuOption">
<i class="fa-solid fa-rotate-left"></i>
</li>
</ul>
<div id="tilesCarousel">
<div id="fadeTop"></div>
<div class="tileContainerWrap">
<div class="tileContainer color5">
<h1 class="hiddenInfo">2021</h1>
<div class="tile">Jan</div>
<div class="tile">Feb</div>
<div class="tile">Mar</div>
<div class="tile">Apr</div>
<div class="tile">May</div>
<div class="tile">Jun</div>
<div class="tile">Jul</div>
<div class="tile">Aug</div>
<div class="tile">Sep</div>
<div class="tile">Oct</div>
<div class="tile">Nov</div>
<div class="tile">Dec</div>
</div>
</div>
<div class="tileContainerWrap">
<div class="tileContainer color1">
<h1 class="hiddenInfo">2022</h1>
<div class="tile">Jan</div>
<div class="tile">Feb</div>
<div class="tile">Mar</div>
<div class="tile">Apr</div>
<div class="tile">May</div>
<div class="tile">Jun</div>
<div class="tile">Jul</div>
<div class="tile">Aug</div>
<div class="tile">Sep</div>
<div class="tile">Oct</div>
<div class="tile">Nov</div>
<div class="tile">Dec</div>
</div>
</div>
<div class="tileContainerWrap">
<div class="tileContainer color2">
<h1 class="hiddenInfo">2023</h1>
<div class="tile">Jan</div>
<div class="tile">Feb</div>
<div class="tile">Mar</div>
<div class="tile">Apr</div>
<div class="tile">May</div>
<div class="tile">Jun</div>
<div class="tile">Jul</div>
<div class="tile">Aug</div>
<div class="tile">Sep</div>
<div class="tile">Oct</div>
<div class="tile">Nov</div>
<div class="tile">Dec</div>
</div>
</div>
<div class="tileContainerWrap">
<div class="tileContainer color3">
<h1 class="hiddenInfo">2024</h1>
<div class="tile">Jan</div>
<div class="tile">Feb</div>
<div class="tile">Mar</div>
<div class="tile">Apr</div>
<div class="tile">May</div>
<div class="tile">Jun</div>
<div class="tile">Jul</div>
<div class="tile">Aug</div>
<div class="tile">Sep</div>
<div class="tile">Oct</div>
<div class="tile">Nov</div>
<div class="tile">Dec</div>
</div>
</div>
<div class="tileContainerWrap">
<div class="tileContainer color4">
<h1 class="hiddenInfo">2025</h1>
<div class="tile">Jan</div>
<div class="tile">Feb</div>
<div class="tile">Mar</div>
<div class="tile">Apr</div>
<div class="tile">May</div>
<div class="tile">Jun</div>
<div class="tile">Jul</div>
<div class="tile">Aug</div>
<div class="tile">Sep</div>
<div class="tile">Oct</div>
<div class="tile">Nov</div>
<div class="tile">Dec</div>
</div>
</div>
<div class="tileContainerWrap">
<div class="tileContainer color5">
<h1 class="hiddenInfo">2026</h1>
<div class="tile">Jan</div>
<div class="tile">Feb</div>
<div class="tile">Mar</div>
<div class="tile">Apr</div>
<div class="tile">May</div>
<div class="tile">Jun</div>
<div class="tile">Jul</div>
<div class="tile">Aug</div>
<div class="tile">Sep</div>
<div class="tile">Oct</div>
<div class="tile">Nov</div>
<div class="tile">Dec</div>
</div>
</div>
<div class="tileContainerWrap">
<div class="tileContainer color1">
<h1 class="hiddenInfo">2027</h1>
<div class="tile">Jan</div>
<div class="tile">Feb</div>
<div class="tile">Mar</div>
<div class="tile">Apr</div>
<div class="tile">May</div>
<div class="tile">Jun</div>
<div class="tile">Jul</div>
<div class="tile">Aug</div>
<div class="tile">Sep</div>
<div class="tile">Oct</div>
<div class="tile">Nov</div>
<div class="tile">Dec</div>
</div>
</div>
<div id="fadeBottom"></div>
</div>
</body>
body {
height: 100vh;
margin: 0;
padding: 0 20px;
border: solid 1px;
display: grid;
}
ul {
margin: 0;
padding: 20px;
display: grid;
gap: 20px;
grid-template-columns: repeat(5, 1fr);
border: solid 1px;
background-color: rgb(80, 80, 80);
border-radius: 0 0 25px 25px;
}
li {
background-color: rgb(51, 51, 51);
border-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
transition: scale, 0.25s;
}
li:hover {
scale: 1.05;
cursor: pointer
}
i {
color: white;
}
#fadeTop {
position: fixed;
height: 50px;
width: calc(100vw - 40px);
border: solid 1;
background-color: white;
background: linear-gradient(to top, transparent, white);
}
#fadeBottom {
position: fixed;
bottom: 0;
height: 50px;
width: calc(100vw - 40px);
border: solid 1;
background-color: white;
background: linear-gradient(to top, white, transparent);
}
#tilesCarousel {
position: relative;
display: grid;
grid-auto-rows: 100%;
overflow: scroll;
scroll-snap-type: y mandatory;
}
#tilesCarousel::-webkit-scrollbar {
display:none
}
.tileContainerWrap {
scroll-snap-align: start;
display: grid;
}
.tileContainer {
margin: 50px 0;
border-radius: 25px;
display: grid;
grid-template-columns: repeat(3, 1fr);
padding-left: 20px;
padding-top: 20px;
}
.hiddenInfo {
display: none;
}
.tile {
margin-right: 25px;
margin-bottom: 25px;
font-family: Dosis;
font-size: 1.5rem;
background-color: white;
border: solid 5px rgb(80, 80, 80);
border-radius: 15px;
box-shadow: 3px 3px 15px 0px rgba(0,0,0,0.4);
display: flex;
justify-content: center;
align-items: center;
transition: scale, 0.25s;
}
.tile:hover {
scale: 1.03;
cursor: pointer
}
我注意到在使用 CSS 网格布局时,您在网页上的滚动功能方面遇到了问题。您可以尝试以下一些调整:
调整网格布局:由于您在正文和 #tilesCarousel 中使用了 display: grid,因此网格布局的应用方式可能会发生冲突。尝试从正文样式中删除 display: grid 并查看是否可以解决问题。 调整正文 CSS,例如:
body {
height: auto;
margin: 0;
padding: 0 20px;
border: solid 1px;
}
确保足够的高度:确保#tilesCarousel容器的高度足以容纳其内容而不会导致溢出。您可以调整 grid-auto-rows 属性或显式将高度设置为一个值,以确保在必要时启用滚动。
检查溢出属性:仔细检查溢出:滚动属性是否应用于#tilesCarousel容器并且未被其他样式覆盖。
检查子元素:验证 #tilesCarousel 容器内的内容 div 的高度是否已正确计算,并且其溢出属性没有被无意中修改。
在没有滚动捕捉的情况下进行测试:暂时删除scroll-snap-type和scroll-snap-align属性以查看它们是否可能干扰滚动功能。
body {
height: auto;
margin: 0;
padding: 0 20px;
border: solid 1px;
}
ul {
margin: 0;
padding: 20px;
display: grid;
gap: 20px;
grid-template-columns: repeat(5, 1fr);
border: solid 1px;
background-color: rgb(80, 80, 80);
border-radius: 0 0 25px 25px;
}
li {
background-color: rgb(51, 51, 51);
border-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
transition: scale, 0.25s;
}
li:hover {
scale: 1.05;
cursor: pointer;
}
i {
color: white;
}
#fadeTop {
position: fixed;
height: 50px;
width: calc(100vw - 40px);
border: solid 1;
background-color: white;
background: linear-gradient(to top, transparent, white);
}
#fadeBottom {
position: fixed;
bottom: 0;
height: 50px;
width: calc(100vw - 40px);
border: solid 1;
background-color: white;
background: linear-gradient(to top, white, transparent);
}
#tilesCarousel {
position: relative;
height: 100vh;
overflow: auto;
scroll-snap-type: y mandatory;
}
#tilesCarousel::-webkit-scrollbar {
display: none;
}
.tileContainerWrap {
scroll-snap-align: start;
overflow: auto;
}
.tileContainer {
margin: 50px 0;
border-radius: 25px;
display: grid;
grid-template-columns: repeat(3, 1fr);
padding-left: 20px;
padding-top: 20px;
}
.hiddenInfo {
display: none;
}
.tile {
margin-right: 25px;
margin-bottom: 25px;
font-family: Dosis;
font-size: 1.5rem;
background-color: white;
border: solid 5px rgb(80, 80, 80);
border-radius: 15px;
box-shadow: 3px 3px 15px 0px rgba(0, 0, 0, 0.4);
display: flex;
justify-content: center;
align-items: center;
transition: scale, 0.25s;
}