什么可以控制除了左/右/上/下之外的绝对定位元素的位置?

时间:2016-01-09 01:17:30

标签: css angularjs

我试图在我继承的一些非常古老的Angular代码中追踪控制页面元素的样式,而且我很困惑。

这是一个绝对定位的元素,上面没有 leftrighttopbottom。如果您在Chrome检查器中检查继承的CSS属性,则这些属性都设置为auto

最近的亲属或绝对定位的祖先是一个巨大的position: relative div,跨越整个页面并包含所有内容。

然而,不知何故,这个小元素恰好在正确的位置。我检查getBoundingClientRect(),不知何故,底部是632.95,左边是779.1,右边是975.04,顶部是608.95。我不知道这些价值来自何处以及将元素放在正确的位置。

有什么建议吗?我已经使用Angular对此进行了标记,以防有人知道可能涉及的Angular框架中的某些内容 - 这是一个出现在表单旁边的错误消息,FWIW。

2 个答案:

答案 0 :(得分:1)

我想答案可以从规范中看出来。 标准通常表示如果顶部/底部,左/右是自动的,则默认为position: static值:

onResume

http://www.w3.org/TR/CSS2/visudet.html#abs-non-replaced-width

答案 1 :(得分:0)

绝对定位实际上只是意味着元素不再是正常文档流的一部分。 leftrighttopbottom - 虽然方便定位 - 但却不是在页面上移动元素的唯一方法。

边框,边距和填充都将推送一个元素,但更有可能的候选者是transformtranslate有许多非常方便的定位值,特别是translateXtranslateY,虽然它们实际上只是matrix的简写,但它更难辨别且易于识别未命中。

另一个想法是确保检查leftrighttopbottom的计算值,以防更高的特异性选择器或内联 - 风格压倒你认为的当前价值。