元素在略有不同的位置,但这与我的不同 模型 </跨度> CSS这是怎么回事?
身体 { 身高:100%; 宽度:100%; 保证金:0自动;}
溢出:auto =‘main’&gt; &lt; div id =‘style-x’&gt; X&lt; / div&gt; &lt; div id =‘left-col’&gt;&lt; / div&gt; &lt; div id =‘right-col’&gt;&lt; / div&gt; &LT; /节&gt;&LT; /体&GT;
如果你喜欢,这是我的Codepen 可视化 </跨度> 。
http://codepen.io/sentedelviento/pen/ORyqzv
你的方法没有问题。两者都会尝试根据您提供的值进行居中。
保证金方法失败,因为您没有使用 盒子尺寸方法 像这样。
box-sizing: border-box
这导致了 的 你所有的元素 强> 大于指定的高度和宽度。如果没有这个,你告诉浏览器在宽度和宽度上添加任何填充或边框。高度。
所以你的 的 更大的元素 强> 使用保证金方法时转移。
你设置了一个 2% 填充 style-x ,宽度 38vw 上 #main 。使用边距来居中时,您需要考虑这些因素 的 不同的价值观 强> 。
2%
style-x
38vw
#main
当你设置一个 的 百分比 强> 填充, 它的计算基于 的 宽度 强> 包含块 。
另一方面,变换方法使用包含块的边界框并且没有问题居中 的 更大的元素 强> 。
我建议你加入这个 box-sizing 上 main 和 style-x 如果使用保证金方法。你可以使用
box-sizing
main
*, after, before { box-sizing: border-box; }
这样可以更好地控制所有元素的尺寸。