【发布时间】:2017-10-21 16:17:29
【问题描述】:
我有一个包含大量内容的容器,因此我设置了overflow: auto; 以使其滚动。
我还需要在这个容器的右下角固定位置的按钮(类似于 Material Design 中的 FAB 按钮)。
按钮很好地放置在容器的右下角。不幸的是,当我滚动内容时,按钮随之移动。我对绝对定位的理解是它将元素相对于其父元素定位(使用position: relative;)。那么为什么这个按钮会移动呢?将它修复给父母的正确方法是什么?
预期的行为是无论滚动位置如何,按钮都会停留在右下角。例如,请参阅this page 并搜索短语“滚动期间工具栏的动画离屏”。
请注意,我希望通过绝对定位而不是固定定位来完成这项工作。无论容器在浏览器窗口中嵌套多深,按钮都应位于其容器的右下角。
* {
box-sizing: border-box;
}
.container {
position: relative;
overflow: auto;
height: 256px;
width: 256px;
margin-right: 16px;
border: solid 1px red;
padding: 4px;
}
.fab {
position: absolute;
right: 20px;
bottom: 20px;
color: white;
background-color: blue;
}
<div class="container">
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.
<Button class="fab">
Ok
</Button>
</div>
请看我的 JSFiddle here
【问题讨论】:
-
你的小提琴里没有按钮
-
JSfiddle 中没有浮动按钮。另外请阅读以下内容,因为不需要使用 JSfiddle,可以在 SO 中创建 css/js/html sn-ps。 stackoverflow.blog/2014/09/16/…
-
@Dale_dale12,没有意识到可以直接在SO中创建css/js/htm sn-ps。下次会这样做。
-
@TylerH,这个问题提供了一个固定定位的解决方案,它相对于浏览器窗口起作用。我需要它相对于可以嵌套在许多其他容器中的容器。我还添加了预期行为的示例。如果有人能解释为什么我的原始代码不起作用,那也会有所帮助——这违背了我对绝对定位的理解!
-
这值得重新打开。关于父容器中绝对定位的链接问题应该被这个重复,与@Naresh 的要求几乎没有关系。我自己很想知道为什么绝对位置的工作方式与可滚动父级中的工作方式一样。
标签: css css-position