位置绝对+滚动

Chr*_*eek 89 html css

以下HTMLCSS

.container {
  position: relative;
  border: solid 1px red;
  height: 256px;
  width: 256px;
  overflow: auto;
}
.full-height {
  position: absolute;
  top: 0;
  left: 0;
  right: 128px;
  bottom: 0;
  background: blue;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="full-height">
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

内部根据div需要占据容器的整个头部.如果我现在向容器中添加其他一些流内容,例如:

.container {
  position: relative;
  border: solid 1px red;
  height: 256px;
  width: 256px;
  overflow: auto;
}
.full-height {
  position: absolute;
  top: 0;
  left: 0;
  right: 128px;
  bottom: 0;
  background: blue;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="full-height">
</div>

  Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aspernatur mollitia maxime facere quae cumque perferendis cum atque quia repellendus rerum eaque quod quibusdam incidunt blanditiis possimus temporibus reiciendis deserunt sequi eveniet necessitatibus
  maiores quas assumenda voluptate qui odio laboriosam totam repudiandae? Doloremque dignissimos voluptatibus eveniet rem quasi minus ex cumque esse culpa cupiditate cum architecto! Facilis deleniti unde suscipit minima obcaecati vero ea soluta odio cupiditate
  placeat vitae nesciunt quis alias dolorum nemo sint facere. Deleniti itaque incidunt eligendi qui nemo corporis ducimus beatae consequatur est iusto dolorum consequuntur vero debitis saepe voluptatem impedit sint ea numquam quia voluptate quidem.
</div>
Run Code Online (Sandbox Code Playgroud)

然后容器根据需要滚动,但绝对定位的元素不再锚定到容器的底部,而是停在容器的初始可视底部.我的问题是; 有没有办法让绝对定位元素成为其容器的完整卷轴高度而不使用JS

gia*_*our 77

您需要将文本包装在div元素中并在其中包含绝对定位的元素.

<div class="container">
    <div class="inner">
        <div class="full-height"></div>
        [Your text here]
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.inner: { position: relative; height: auto; }
.full-height: { height: 100%; }
Run Code Online (Sandbox Code Playgroud)

设置内部div的位置relative使其内部的绝对位置元素基于它的位置和高度而不是.container具有固定高度的div.没有内部,相对定位div,.full-heightdiv将始终根据其计算其尺寸和位置.container.

http://jsfiddle.net/M5cTN/

  • `fill-height`元素显然是滚动内容,OP不希望它锚定吗?(通过将蓝色背景更改为背景图像,当我说它没有锚定时,你可以看到我的意思http://jsfiddle.net/M5cTN/82/) (6认同)

fla*_*ier 26

position: fixed;将解决您的问题.例如,检查我的固定消息区域覆盖的实现(以编程方式填充):

#mess {
    position: fixed;
    background-color: black;
    top: 20px;
    right: 50px;
    height: 10px;
    width: 600px;
    z-index: 1000;
}
Run Code Online (Sandbox Code Playgroud)

并在HTML中

<body>
    <div id="mess"></div>
    <div id="data">
        Much content goes here.
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

#data变得更长时,#mess保持其在屏幕上的位置,同时#data在其下滚动.

  • 固定定位将相对于浏览器定位元素,这可能不是所需的结果. (57认同)
  • 父级上的“transform:translate3d(0,0,0);”将导致“position:fixed”变得相对于父级。来源 https://coderwall.com/p/2wzj-a/break-out-of-overflow-hidden-with-relative-positioned-fixed-elements (3认同)

Tor*_*ott 9

所以gaiour是对的,但是如果你正在寻找一个不与内容一起滚动的全高度项目,但实际上是容器的高度,这就是修复.拥有导致溢出的高度的父级,具有100%高度的内容容器,overflow: scroll然后可以根据父级大小而不是滚动元素大小来定位兄弟.这是小提琴:http://jsfiddle.net/M5cTN/196/

和相关代码:

HTML:

<div class="container">
  <div class="inner">
    Lorem ipsum ...
  </div>
  <div class="full-height"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.container{
  height: 256px;
  position: relative;
}
.inner{
  height: 100%;
  overflow: scroll;
}
.full-height{
  position: absolute;
  left: 0;
  width: 20%;
  top: 0;
  height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果有人正在寻找如何实现相同的结果,但使用可变高度的容器(例如“高度:100%”),请阅读这篇文章:/sf/ask/3047749911/ -隐藏嵌套溢出滚动不工作 (2认同)