我有一个已知高度的容器(高度有时比屏幕长)。

该容器具有一个垂直和水平居中的元素(通过flex)。

我希望将此元素始终在屏幕上始终保持在容器可见部分中的块的垂直居中位置。

我试过的

  • position:sticky; top:50%-但是,这只会使它居中于容器的下半部分。
  • position:sticky; bottom:50%-但是,这只会使它居中于
  • 的上半部分
  • position:sticky; top: 50%; bottom:50%;-看来top会覆盖bottom,所以这就像我第一次尝试使用top:50%
  • 我尝试设置负值,但不起作用

  • 这是一个演示:

    .container {
      height: 1200px;
      background-color: rgba(0, 0, 0, .7);
      color: white;
      display: flex;
      justify-content: center;
      align-items: center;
    }
    .center-piece {
      background-color: green;
      position: sticky;
      top: 50%;
    }
    .center-piece2 {
      background-color: steelblue;
      position: sticky;
      bottom: 50%;
    }
    <div class="container">
      <div class="center-piece">
        #1
      </div>
      <div class="center-piece2">
        #2
      </div>
    </div>


    无论如何,在“始终在屏幕上”的顶部和底部容器的可见部分中,是否可以使它居中居中?

    这是我的应用程序的截屏视频:https://www.youtube.com/watch?v=CwYaBgolNHU

    “原始”将是其后面图像的控件。

    最佳答案

    我可能误解了您的问题,但是您可以使用:

    position: fixed;
    top: 50vh;
    



    .container {
      height: 1200px;
      background-color: rgba(0, 0, 0, .7);
      color: white;
      display: flex;
      justify-content: center;
      align-items: center;
    }
    .center-piece {
      background-color: green;
      position: fixed;
      top: 50vh;
      left: 50vw;
      transform: translate(-50%,50%);
    }
    <div class="container">
      <div class="center-piece">#1</div>
    </div>

    关于html - 使用 "position: sticky"将元素始终显示在屏幕上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38812478/

    10-12 20:49