为什么<span>在应用保证金和填充时会在<div>之外突破?</div> </span>

时间:2012-05-19 14:28:21

标签: html css

我知道这是非常基本的CSS。如何保持div中包含的范围?此时,跨度延伸到div的顶部和底部之外。

div {
  width: 200px;
  margin: 10px;
  background-color: #ff0;
}
span {
  margin: 5px;
  padding: 5px;
  background-color: #fc0;
}
<body>
  <div>
    <span>span</span>
  </div>
</body>

3 个答案:

答案 0 :(得分:35)

要回答您的问题,这不仅仅是paddingmargin的问题,还包括widthdisplaybox model的问题

jsFiddle

span {
    display: inline-block;
}

这将遵循您应用于范围的任何填充,边距或宽度。

答案 1 :(得分:2)

内联元素不会消耗垂直填充和边距空间。您可以制作范围display: block,但没有更多详细信息,我不知道这是否会实现您的目标。

答案 2 :(得分:0)

内联,未替换框(例如跨度)的垂直填充,边框和边距从内容区域的顶部和底部开始,与“行高”无关。但在计算线框高度时仅使用“线高”。因此,您会在此处看到重叠:http://jsfiddle.net/Q9AED/

如果您想使用简单的解决方案,可以使用line-height而不是display:inline-block:using line-height

显示:内联块在Safari中工作&gt; = 2,Opera&gt; = 9,IE&gt; = 8,Firefox&gt;但是你可以在IE中模仿一个内联块&lt; 8:显示:内联; zoom:1。