代码之家  ›  专栏  ›  技术社区  ›  Ryan Peschel

如何不让潜在的滚动条影响填充?

  •  1
  • Ryan Peschel  · 技术社区  · 4 年前

    我对下面的问题进行了完整的描述:

    .container {
      position: relative;
      width: 300px;
    }
    
    .outer {
      background-color: #f8f8f8;
      overflow-y: scroll;
      height: 300px;
    }
    
    .button {
      width: 32px;
      height: 32px;
      background-color: #698fc3;
      border-radius: 50%;
      
      position: absolute;
      right: 25px;
      bottom: 8px;
    }
    <div class="container">
      <div class="outer">
        <div class="inner">
          a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />
        </div>
      </div>
      <div class="button"></div>
    </div>

    我试图让右下角的蓝色按钮始终保持在右下角,而不管滚动位置如何。

    问题是这个容器并不总是有滚动条。当这种情况发生时,它将不再对齐。理想情况下,我想设置 right button 8px ,但它被放置在滚动条的顶部。

    有没有什么方法可以使它与div的右下角对齐,而不管滚动位置和是否有滚动条?似乎现在我必须使用Javascript有条件地设置 正确的 属性到 当滚动条不存在时。

    1 回复  |  直到 4 年前
        1
  •  0
  •   Temani Afif    4 年前

    在外部元件内制作按钮并使用 position:sticky

    .container {
      width: 300px;
      margin: 5px;
    }
    
    .outer {
      background-color: #f8f8f8;
      overflow-y: auto;
      height: 300px;
      
      display: flex;
      flex-direction: column;
      justify-content: space-between;
    }
    
    .button {
      width: 32px;
      height: 32px;
      background-color: #698fc3;
      border-radius: 50%;
      
      
      flex-shrink: 0;
      /* margin-top same as width, auto for the left and the offset you want for the right and bottom*/
      margin: -32px 8px 8px auto; 
      position: sticky;
      bottom: 8px;
    }
    <div class="container">
      <div class="outer">
        <div class="inner">
          a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br />a<br
          />
        </div>
        <div class="button"></div>
      </div>
    </div>
    
    <div class="container">
      <div class="outer">
        <div class="inner">
          a<br />a<br />a<br />a<br />a<br />
        </div>
        <div class="button"></div>
      </div>
    </div>