* {position:relative}是个坏主意吗?

时间:2010-02-23 12:59:16

标签: css

如果我把它贴在样式表的顶部,这会不会让我感到无比悲伤?

* {position:relative}

5 个答案:

答案 0 :(得分:11)

  

如果我把它贴在样式表的顶部,这会不会让我感到无比悲伤?

是。您将无法再使用绝对定位的元素,例如 - 绝对定位将始终相对于父元素,这几乎不是期望的结果。

我可以想象z-index设置的副作用更多。

IMO不是一个好主意。

不,position: static 已弃用,毕竟这是默认设置:)

答案 1 :(得分:3)

这是一个坏主意imho,因为它改变了元素的默认行为而没有明确的指示,并且具有不可预见的后果。

如果你真的想让大多数元素相对定位,你可能想要考虑制作div和类似的亲戚。

答案 2 :(得分:3)

如果不小心使用,通配符可能会导致性能问题。在你的例子中可能不是这种情况,但这是一个不好的习惯。

但更重要的是,您很难确定地说要将任何行为应用于所有元素。

通过相对定位,你最多可以实现任何目标,最糟糕的是,为自己尝试排除通常“正常工作”的事情会造成很多麻烦。

相对定位肯定有其用途。在需要时应用它。

答案 3 :(得分:3)

只是给硬币的另一面,我已经使用了很多这个设置,并且发现它很有用。主要的进步是使用定位属性(顶部,左侧,右侧,底部)的容易性,而无需始终定义与父级的相对定位。

确实,这个设置会使得除了上面的父母之外的其他任何东西都不可能使用绝对定位,但我发现这是一件好事。因为具有'position:relative'的第一个父级是具有'position:absolute'的任何子级的视觉上事实上的父级,所以在HTML层次结构中使它们成为直接子级也是合乎逻辑的。

简而言之,* {position:relative}强制推行一项约定,以便更容易推断定位的工作原理。

警告1 :事件如果新约定简化了新手的事情,它与使用经验丰富的CSS开发人员不同。如果你在许多前端开发人员的大项目中开始使用它,那么准备面对反对。

警告2 :应正确测试性能问题。我尝试在一些大型网站上打开和关闭此设置,但没有注意到任何差异,但没有真实数字的真实测试(据我所知)。

最后注意事项:第二段中的第一行并不完全正确。如果确实需要,您可以随时覆盖通配符定义,将position: static设置为某个中级节点。

答案 4 :(得分:2)

回答标题问题:

这是当前的CSS 2.1规范:

http://www.w3.org/TR/CSS2/visuren.html#propdef-position

可接受的值包括staticrelativeabsolutefixedinherit

我不确定CSS 3(它仍在进行中),但它们似乎没有提到static

http://www.w3.org/Style/CSS/current-work#positioning

无论如何,我真的不在乎:)

回答正文问题:

默认值为static,因此您将更改页面中每个项目的属性。你能做到的最好是什么。更糟糕的是,你可能会创造一些你甚至不会注意到的奇怪的副作用。

另外(这是我身边的纯粹推测),它对性能不利。我确信渲染引擎已针对大多数静态元素进行了优化。