我有一个< a>围绕一个< div>其中还有一些图像,< h2>和一段文字. < a>都是内联块.每当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属性以避免这种情况会非常有帮助.谢谢.
解决方法
我想这是因为你的元素垂直对齐到底部,你的一些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属性时,代码也可以正常工作.但是,如果您删除溢出属性,那么您将看到显示中断.
现在,想象一下以下情况:
This is our container: ------------------------------------------------ | Element 2: | | Element 1: -------------------- | | ------------- | Lorem ipsum dolor| | | | Lorem ips | | sit amet | | | ------------- -------------------- | ------------------------------------------------
当元素1上的默认值和元素2将与其容器的基线对齐时,此基线会发生变化 – 显然 – 根据容器的高度,最终由子项的高度决定 – 否则不会指定.
显然,到撰写本文时 – 由于浏览器的css实现往往会随着时间的推移而改变,删除vertical-align:bottom并保留溢出:隐藏似乎使代码工作 – 未在其他浏览器中测试 – 但再次简单地对齐它们应该完全解决问题,因为当您对齐顶部时,下一行中的元素将对齐到行的顶部.