CSS position:fixed 在定位元素内

新手上路,请多包涵

我有一个定位的 div,其内容可能太长,因此会出现滚动条( overflow:auto 设置)。它用作 ajax 应用程序中的对话框。我想在它的右上角修复一个关闭按钮,这样当用户滚动 div 时它就不会滚动。

我用 position:fixed; right:0; top:0 了,但它把按钮放在了页面的右上角,而不是在 div 中(在 firefox 中)。

是否可以仅使用 CSS 来放置此按钮,而无需在每个滚动事件中使用 js 中的 offsetWidth/Height 进行黑客攻击?

ps:div的高度和宽度不是固定值,它取决于内容的大小和浏览器窗口的大小。用户也可以根据需要调整它的大小。

原文由 Calmarius 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 443
2 个回答

您可以使用 position:fixed; ,但不设置 lefttop 。然后你将使用 margin-left 将它推到右边,将它放在你想要的正确位置。

在此处查看演示:http: //jsbin.com/icili5

原文由 Sotiris 发布,翻译遵循 CC BY-SA 2.5 许可协议

当前选择的解决方案似乎误解了问题。

诀窍是既不使用绝对定位也不使用固定定位。取而代之的是,将关闭按钮放在 div 的外部,并将其 位置设置为 relative 和一个左浮动,以便它立即位于 div 的右侧。接下来,设置负的左边距和正的 z 索引,使其显示在 div 上方。

这是一个例子:

 #close
    {
        position: relative;
        float: left;
        margin-top: 50vh;
        margin-left: -100px;
        z-index: 2;
    }

#dialog
    {
        height: 100vh;
        width: 100vw;
        position: relative;
        overflow: scroll;
        float: left;
    }

<body>
    <div id="dialog">
    ****
    </div>

    <div id="close"> </div>
</body>

原文由 Joseph 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题