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

Css *{position:relative}是个坏主意吗?,css,Css,如果我把它放在样式表的顶部,这会给我带来无尽的悲伤吗 * {position:relative} 如果我把它放在样式表的顶部,这会给我带来无尽的悲伤吗 * {position:relative} 对。例如,您将无法再使用绝对定位的图元-绝对定位将始终相对于父图元,这几乎永远不会是理想的结果 我可以想象在z-index设置的字段中会有更多的副作用 在我看来,这不是个好主意 不,position:static并没有被弃用,毕竟它是默认设置:)这是一个坏主意,因为它在没有明确指示的情况下更改元素的

如果我把它放在样式表的顶部,这会给我带来无尽的悲伤吗

* {position:relative}
如果我把它放在样式表的顶部,这会给我带来无尽的悲伤吗

* {position:relative}

对。例如,您将无法再使用绝对定位的图元-绝对定位将始终相对于父图元,这几乎永远不会是理想的结果

我可以想象在
z-index
设置的字段中会有更多的副作用

在我看来,这不是个好主意


不,
position:static
并没有被弃用,毕竟它是默认设置:)

这是一个坏主意,因为它在没有明确指示的情况下更改元素的默认行为,并且会产生不可预见的后果


如果您真的想将大多数元素定位为相对的,您可能需要考虑将div和类似的元素设置为相对的。

回答标题问题:

这是当前的CSS 2.1规范:

接受的值包括
静态
相对
绝对
固定
继承

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

不管怎样,我还真的不在乎:)

回答身体问题:

默认值为
static
,因此您可以更改页面中每个项目的属性。你能达到的最好成绩是一事无成。更糟糕的是,你可能会产生一些你一眼就看不到的奇怪的副作用


而且(这纯粹是我的猜测),这对性能不好。我确信渲染引擎已经针对大多数静态元素进行了优化。

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

但更重要的是,很少有人能肯定地说您希望任何行为都应用于所有元素

有了相对定位,你最多只能一事无成,最糟糕的是,如果你试图解决正常情况下“正常工作”的问题,就会给自己带来很多麻烦


相对定位肯定有它的用途。当你需要的时候就使用它。

为了说明问题的另一面,我经常使用这个设置,并且发现它很有用。主要的进步是使用定位属性(上、左、右、下)很容易,而不必一直定义相对于父对象的相对定位

这是真的,这个设置将使它不可能使用绝对定位以外的任何东西,但我发现这是一件好事。因为带有“position:relative”的第一个父级在视觉上是任何带有“position:absolute”的子级的事实上的父级,所以让它们在HTML层次结构中也直接作为子级也是合乎逻辑的

简而言之,
*{position:relative}
强制使用一种约定,使定位的工作原理更易于推理

注意事项1:如果新的约定对新来者简化了事情,那么它与使用经验丰富的CSS开发人员的方式不同。如果你开始在有很多前端开发人员的大型项目中使用它,准备好面对反对

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


最后注意:第二段的第一行不是很正确。如果确实需要,您可以随时覆盖通配符定义,设置
位置:static
一些中级节点。

标题和问题并不匹配:-?好吧,如果我的建议是个好主意,我会继续反对静态定位。。是的,它们符合IMO。“好吧,如果我的建议是个好主意,我会继续反对静态定位。”对你来说很好,但这与
position:relative不同
实际上已经被弃用了(这需要CSS规范声明它已经弃用,而事实并非如此)。感谢您为我调试我的问题:)我尽量不嵌套与视口绝对相关的元素。我希望它能减少firefox和ie之间潜在的z-index问题。@user278457您甚至无法再以这种方式将绝对值定位到父元素的父元素。如果我错了,请纠正我,但我看不出这将如何解决跨浏览器z索引问题。好的,我想我明白你的意思了。我只是不这么想,或者还没必要这么想。我宁愿在父母身上用两个“left:10”而不是一个“left:10”,在孩子身上用一个“left:20”。如果有一天你觉得自己没有受到特别的约束,我想让这个选项保持开放状态是个好主意。@user278457如果是一个小型的个人主页,它可能永远不会是一个问题,但任何未来可能增长的东西,我都不推荐它。“绝对定位总是相对于父元素,这几乎从来都不是期望的结果”这总是我期望的结果!更好的主意。我想我将尝试粘贴一个div{position:relative}进入我的css重置。@user278457仍然是一个可怕的想法。它现在可能对你有用,但是如果有一天你需要绝对定位,或者必须包含一个外部小部件,该怎么办呢?我仍然可以给某个东西一个绝对位置。我只是不想把它嵌套在另一个div中。我真的不明白为什么你要嵌套相对于视口定位的东西。你的意思是,如果我设计的东西应该包含在外部网站上,对吗?@user278457在我的经验中,绝对定位元素不是相对于身体,而是相对于具有
位置:relative