【问题标题】:Center horizontally and vertically a div in a section and make each section fill the whole page when scrolling在一个部分中水平和垂直居中一个 div 并使每个部分在滚动时填充整个页面
【发布时间】:2022-01-31 22:23:14
【问题描述】:

我正在尝试编写一个页面,其中每个部分都填满整个页面。而且我还尝试将每个部分中的 div 垂直和水平居中。 不知道有没有可能,如果各位大神能指教一下就好了。 我也想知道是否有可能,当我滚动它时,它会自动转到下一部分。不知道是不是清晰到可以理解。

这是 CSS:

.presta .container {
  width: 100%;
  position: relative;
}

.presta .h1 {
  font-size: 80px;
  font-weight: bold;
}

.presta card {
  padding: 30px;
  margin: 0 auto;
}

.logoPresta:hover {
  transition: transform 0.3s ease-in;
  transform: translateY(-10px);
}

.prestaShow {
  text-align: center;
}

.wrapper {
  min-height: 100%;
}
<div class="navbar ">
  <div class="container flex">
    <div class="logo" data-aos="fade-right">
      <a href="index.html"><img src="images/linko_bg_transp.png" alt="" /></a>
    </div>
    <nav data-aos="fade-in">
      <ul>
        <li><a href="index.html">Accueil</a></li>
        <li><a href="pres.html">Présentation</a></li>
        <li><a href="Presta.html">Nos Prestations</a></li>
        <li><a href="form.html">Nous contacter</a></li>
      </ul>
    </nav>
  </div>
</div>

<section class="presta bg-light wrapper">
  <div class="container">
    <div class="text-center">
      <h1>Nos domaines d'expertises</h1>
    </div>
    <div class="grid grid-4">
      <div class="logoPresta card">
        <img src="images/1.jpg" alt="">
      </div>
      <div class="logoPresta card">
        <img src="images/2.jpg" alt="">
      </div>
      <div class="logoPresta card">
        <img src="images/3.jpg" alt="">
      </div>
      <div class="logoPresta card">
        <img src="images/4.jpg" alt="">
      </div>
    </div>
  </div>
</section>

<section class="prestaShow wrapper">
  <div class="container info">
    <div class="text-center">
      <h2>Informatique</h2>
    </div>
    <div class="textePresta card">
      Conception & développement d'applications web
    </div>
    <div class="textePresta card">
      Création & amélioration de bases de données
    </div>
    <div class="textePresta card">
      Déploiement d'infrastructures réseaux
    </div>

  </div>
</section>

以下是页面图片:

【问题讨论】:

  • 为什么这个问题被标记为Javascript,但不包含这样的代码?另外,究竟是什么不能使用给定的代码?您尝试过什么来解决您的问题?
  • 将父元素中的多个元素水平和垂直居中是 flexbox 的经典用例 (w3schools.com/css/css3_flexbox.asp)。网格布局也可以工作。滚动触发的自动操作是 JavaScript 的问题,但您需要提供有关您的方法的更多具体细节。

标签: html css web


【解决方案1】:

您可以通过将 100% 更改为 100vh

将部分调整为整页高度

另外,请查看 CSS 部分以了解如何将包装器的内容居中(展开 Code sn-p 以查看差异)。

更新: .snap-wrapper 将帮助您滚动整个部分,请查看 Code sn-p on full-screen。

.presta .container {
  width: 100%;
  position: relative;
}

.presta .h1 {
  font-size: 80px;
  font-weight: bold;
}

.presta card {
  padding: 30px;
  margin: 0 auto;
}

.logoPresta:hover {
  transition: transform 0.3s ease-in;
  transform: translateY(-10px);
}

.prestaShow {
  text-align: center;
}

.wrapper {
  /* centering wrapper content */
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
}

/* use .snap-wrapper to scroll page by full sections */
.snap-wrapper {
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  scroll-snap-type: y mandatory;
  overflow: auto;
  height: 100vh;
}

.snap-wrapper > .wrapper {
  scroll-snap-align: center;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">


<div class="navbar ">
  <div class="container flex">
    <div class="logo" data-aos="fade-right">
      <a href="index.html"><img src="images/linko_bg_transp.png" alt="" /></a>
    </div>
    <nav data-aos="fade-in">
      <ul>
        <li><a href="index.html">Accueil</a></li>
        <li><a href="pres.html">Présentation</a></li>
        <li><a href="Presta.html">Nos Prestations</a></li>
        <li><a href="form.html">Nous contacter</a></li>
      </ul>
    </nav>
  </div>
</div>

<div class="snap-wrapper">
  <section class="presta bg-light wrapper">
    <div class="container">
      <div class="text-center">
        <h1>Nos domaines d'expertises</h1>
      </div>
      <div class="grid grid-4">
        <div class="logoPresta card">
          <img src="images/1.jpg" alt="">
        </div>
        <div class="logoPresta card">
          <img src="images/2.jpg" alt="">
        </div>
        <div class="logoPresta card">
          <img src="images/3.jpg" alt="">
        </div>
        <div class="logoPresta card">
          <img src="images/4.jpg" alt="">
        </div>
      </div>
    </div>
  </section>

  <section class="prestaShow wrapper">
    <div class="container info">
      <div class="text-center">
        <h2>Informatique</h2>
      </div>
      <div class="textePresta card">
        Conception & développement d'applications web
      </div>
      <div class="textePresta card">
        Création & amélioration de bases de données
      </div>
      <div class="textePresta card">
        Déploiement d'infrastructures réseaux
      </div>

    </div>
  </section>
</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 2016-08-20
    • 1970-01-01
    相关资源
    最近更新 更多