我有JSFiddle。有人可以解释一下,为什么锚位置相对于其兄弟姐妹错位?我知道我可以通过位置相对和否定顶部偏移来纠正它,但我不明白,为什么它首先就是这样。
HTML:
<div class="container">
<div class="left"></div>
<a href="">Some link</a>
<div class="right"></div>
</div>
CSS:
.container {
height: 25px;
white-space: nowrap;
}
.container .left {
border: 1px solid black;
display: inline-block;
margin: 0;
height: 25px;
width: 80px;
padding: 0;
}
.container .right {
border: 1px solid black;
display: inline-block;
margin: 0;
height: 25px;
width: 80px;
padding: 0;
}
.container a {
display: inline-block;
border: 1px solid black;
height: 25px;
width: 300px;
margin: 0;
}
答案 0 :(得分:7)
此行为的原因是由于.left
和.right
元素中缺少文字。
默认情况下,内联块元素有vertical-align: baseline
,但由于你有空元素,所以没有基线,所以它们将自动与parent
基线对齐(如果在其中添加一些文本 - 甚至一个
- 你会明白地解决问题)
为了防止出现这种情况,您还可以为所有vertical-align
子女设置一个公共.container
。
答案 1 :(得分:2)
您可以添加
vertical-align: top;
到.container a
这会将锚点与div对齐。
答案 2 :(得分:1)
当您声明vertical-align
时,您需要提供inline-block
属性。
你走了。
<强> WORKING DEMO 强>
CSS更改:
.container a {
display: inline-block;
border: 1px solid black;
height: 25px;
width: 300px;
margin: 0;
vertical-align:top;
}
答案 3 :(得分:1)