将滚动条div与其他div并排显示

14

我的布局如下:

enter image description here

左边的列应该在滚动到底部时向下滚动(直到下一个类别)。

我的HTML代码如下:

    <div class="wrapper gray-bg">
   <div class="centered">
      <div class="row">
         <div class="col-xs-12 col-sm-12 col-md-5 col-lg-4 information group">
            <h1>Glas</h1>
            <hr>
            <p class="info">
            </p>
            <p>Wil je een maximale <strong>lichtinval</strong> en maximale <strong>isolatie</strong>, maar hou je ook van een <strong>strak design</strong>?&nbsp;Kies dan voor onze vlakke lichtkoepels met dubbelwandig of 3-dubbel glas. Ze zien er niet alleen geweldig uit, maar scoren op alle vlakken ongelooflijk goed.</p>
            <p></p>
            <div class="buttons">
               <a href="" class="button">bekijk referenties</a>
               <a href="/nl/professional/contact" class="button gray">Vraag offerte</a>
            </div>
         </div>
         <div class="col col-xs-12 col-sm-12 col-md-7 col-lg-8 product-container flex-row">
            <div class="col-xs-12 col-md-12 col-lg-6 flex-container">
               <div class="product">
                  <div class="image" style="background-image: url('https://exmple.com/media/cache/product_thumbnail/uploads/fa5256f2004f96761a87427be6db1e8d2e2fd983.jpeg');">
                     <span>new</span>
                  </div>
                  <h1>exmple iWindow2 ™</h1>
                  <hr>
                  <h2>Superisolerende lichtkoepel met 2-wandig glas</h2>
                  <ul class="findplace">
                     <li>Scoort erg goed qua isolatie: Ut-waarde 1,0 W/m²K</li>
                     <li>Strak, eigentijds design</li>
                     <li>Doorvalveilig</li>
                     <li>Slanke omkadering, slechts 28 mm</li>
                     <li>Vaste of opengaande uitvoering</li>
                  </ul>
                  <div class="bottom-buttons">
                     <a href="/nl/professional/product/exmple-iwindow2#prijs" class="col col-xs-3 col-md-6 col-lg-3">
                        <i class="fa fa-euro"></i>
                        <p>Prijs</p>
                     </a>
                     <a href="/nl/professional/product/exmple-iwindow2#technische_specs" class="col col-xs-3 col-md-6 col-lg-3 custom">
                        <i class="fa fa-drafting-compass"></i>
                        <p>Technische specs</p>
                     </a>
                     <a href="/nl/professional/product/exmple-iwindow2#brochures" class="col col-xs-3 col-md-6 col-lg-3">
                        <i class="fa fa-file-text"></i>
                        <p>Brochures</p>
                     </a>
                     <a href="/nl/professional/product/exmple-iwindow2#montage" class="col col-xs-3 col-md-6 col-lg-3">
                        <i class="fa fa-map"></i>
                        <p>Montage</p>
                     </a>
                  </div>
               </div>
            </div>
            <div class="col-xs-12 col-md-12 col-lg-6 flex-container">
               <div class="product">
                  <div class="image" style="background-image: url('https://exmple.com/media/cache/product_thumbnail/uploads/e2b4180f8d9109c79350817d46e9c184080e8353.jpeg');">
                     <span>new</span>
                  </div>
                  <h1>exmple iWindow3 ™</h1>
                  <hr>
                  <h2>Superisolerende lichtkoepel met 3-wandig glas</h2>
                  <ul class="findplace">
                     <li>Scoort erg goed qua isolatie: Ut-waarde 0,5 W/m²K</li>
                     <li>Strak, eigentijds design</li>
                     <li>Doorvalveilig</li>
                     <li>Slanke omkadering, slechts 55mm</li>
                     <li>Vaste of opengaande uitvoering</li>
                  </ul>
                  <div class="bottom-buttons">
                     <a href="/nl/professional/product/exmple-iwindow3#prijs" class="col col-xs-3 col-md-6 col-lg-3">
                        <i class="fa fa-euro"></i>
                        <p>Prijs</p>
                     </a>
                     <a href="/nl/professional/product/exmple-iwindow3#technische_specs" class="col col-xs-3 col-md-6 col-lg-3 custom">
                        <i class="fa fa-drafting-compass"></i>
                        <p>Technische specs</p>
                     </a>
                     <a href="/nl/professional/product/exmple-iwindow3#brochures" class="col col-xs-3 col-md-6 col-lg-3">
                        <i class="fa fa-file-text"></i>
                        <p>Brochures</p>
                     </a>
                     <a href="/nl/professional/product/exmple-iwindow3#montage" class="col col-xs-3 col-md-6 col-lg-3">
                        <i class="fa fa-map"></i>
                        <p>Montage</p>
                     </a>
                  </div>
               </div>
            </div>
         </div>
      </div>
   </div>
</div>

但我不知道如何确保左侧内容在右侧其他内容不滚动时向下滚动。这可以通过一些JavaScript代码实现吗?

你能帮帮我吗?


8
可以给我们提供一个带有 CSS 和 HTML 的代码片段吗?这样我们就可以更轻松地提供帮助。 - Christian
嗨,我们需要您的CSS。 - oriadam
我是傻的还是他想让左侧div固定? - user8517929
5个回答

10

您可以像这样为产品区域添加滚动条

.product-container {
  height: 100vh; /* limit it to the size of your window */
  overflow: auto; /* add scroll when necessary */
}

在这里查看例子: https://codepen.io/oriadam/pen/BrWqNw


1

如果你使用JavaScript的滚动事件,那么这是完全可行的!

假设我们有以下HTML:

<div class="left col-md-3">
  <article class="sticky">
    <h2>Lorem Ipsum</h2>
    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p>
  </article>
</div>
<div class="right col-md-9 text-center">
     <!-- Right side Content Here -->
</div>

我们只会处理左侧,这是简单的CSS:

.left {
  position: relative
}
.sticky {
  position: absolute
}

让我们编写一些 JavaScript 代码:

// Select our `sticky` div
const stickyDiv = document.querySelector(".sticky");
/*
 * Detect the `scroll` event
 * Set the PageXOffset ( The space that we scrolled top )
 * as the `top` CSS Property value
 * This would force the `sticky` div to stay on top!
 */
window.addEventListener("scroll", function() {
   stickyDiv.style.top = window.pageYOffset + "px";
});

如果您不喜欢简单的答案,我已经在我的CodePen上做了一个可行的示例。

如果您需要一些解释,请让我知道!

祝你好运!


1
您不需要使用Jquery使一个div可滚动。只需为任何包含您想要向下滚动的内容的容器放置以下样式即可。一个滚动条将出现在div的侧面。如果您需要帮助隐藏滚动条或其他任何内容,请告诉我们。
overflow-y: scroll;

1
如果您能创建一个fiddle并与我们分享,那就太好了,这样我们就可以为您提供快速解决方案。在任何需要“固定”元素的情况下,它都会被以下方式定位。请注意保留HTML标签。
#element {
    position:fixed;
    top:0;
    left:0
   }

以这种方式,它将被从页面的正常流程中移除,这可以设置为
#remainingpage {
 height : 'n'px;
 overflow-y : scroll;
}

其中'n'是您想要指定的高度的测量值。

希望这可以帮到您,否则如果您能分享一个jsfiddle就更好了。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接