代码之家  ›  专栏  ›  技术社区  ›  user2596635

固定定位div不尊重相对定位父级?

  •  -1
  • user2596635  · 技术社区  · 6 年前

    希望有人能看到我在这里遗漏了什么,我有两个div相对定位,其中子元素定位固定。我将其设置为,当我滚动页面时,两个div固定在浏览器顶部,代码如下:

    //Code to make sub-nav and cart scroll with the page
    $(document).ready(function() {
      var stickySidebar = $('.sideSubNav, .cartcontainer').offset().top;
    
      $(window).scroll(function() {
        if ($(window).scrollTop() > stickySidebar) {
          $('.sideSubNav, .cartcontainer').addClass('affix');
        } else {
          $('.sideSubNav, .cartcontainer').removeClass('affix');
        }
      });
    });
    .sideSubNav.affix,
    .cartcontainer.affix {
      position: fixed;
      top: 0;
    }
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <div class="col-sm-9">
      <div class="sideSubNav">
        <ul class="nav">
          <li class="nav-item">
            <a class="nav-link" href="#">Link</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Link</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Link</a>
          </li>
        </ul>
      </div>
    </div>
    
    <div class="col-sm-3">
      <div class="cartcontainer">
        <!--shopping cart-->
      </div>
    </div>

    在它变为固定之前,它取包含div的宽度,但是之后它变小了,所以我试图使它保持固定的宽度,但是如果我把 width: 100% 在fixed div上,它占用页面的整个宽度,完全忽略容器。我知道绝对定位div,如果它在一个相对的容器中,它将尊重宽度,高度等,但这似乎不是固定的情况。有什么我可以做的,使固定定位div尊重集装箱?我使用的是bootstrap4,我不能设置宽度,因为它的响应速度很快。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Razvan Zamfir    6 年前

    任何元素 position: fixed; 视口 ,而不是最近的祖先 position: relative position: absolute

    使用 位置:绝对 对于子元素和 位置:相对 相对于哪个 您需要定位子元素。

    有关CSS定位的更多信息 HERE