html - 为什么负边距的边框和背景
下一个
问题描述
一个<img>
,后跟一个<p>
负边距。<p>
边框和背景在img
. 我不明白为什么。在 Firefox 和 Chromium 中也是如此。谢谢 !
#d1 {
width:400px;
}
#d1 img {
max-width:350px;
}
.caption {
color:red;
font-size:2em;
border:3px solid red;
margin-top:-40px;
background:#eee;
padding:10px;
/*position:relative;*/
}
<div id="d1">
<img src="https://i.kym-cdn.com/entries/icons/mobile/000/018/012/this_is_fine.jpg">
<p class="caption">This is fine.</p>
</div>
添加position:relative
到.caption
解决问题,但不回答问题。
解决方案
为什么会这样?因为一个元素必须在另一个元素之下......
有一种叫做堆叠上下文的东西。某些元素具有比其他元素更高的堆叠上下文。
- 根元素(元素)
- 非定位元素按定义顺序排列
- 按定义顺序定位元素
所以在这种情况下,由于位置正在改变,p 的堆叠上下文较低。
将 z-index 添加到图像
#d1 {
width: 400px;
}
#d1 img {
position: relative;
display: block;
max-width: 350px;
z-index: 5;
}
.caption {
color: red;
font-size: 2em;
border: 3px solid red;
margin-top: -40px;
background: #eee;
padding: 10px;
/*position:relative;*/
}
<div id="d1">
<img src="https://i.kym-cdn.com/entries/icons/mobile/000/018/012/this_is_fine.jpg">
<p class="caption">This is fine.</p>
</div>
推荐阅读
- java - 为什么这个循环改变了?
- java - 如何获得可嵌入的变化?
- python - 如何使用python根据条件将xml文件中的xml元素放入列表或字典中?
- c# - Dapper 参数扩展和 FROM 子句
- python - For循环未初始化
- javascript - 使用 webapack 4 为每个条目创建 vendor.bundle
- c# - Unity 游戏中心登录
- node.js - 使 nodejs 应用程序在 0.0.0.0 而不是 localhost 上运行
- google-apps-script - 检查其他用户是否正在编辑 Google 表格
- kubernetes - 无法从 k8s Pod 访问外部网络