Home > Back-end >  overflow on main page instead of carousel section
overflow on main page instead of carousel section

Time:01-08

I want to have a fully responsive page for mobile devices , and there is a semi carousel slider that i wanna it have overflow . but i have horizontal overflow on page instead of carousel section.
i don't want to have overflow on my main page

why overflow be applied to html document ??

resize the code , below 530 px to appear 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 > 
      <div >
        <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 >another box</div>
      <div >another box</div>
      <div >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>

CodePudding user response:

You can solve it by just setting the width of the column to 100% instead of 1fr.

By using 1fr, the fraction size will take the biggest element's width, in your case, the carousel's width, that's why it overflows.

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 >
    <!--  carousel section -->
    <div >
      <div >
        <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 >another box</div>
      <div >another box</div>
      <div >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>

CodePudding user response:

I added CSS grid to your <section>

section {
    display: grid;
    /* your code*/
}

enter image description here

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 >
      <!-- 1 box -->
      <div >
        <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 >another box</div>
      <!-- 3 box -->
      <div >another box</div>
      <!-- 4 box -->
      <div >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>

CodePudding user response:

change your grid into flex to prevent overflowing

main{
  display:flex;
  flex-direction: column;
  gap: 2rem;
  border: 2px solid red;
}
  •  Tags:  
  • Related