html - 绝对/相对定位会破坏相邻 div 的对齐
问题描述
我正在使用绝对和相对定位在容器 div 中水平和垂直居中 div。与此容器相邻的是另一个 div,它应该整齐地放在顶级容器 div 内的容器旁边。但相反,它向下移动,几乎完全超出了顶级 div 的边界。源代码:
#top-level {
background: #90c0ff;
height: 400px;
width: 600px;
}
#container {
background: #bbffbb;
height: 400px;
width: 400px;
display: inline-block;
position: relative;
text-align: center;
}
#inner {
height: 200px;
width: 200px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
border: 1px solid black;
}
#adjacent {
background: #ff5050;
height: 395px;
width: 195px;
display: inline-block;
}
<div id="top-level">
<div id="container">
<div id="inner">
Internal Text
</div>
</div>
<div id="adjacent">
Sample text
</div>
</div>
关于为什么相邻的 div 不能正确对齐的任何想法?
解决方案
您可以在父级上使用 flex 而不是在子级上使用 inline-block ,如果没有足够的空间,将解决第二个框被推下的问题:
#top-level {
background: #90c0ff;
height: 400px;
width: 600px;
}
#container {
background: #bbffbb;
height: 400px;
width: 400px;
position: relative;
text-align: center;
display: inline-block;
vertical-align:top;
}
#inner {
height: 200px;
width: 200px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
border: 1px solid black;
}
#adjacent {
background: #ff5050;
height: 395px;
width: 195px;
display: inline-block;
vertical-align:top;
}
<div id="top-level">
<div id="container">
<div id="inner">
Internal Text
</div>
</div>
<div id="adjacent">
Sample text
</div>
</div>
如果您想知道对齐问题的实际原因,那是因为您有两个相邻的高度不同的内联块元素。
内联块元素的默认垂直对齐方式是基线,这意味着您可以获得所看到的效果。
如果您将容器和相邻容器的垂直对齐更改为顶部,您的代码将按您的意愿工作:
#top-level {
background: #90c0ff;
height: 400px;
width: 600px;
/* add te following */
display: flex;
justify-content: space-between;
}
#container {
background: #bbffbb;
height: 400px;
width: 400px;
position: relative;
text-align: center;
}
#inner {
height: 200px;
width: 200px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
border: 1px solid black;
}
#adjacent {
background: #ff5050;
height: 395px;
width: 195px;
}
<div id="top-level">
<div id="container">
<div id="inner">
Internal Text
</div>
</div>
<div id="adjacent">
Sample text
</div>
</div>
推荐阅读
- eclipse - 如何使用日志导航到 Eclipse 中的特定行
- botframework - 在 Botframework V4 中不使用 QnA maker 的常见问题聊天机器人
- amazon-web-services - 使用 Terraform 创建 AWS 会话管理器
- r - 按组手动填充具有多个比例的 geom_tile
- algorithm - 树中边的矛盾证明
- java - 为什么我的 servlet 程序中出现空白页
- sql - 查找每列名称的行数
- javascript - 将 Observable.subscribe() 返回的值分配给 const
- url - 为什么 Asp.Net Core QueryHelpers 不编码 @ (at) 符号?
- macos - nasm 函数_system 从未执行过?