2012-07-09 71 views
0

以下情况:
http://files.dqxtech.net/leftmargin/
http://jsfiddle.net/xeFN3/保证金左:汽车不能为负,但保证金权:汽车可以

<div class="container"> 
    <div class="element-left"> 
    </div> 
    <div class="element-right"> 
    </div> 
</div> 

.container { 
    width:120px; 
} 
.element-left { 
    width:120px; 
    margin-left:12%: 
    margin-right:auto; 
} 
.element-right { 
    width:120px; 
    margin-right:12%: 
    margin-left:auto; 
} 

问题:
的。元素左侧应该与.element右侧对称,但事实并非如此。 对于.element-left,“自动”保证金评估为负值,“12%”保证金评估值为12%。 对于.element-right,“自动”边距评估为零,“12%”边距评估为负值。

任何想法为什么发生这种情况,以及如何解决它? text-align确实有所帮助。

+0

我意识到,我可以将元素作为可能的解决方案进行浮动。但这并不能解释不对称行为。 – donquixote 2012-07-09 12:20:41

+0

而且,我应该提到,我在Ubuntu上使用Chromium,Firefox和Opera尝试了这些内容。 – donquixote 2012-07-09 12:21:41

+0

我也可以使容器更大,但是然后12%会在px中产生不同的结果。 – donquixote 2012-07-09 12:23:32

回答

4

margin - 值auto始终计算为零或正像素数。

对于.element左, “自动” 保证金计算结果为负面的东西

没有,margin-right计算结果为零;元素只是溢出了它的父元素,这可以通过overflow属性来控制。元素默认溢出到右侧和底部。通过将文本方向从ltr设置为rtl(从右到左),可以逆转此行为。

我想,你会更好地使用内部DIV的相对位置。 另一个可能的解决方案是use fixed negative value instead of auto (e.g. -12%)

+0

好的,rtl/ltr解释了不对称行为!非常感谢。 – donquixote 2012-07-09 12:56:22

+0

嗯。你提到的两种解决方案并没有完全达到预期的结果。我希望在“狭窄”和“最窄”的容器中都有12%的保证金。这意味着,没有可靠的余裕值。而位置相对也不会削减它。 我想方向:rtl;实际上会做我想要的。它对我来说感觉有点肮脏,用它来达到这个目的。 – donquixote 2012-07-09 13:04:59

+0

“它只是觉得有点肮脏[...]”这是! – feeela 2012-07-09 13:12:45