inline-block(行內區塊元素)的詳解和應用


說inline-block(行內區塊元素)之前,先說下他另外的2個兄弟

display:inline; 內聯元素,簡單來說就是在同一行顯示。他沒有高度,給內聯元素設置width和height是沒效果的。
display:block; 塊級元素,簡單來說就是就是有換行,會換到第二行。同時可以設置寬高。

inline-block詳解

inline-block 的元素既具有 block 元素可以設置寬高的特性,同時又具有 inline 元素默認不換行的特性。當然不僅僅是這些特性,比如 inline-block 元素也可以設置 vertical-align(因為這個垂直對齊屬性只對設置了inline-block的元素有效) 屬性。
HTML 中的換行符、空格符、制表符等合並為空白符,字體大小不為 0 的情況下,空白符自然占據一定的寬度,使用inline-block 會產生了元素間的空隙。(這句話下面會用例子解釋)

 

還是似懂非懂嗎,來看下例子吧,保證就懂了

詳細應用

我在了解inline-block之前,我的導航欄一直采用float浮動來達到橫向排列的目的,然而浮動是會產生副作用的,需要清除浮動,相對變得麻煩了。使用inline-block將會變得很方便

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div{
            width: 100%;
            background: yellow;
            height: 100px;
            text-align: center;
            line-height: 100px;
        }
        a{
            color:#fff;
            text-decoration: none;
            display: inline-block;
            width: 100px;
            height: 30px;
            line-height: 30px;
            background: red;
        }
    </style>
</head>
<body>
    <div>
        <a href="">我是a1</a>
        <a href="">我是a2</a>
        <a href="">我是a3</a>
        <a href="">我是a4</a>
    </div>
</body>
</html>

效果

有沒有發現,每個a之間都會有一個空隙,這個空隙是因為塊級元素會換行,就有換行,.HTML 中的換行符、空格符、制表符等合並為空白符.所以換行符會占據寬度,產生間隙

 

如何取消inline-block產生的間隙

我認為有2種方法

第一種

使用負值的margin各個瀏覽器的負值也不相同,才能完美貼合

瀏覽器 margin值(左右)
火狐 margin:-4px
chrome margin:-3px
IE margin:-2px

 

 

 

 

第二種

父元素的css中設置word-spacing負值

瀏覽器 word-spacing
火狐 word-spacing:-8px
chrome word-spacing:-6px
IE word-spacing:-4px

 

 

 

效果

 

兼容性

很遺憾,IE7以下的瀏覽器不支持inline-block,但並非完全不支持

解決IE6、IE7兼容性的方法:

1、首先設置inline-block觸發塊元素,具有了layout的特性,然后設置display:inline使塊元素呈現內聯元素,此時layout的特性不會消失。

2、直接設置display:inline,使用zoom:1觸發layout。

兼容所有瀏覽器的方法是:

display:inline-block;

*display:inline;

*zoom:1;

 

 兼容性解決方法參考自charlinginline-block的兼容性問題


免責聲明!

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



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