谁赢了css顶部/底部?

如果你有一个位于’底部’的div,就像这样:

如果你要用’顶’改变位置……

 $('#box').css({'top':'0px'}); 

“底部”css命令会发生什么,以及决定谁(顶部或底部)获胜的原因是什么?

我应该在设置顶部的同时以某种方式取消底部吗?

思路:

 $('#box').css({'top':'0px','bottom','none'}); $('#box').css({'top':'0px','bottom',''}); 

我以前从没想过

CSS中各种场景中的宽度,高度和盒子偏移之间的相互作用都在规范的第10节中详述。

由于您的元素是绝对定位的,请参阅第10.6.4节 ,其中说:

对于绝对定位的元素,垂直维度的使用值必须满足此约束:

‘top’+’margin-top’+’border-top-width’+’padding-top’+’height’+’padding-bottom’+’border-bottom-width’+’margin-bottom’+’bottom ‘=包含块的高度

如果’top’,’height’和’bottom’都是auto,则将’top’设置为静态位置并在下面应用规则3。

如果这三个都不是’auto’:如果’margin-top’和’margin-bottom’都是’auto’,则在额外约束条件下解决方程,即两个边距得到相等的值。 如果’margin-top’或’margin-bottom’中的一个是’auto’,则求解该值的等式。 如果值过度约束,则忽略“bottom”的值并求解该值。

在您的情况下,因为一旦为toptop wins设置了值,值就会过度约束。

请注意,设置none将不起作用,因为它不是bottom的有效值,并且设置空字符串会将其恢复为其默认值,对于大多数(如果不是所有)元素都是auto ,这不会导致过度约束的值。

topbottomheight都存在时, 顶级 “胜利” – MDN :

… top属性会覆盖bottom属性,因此如果top不是auto,则bottom的计算值是top计算值的负值。