谁赢了css顶部/底部?

时间:2014-05-25 14:20:53

标签: jquery html css position

如果你有一个div位于'底部'像这样:

<div id="box" style="position: absolute;width: 10px;height: 10px;bottom: 0px;"></div>

然后如果您要使用&#39; top&#39; ...

更改位置
$('#box').css({'top':'0px'});

&#39;底部&#39;会发生什么? css命令以及决定谁(顶部或底部)获胜的原因?

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

思路:

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

我之前从未想过

2 个答案:

答案 0 :(得分:5)

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

由于您的元素位置绝对,请参阅section 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”的值并求解该值。

在您的情况下,因为在为top设置值后,值会过度约束,top会获胜。

请注意,设置none将不起作用,因为它不是bottom的有效值,设置空字符串会将其恢复为默认值,对于大多数元素而言,{{1} }},这不会导致过度约束的值。

答案 1 :(得分:0)

热门&#34;胜利&#34;当所有三个topbottomheight都存在时,MDN

  

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