溢出在主页上而不是轮播部分
overflow on main page instead of carousel section
我想要一个完全响应移动设备的页面,并且有一个我想要的半旋转木马滑块 overflow
。
但是我在页面上有水平溢出而不是轮播部分。
我不想在我的主页上溢出
为什么溢出应用于 html 文档 ??
调整代码大小,在 530 像素以下显示 overflow
main{
display: grid;
grid-template-columns:1fr;
gap: 2rem;
border: 2px solid red;
}
section{
background: gold;
}
.container{
display: flex;
flex-wrap: nowrap;
overflow: auto;
gap: 1rem;
}
.box{
width: 50%;
flex-shrink: 0;
padding:2rem;
background: gray;
}
<main>
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.
</section>
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.
</section>
<section> <!-- carousel section -->
<div class="container">
<div class="box">
<h4>lorem</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vitae nulla diam in ac </p>
<div>
<img src="#" alt="image">
<div>
<h4>lorem</h4>
<p>lorem</p>
</div>
</div>
</div>
<div class="box">another box</div>
<div class="box">another box</div>
<div class="box">another box</div>
</div>
</section>
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.
</section>
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.
</section>
</main>
将您的网格更改为 flex 以防止溢出
main{
display:flex;
flex-direction: column;
gap: 2rem;
border: 2px solid red;
}
我已将 CSS 网格添加到您的 <section>
section {
display: grid;
/* your code*/
}
main {
display: grid;
grid-template-columns: 1fr;
gap: 2rem;
border: 2px solid red;
}
section {
background: gold;
display: grid;
}
.container {
display: flex;
flex-wrap: nowrap;
overflow: auto;
gap: 1rem;
}
.box {
width: 50%;
flex-shrink: 0;
padding: 2rem;
background: gray;
}
<main>
<!-- 1 lorem -->
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.</section>
<!-- 2 lorem -->
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.</section>
<!-- 3 -->
<section>
<!-- carousel section -->
<div class="container">
<!-- 1 box -->
<div class="box">
<h4>lorem</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vitae nulla diam in ac </p>
<div>
<img src="#" alt="image">
<div>
<h4>lorem</h4>
<p>lorem</p>
</div>
</div>
</div>
<!-- 2 box -->
<div class="box">another box</div>
<!-- 3 box -->
<div class="box">another box</div>
<!-- 4 box -->
<div class="box">another box</div>
</div>
</section>
<!-- 4 lorem -->
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.</section>
<!-- 5 lorem -->
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.</section>
</main>
您可以通过将列的宽度设置为 100%
而不是 1fr
来解决它。
通过使用 1fr
,分数大小将占用最大元素的宽度,在您的情况下,轮播的宽度,这就是它溢出的原因。
main {
display: grid;
grid-template-columns: 100%;
gap: 2rem;
border: 2px solid red;
}
section {
background: gold;
}
.container {
display: flex;
flex-wrap: nowrap;
overflow: auto;
gap: 1rem;
}
.box {
width: 50%;
flex-shrink: 0;
padding: 2rem;
background: gray;
}
<main>
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.
</section>
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.
</section>
<section class="carousel-section">
<!-- carousel section -->
<div class="container">
<div class="box">
<h4>lorem</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vitae nulla diam in ac </p>
<div>
<img src="#" alt="image">
<div>
<h4>lorem</h4>
<p>lorem</p>
</div>
</div>
</div>
<div class="box">another box</div>
<div class="box">another box</div>
<div class="box">another box</div>
</div>
</section>
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.
</section>
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.
</section>
</main>
我在 article from Ahmad Shadeed
中找到了我的问题的完整答案
CSS 网格中的最小内容大小
CSS 网格的子项的默认最小内容大小为 auto
。也就是说,如果有一个元素比网格项大,它就会溢出。
为了解决这个问题,我们有三种不同的解决方案:
- 使用
minmax()
grid-template-columns: minmax(0, 1fr)
for my problem.
- 正在将
min-width = 0
应用于网格项
- 将
overflow: hidden
添加到网格项目
我将所有三个 sulotions 添加到下面的代码片段中,您可以单独使用每一个。
main{
display: grid;
grid-template-columns: minmax(0, 1fr); /* first ssolution */
gap: 2rem;
border: 2px solid red;
}
section{
background: gold;
min-width: 0; /* second ssolution */
overflow: hidden; /* third ssolution */
}
.container{
display: flex;
flex-wrap: nowrap;
overflow: auto;
gap: 1rem;
}
.box{
width: 50%;
flex-shrink: 0;
padding:2rem;
background: gray;
}
<main>
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.
</section>
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.
</section>
<section> <!-- carousel section -->
<div class="container">
<div class="box">
<h4>lorem</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vitae nulla diam in ac </p>
<div>
<img src="#" alt="image">
<div>
<h4>lorem</h4>
<p>lorem</p>
</div>
</div>
</div>
<div class="box">another box</div>
<div class="box">another box</div>
<div class="box">another box</div>
</div>
</section>
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.
</section>
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.
</section>
</main>
我想要一个完全响应移动设备的页面,并且有一个我想要的半旋转木马滑块 overflow
。
但是我在页面上有水平溢出而不是轮播部分。
我不想在我的主页上溢出
为什么溢出应用于 html 文档 ??
调整代码大小,在 530 像素以下显示 overflow
main{
display: grid;
grid-template-columns:1fr;
gap: 2rem;
border: 2px solid red;
}
section{
background: gold;
}
.container{
display: flex;
flex-wrap: nowrap;
overflow: auto;
gap: 1rem;
}
.box{
width: 50%;
flex-shrink: 0;
padding:2rem;
background: gray;
}
<main>
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.
</section>
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.
</section>
<section> <!-- carousel section -->
<div class="container">
<div class="box">
<h4>lorem</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vitae nulla diam in ac </p>
<div>
<img src="#" alt="image">
<div>
<h4>lorem</h4>
<p>lorem</p>
</div>
</div>
</div>
<div class="box">another box</div>
<div class="box">another box</div>
<div class="box">another box</div>
</div>
</section>
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.
</section>
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.
</section>
</main>
将您的网格更改为 flex 以防止溢出
main{
display:flex;
flex-direction: column;
gap: 2rem;
border: 2px solid red;
}
我已将 CSS 网格添加到您的 <section>
section {
display: grid;
/* your code*/
}
main {
display: grid;
grid-template-columns: 1fr;
gap: 2rem;
border: 2px solid red;
}
section {
background: gold;
display: grid;
}
.container {
display: flex;
flex-wrap: nowrap;
overflow: auto;
gap: 1rem;
}
.box {
width: 50%;
flex-shrink: 0;
padding: 2rem;
background: gray;
}
<main>
<!-- 1 lorem -->
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.</section>
<!-- 2 lorem -->
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.</section>
<!-- 3 -->
<section>
<!-- carousel section -->
<div class="container">
<!-- 1 box -->
<div class="box">
<h4>lorem</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vitae nulla diam in ac </p>
<div>
<img src="#" alt="image">
<div>
<h4>lorem</h4>
<p>lorem</p>
</div>
</div>
</div>
<!-- 2 box -->
<div class="box">another box</div>
<!-- 3 box -->
<div class="box">another box</div>
<!-- 4 box -->
<div class="box">another box</div>
</div>
</section>
<!-- 4 lorem -->
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.</section>
<!-- 5 lorem -->
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.</section>
</main>
您可以通过将列的宽度设置为 100%
而不是 1fr
来解决它。
通过使用 1fr
,分数大小将占用最大元素的宽度,在您的情况下,轮播的宽度,这就是它溢出的原因。
main {
display: grid;
grid-template-columns: 100%;
gap: 2rem;
border: 2px solid red;
}
section {
background: gold;
}
.container {
display: flex;
flex-wrap: nowrap;
overflow: auto;
gap: 1rem;
}
.box {
width: 50%;
flex-shrink: 0;
padding: 2rem;
background: gray;
}
<main>
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.
</section>
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.
</section>
<section class="carousel-section">
<!-- carousel section -->
<div class="container">
<div class="box">
<h4>lorem</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vitae nulla diam in ac </p>
<div>
<img src="#" alt="image">
<div>
<h4>lorem</h4>
<p>lorem</p>
</div>
</div>
</div>
<div class="box">another box</div>
<div class="box">another box</div>
<div class="box">another box</div>
</div>
</section>
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.
</section>
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.
</section>
</main>
我在 article from Ahmad Shadeed
中找到了我的问题的完整答案CSS 网格中的最小内容大小
CSS 网格的子项的默认最小内容大小为 auto
。也就是说,如果有一个元素比网格项大,它就会溢出。
为了解决这个问题,我们有三种不同的解决方案:
- 使用
minmax()
grid-template-columns: minmax(0, 1fr)
for my problem.
- 正在将
min-width = 0
应用于网格项 - 将
overflow: hidden
添加到网格项目
我将所有三个 sulotions 添加到下面的代码片段中,您可以单独使用每一个。
main{
display: grid;
grid-template-columns: minmax(0, 1fr); /* first ssolution */
gap: 2rem;
border: 2px solid red;
}
section{
background: gold;
min-width: 0; /* second ssolution */
overflow: hidden; /* third ssolution */
}
.container{
display: flex;
flex-wrap: nowrap;
overflow: auto;
gap: 1rem;
}
.box{
width: 50%;
flex-shrink: 0;
padding:2rem;
background: gray;
}
<main>
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.
</section>
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.
</section>
<section> <!-- carousel section -->
<div class="container">
<div class="box">
<h4>lorem</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vitae nulla diam in ac </p>
<div>
<img src="#" alt="image">
<div>
<h4>lorem</h4>
<p>lorem</p>
</div>
</div>
</div>
<div class="box">another box</div>
<div class="box">another box</div>
<div class="box">another box</div>
</div>
</section>
<section>Lorem ipsum, dolor sit amet consectetur adipisicing elit.
</section>
<section>Lorem, ipsum dolor sit amet consectetur adipisicing elit.
</section>
</main>