我最近意识到position: static
是多么无用,除非relative
也这样做,否则它不会提供任何内容。
事实上,我的问题是“为什么不将这一行添加到我们的CSS文件中?”
* { position:relative; }
所以我们始终可以轻松地从It的父级定位任何元素absolute
或者移动元素它只是left: ...
或者任何方向的相同。
那么为什么默认情况下元素不会定位到relative
?
感谢
答案 0 :(得分:5)
让我们将一些元素置于其默认静态状态并使其位置为:relative;。仅仅通过改变这个价值,没有任何反应。它出现在改变之前的完全相同的位置。但它确实改变了两件事:
如果所有元素都是以相对定位开始的,那么您上面的所有两个项目都是自然而然的。您的顶部/右侧/底部/左侧值的工作方式与您认为开箱即用的一样。 Z-index"正常工作"同样。定位上下文总是被约束到下一个父元素,这具有逻辑意义。
最值得注意的是,始终将定位上下文约束到父元素是有限的。让我们假设您想要在页面的右上角放置一个元素,而不管元素在标记中的位置。如果元素被埋没在层次结构中,那将是艰难的。您需要为每个父元素重置该定位上下文。这意味着将它们设置回位置:静态;并且在此过程中失去相对定位的所有好处。
答案 1 :(得分:1)
static
定位是默认值,因为它不会“干扰”页面上任何其他元素的定位。从这个意义上说,它是一个元素可以拥有的最不具破坏性的状态。
此外,当我们谈论网页的渲染时,这是一个非常昂贵和复杂的操作 - 只需绘制一个包含大量静态元素的页面比其他定位元素更快。现代浏览器在这方面肯定是非常先进的,但它确实在20年前为浏览器发挥了作用。
在便利性方面:想象一下您想要绝对定位的动态页面上的元素。你知道,你想把它放在哪个元素上,但是你不知道它们之间可能有多少层次。
使用静态定位,您只需在锚元素上声明position:relative
即可。由于所有元素都具有相对定位,因此您需要重新定位其间的所有元素,这会给您带来困难。