昨天群里有人問個問題:為什么button加了文字后,產生了對齊不一致的問題。


原因在於baseline的對齊問題。
然后就有人推薦了一篇文章:關於Vertical-Align你需要知道的事情
其中里面最后一個例子講到了如何解決inline元素換行的問題。
里面說用注釋可以解決換行問題,我測試了下發現和注釋完全沒有關系。
換行的原因在於div與div換行制表符產生的空隙,所以要避免換行的話,那就讓div和div挨着一起不要換行,或者設置容器font-size為0,因為制表符的大小受font-size影響。
測試
首先是按照它說的來,是這樣的。
<!DOCTYPE html> <html> <head> <title>test</title> <style type="text/css"> *{ margin: 0; padding: 0; } #container{ width:800px; height: 300px; border: 1px solid #ccc; } .box{ width: 400px; height: 100px; margin: 10px 20px; border: 1px solid #ccc; } .half { height:40px; display: inline-block; width: 50%; vertical-align: bottom; } .left{ background-color: #8ab3bf; } .right{ background-color: #C1CD89; } </style> </head> <body> <div id="container"> <div id="test1" class="box"> <div class="half left">50% wide</div> <div class="half right">50% wide... and in next line</div> </div> <div id="test2" class="box"> <div class="half left">50% wide</div> <!----> <div class="half right">50% wide</div> </div> </div> </body> </html>
結果是這樣的:

可以看到,有沒有注釋都會換行,那么我們測試下div與div挨着一起
<div id="container"> <div id="test1" class="box"> <div class="half left">50% wide</div><div class="half right">50% wide... and in next line</div> </div> <div id="test2" class="box"> <div class="half left">50% wide</div><!----><div class="half right">50% wide</div> </div> </div>
結果為

可以看到當div與div挨着一起的時候,也就是沒有了換行的制表符,因此沒有了空隙,就可以並排一行了。
此外,也可以設置父容器font-size為0也可以達到這種效果。
.box{ width: 400px; height: 100px; margin: 10px 20px; border: 1px solid #ccc; font-size: 0; } <div id="container"> <div id="test1" class="box"> <div class="half left">50% wide</div> <div class="half right">50% wide... and in next line</div> </div> <div id="test2" class="box"> <div class="half left">50% wide</div> <!----> <div class="half right">50% wide</div> </div> </div>
結果為

