<a>
周围有<div>
,其中还有一些图像,<h2>
和一段文字。 <a>
全部为inline-block
。每当H2延伸到两行时,下一个<a>
就会偏移。以下是截图。
HTML:
<a href="#">
<div>
<div class="imgOverflow">
<img src="/hello/there">
</div>
<h2>This is the title</h2>
<p>This is a paragraph</p>
</div>
</a>
CSS:
a {
display:inline-block;
font-size:16px;
border:1px solid grey;
width:260px;
margin:5px;
color:black;
overflow: hidden;
}
div {
display:block;
padding:5px;
width:250px;
height:300px;
}
p {
font-size:12px;
text-align:justify;
}
h2 {
margin:5px 0 10px 0;
font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
}
.imgOverflow {
margin:-5px 0 0 -5px;
width:260px;
padding:0;
overflow:hidden;
height:130px;
display:block;
}
如果有人知道某种CSS属性以避免这种情况会非常有帮助。谢谢。
答案 0 :(得分:18)
我想这是因为你的a
元素垂直对齐到底部,而你的一些h2
元素跨越两行,而最后一行只有一行。试试这个:
a {
display:inline-block;
font-size:16px;
border:1px solid grey;
width:260px;
margin:5px;
color:black;
overflow: hidden;
vertical-align: top; /* Notice this line */
}
修改强>
此编辑是在imray的问题之后进行的。
我已经在Ubuntu 12.04 LTS - Chrome 33.0.1750.152中再次测试了这段代码近2年后这个问题得到了回复,并发现 - 现在 - 当您删除vertical-align
属性时,代码倾向于也工作。但是,如果您删除overflow
属性,那么您将看到显示中断。
现在,想象一下以下情况:
This is our container:
------------------------------------------------
| Element 2: |
| Element 1: -------------------- |
| ------------- | Lorem ipsum dolor| |
| | Lorem ips | | sit amet | |
| ------------- -------------------- |
------------------------------------------------
当默认值为element 1
且element 2
将与其容器的基线对齐时,此基线会发生变化 - 显然 - 根据容器的高度,最终由容器确定他们孩子的身高 - 如果没有说明的话。
显然,到撰写本文时 - 由于浏览器的css实现往往会随时间而变化,删除vertical-align: bottom
并离开overflow: hidden
似乎会使代码生效 - 而不是在其他浏览器中测试 - ,但是再简单地将它们对齐到顶部,应该完全解决问题,因为当你对齐顶部时,下一行中的元素将对齐到线的顶部。