html – 同名div将文本中的背景分割为position:static

两个兄弟div(#one和#two),每个包含一些文本.

我将#two移动到负边距顶部,并期望它覆盖#one,但是当文本位于#one前面时,背景位于下方.

仅当#one具有display:inline-block时才会发生这种情况.

div {
    width:110px;
    height:100px;
    font-size:55px;
    font-weight:900;
    text-align:center
}
#one {
    display:inline-block;
    background:yellow;
}
#two {
    background:purple;
    color:pink;
    margin-top:-90px;
    margin-left:20px;
}
<div id='one'>one</div>
<div id='two'>two</div>

fiddle

如果有人可以给出解释,将不胜感激

编辑:
我不是在寻找一种解决方法,但想了解内联块元素是如何呈现的

解决方法

两个元素都在同一层,就像它们是兄弟姐妹一样.这使他们在同一个平面上.所以实际上你的两层是这样的:

TextText
_ _ _ _ _ _ _ _ _ _

可以安全地假设第二个元素将堆叠在另一个元素的顶部,因此当你使它们都占据相同的空间时,它会将它们合并在一起,如下所示:

Text
Text
_ _ _ _ _
_ _ _ _ _

这有点像两副卡片,然后将它们推到一起.

在这都是基于它们的显示值块,这使它们完全相同:

div {
    width:110px;
    height:100px;
    font-size:55px;
    font-weight:900;
    text-align:center
}
#one {
    background:yellow;
}
#two {
    background:purple;
    color:pink;
    margin-top:-90px;
    margin-left:20px;
}
<div id='one'>one</div>
<div id='two'>two</div>

现在您所看到的是当您将第一个显示显示时:inline-block;.内联元素将始终显示在块元素上方,因为这是Visual Formatting Model滚动的方式,但是这仅适用于元素,而不是文本内容,因此它的显示方式如下:

Text
Text
_ _ _ _ _
_ _ _ _ _

div {
    width:110px;
    height:100px;
    font-size:55px;
    font-weight:900;
    text-align:center
}
#one {
    display:inline-block;
    background:yellow;
}
#two {
    background:purple;
    color:pink;
    margin-top:-90px;
    margin-left:20px;
}
<div id='one'>one</div>
<div id='two'>two</div>

我希望这有助于理解为什么它显示它的方式.当然,如果你改变他们的z-index就像下面三个人建议的那样,那么你把它们放在不同的平面上,如下所示:

Text _ _ _ _ _ Text _ _ _ _ _

相关文章

vue阻止冒泡事件 阻止点击事件的执行 &lt;div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些