如果你有一个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',''});
我之前从未想过
答案 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;当所有三个top
,bottom
和height
都存在时,MDN:
... top属性会覆盖bottom属性,因此如果top不是auto,则bottom的计算值是top计算值的负值。