javascript - 是否可以用 `position: absolute` 模拟元素的 `position: relative` 放置?

标签 javascript html css positioning

我必须开发一个生成表格(有点……)的软件,并且必须提供对元素位置的完全控制。

到目前为止,我们有这样的构造:

<div id="container" style="display: table-row">
  <div id="a" style="position: absolute"></div>
  <div id="b" style="position: absolute"></div>
  <div id="c" style="position: absolute"></div>
</div>

还有一些javascript代码来放置#a , #b#c #container 中的元素使用 lefttop样式指令。

这样,元素甚至可以“倒置”,即:#b可能是左边的第一个元素和 #a最后一个,取决于其他一些规则。

然而,这失败了,因为那些被从流中取出,所以 #container有一个空高度。很公平。

好像impossible to solve this problem那样,所以我想到了使用 position: relative对于子元素,但是这样做,lefttop样式指令现在引用初始元素的位置并且不再可用...

你遇到过类似的情况吗?我可以做些什么来实现所需的行为?

非常感谢。

P.S:对于那些想知道为什么我们不使用 <table> 的人表示表格的元素,我也想知道,但无权决定...

最佳答案

我想到了两件事 - 既有问题又可能不是 super 可扩展的:

1) 添加 position: absolute 不是在 CSS 中,而是在 JS 中——但在你这样做之前,将容器固定到它的绝对前偏移尺寸,这样高度就不会丢失

var container = $('#container');
container.height(container.height()).children().css('position', 'absolute');

2) 使用position: relative,但设置它们的新位置相对于它们的原始位置减去它们的偏移量。

var el = $('#some_el');
el.css({top: 0 - el.position().top});

关于javascript - 是否可以用 `position: absolute` 模拟元素的 `position: relative` 放置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11849932/

相关文章:

javascript - jQuery 操作仅一次/自定义 URL

javascript - React-Native AsyncStorage setItem 不起作用?

javascript - 你如何使用 javascript 设置 strftime?

jquery - 使用 jquery 定位 CSS 内联背景

html - 如何在跨度中包装文本?

javascript - 什么是 Touch 等同于 Mouseout 事件?

javascript - Telerik 的 findNodeByValue 在循环外起作用,但在循环内不起作用

html - 如何找到跳过内部元素的元素的xpath

javascript - 幻灯片上的上一个按钮无法正常工作

html - HTML 表格列的宽度分配取决于行数