解決關於inline-block元素換行問題


昨天群里有人問個問題:為什么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>

結果為

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM