jquery - 在保持相对的同时向下滚动时使侧边栏变粘

标签 jquery css wordpress css-position

早上好

我正在使用 (S)CSS 和 ACF(高级自定义字段)从头开始构建我的第一个 WordPress 网站。我想要实现的是在向下滚动时粘在顶部的侧边栏。我正在使用 (S)CSS、Bootstrap 4 和 jQuery 来执行此操作。我已经知道我的侧边栏会在滚动时保持在顶部,但由于我不得不使用位置:固定而不是position:relative,页脚将穿过侧边栏,因为它不再相对于其他元素。此外,当折叠菜单项时,它不会将页脚向下推。

这是页面:https://ikycreative.ikydev.nl/kennisbank/web-development/wat-is-een-error-code/

<div class="border-right" id="sidebar-wrapper">
  <div class="list-group list-group-flush">
    <a href="#seoList" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle list-group-item list-group-item-action">SEO</a>
    <div class="collapse <?php if ($cat == 'SEO') { echo 'show'; }?> list-unstyled" id="seoList">
      <?php 
        while($loop_seo->have_posts()) : $loop_seo->the_post(); 
          echo '<h4><a class="list-group-item list-group-item-action sub-link" href="' . get_permalink() . '">'; the_title(); echo '</a></h4>';         
        endwhile;
      ?>
    </div>
    <a href="#seaList" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle list-group-item list-group-item-action">SEA</a>
    <div class="collapse <?php if ($cat == 'SEA') { echo 'show'; }?> list-unstyled" id="seaList">
      <?php 
        while($loop_sea->have_posts()) : $loop_sea->the_post(); 
          echo '<h4><a class="list-group-item list-group-item-action sub-link" href="' . get_permalink() . '">'; the_title(); echo '</a></h4>';             
        endwhile;
      ?>
    </div>
    <a href="#smoList" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle list-group-item list-group-item-action">SMO</a>
    <div class="collapse <?php if ($cat == 'SMO') { echo 'show'; }?> list-unstyled" id="smoList">
      <?php 
        while($loop_smo->have_posts()) : $loop_smo->the_post(); 
          echo '<h4><a class="list-group-item list-group-item-action sub-link" href="' . get_permalink() . '">'; the_title(); echo '</a></h4>';         
        endwhile;
      ?>
    </div>
    <a href="#devList" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle list-group-item list-group-item-action">Web development</a>
    <div class="collapse <?php if ($cat == 'Web development') { echo 'show'; }?> list-unstyled" id="devList">
      <?php 
        while($loop_webdev->have_posts()) : $loop_webdev->the_post(); 
          echo '<h4><a class="list-group-item list-group-item-action sub-link" href="' . get_permalink() . '">'; the_title(); echo '</a></h4>';         
        endwhile;
        wp_reset_postdata();
      ?>
    </div>
  </div>
</div>
jQuery(function() {
  var shrinkHeader = 300;
  var shrinkSidebar = 170;
  jQuery(window).scroll(function() {
    var scroll = getCurrentScroll();
    if (scroll >= shrinkHeader) {
      jQuery('#main-header').addClass('sticky');
    } else {
      jQuery('#main-header').removeClass('sticky');
    }
    if (scroll >= shrinkSidebar) {
      jQuery('#sidebar-wrapper').addClass('fixed');
    } else {
      jQuery('#sidebar-wrapper').removeClass('fixed');
    }
  });

  function getCurrentScroll() {
    return window.pageYOffset || document.documentElement.scrollTop;
  }
});
.fixed {
  position: fixed;
  width: 100%;
  top: 100px;
}

#sidebarWrapper {
  width: 250px;
  position: relative;
}

我试过使用带有固定子项的相对容器,反之亦然。 任何帮助或建议将不胜感激。我对开发很陌生,在其他主题中找不到答案。

最佳答案

因此,您的问题的答案将是以下两件事之一......要么您必须在页脚进入 View 时删除固定位置,要么您需要设置侧边栏的 z-index 以便它位于页脚顶部,并将页脚内容推到右侧(边栏的宽度)。

但是,您尝试做的事情会在其他方面引起您各种头痛。您遇到的问题是您最不关心的问题...尝试在 765px x 550px 的设备上查看您的网站。您会注意到,如果侧边栏中的一些元素处于打开状态,您将无法滚动侧边栏并单击底部元素。它们只是从屏幕上滑落并且无法访问,因为该元素现在已修复。这是我们放弃粘性侧边栏的原因之一,因为我们无法控制用户拥有的视口(viewport)类型。

最好的办法是将其保留为传统的侧边栏​​并允许其滚动。如果人们想用它来导航,他们将能够在阅读您的内容并导航后向上滚动。你不需要一直把它放在他们的脸上。让自己免于烦恼。

关于jquery - 在保持相对的同时向下滚动时使侧边栏变粘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57428068/

相关文章:

jquery - div 大小的 Fancybox

php - 使用博客文章作为缩略图库

jQuery 通过单击 div 外部隐藏

css - 我的页眉处于固定位置并且我遇到了 Disqus 问题。

css - 专门针对 wordpress 中的小部件的 Bootstrap

jquery - 我如何才能为创建的每个小时专栏提供从上午 9 点到下午 5 点的不同时间?

javascript - 处理 Ajax 响应

css - 在 Woocommerce 中将结帐字段标签移到左侧

java - 如何在 Jquery TagIt 中不包含特殊字符和数字

css - 嵌套 CSS 问题