首頁 >web前端 >css教學 >如何在css佈局中解決display:inline-block產生間隙的方法詳解

如何在css佈局中解決display:inline-block產生間隙的方法詳解

伊谢尔伦
伊谢尔伦原創
2017-05-30 13:42:272098瀏覽

在做H5的水平滑動卡片時用到了display:inline-block;卻發現處在同一水平線上的元素之間居然產生了縫隙,這很顯然不是我想要的效果,所以我就換成了左浮動,這樣縫隙的問題是解決了,但是需要設置父元素的寬度才能實現水平左右滾動,這樣又增加了代碼量,因為卡片的個數不固定,需要實時設置其父元素的寬度,就要用到js,所以程式碼量增加了,也不是最好的選擇。看來最好的解決方法就是用到display:inline-block;了,於是縫隙的問題就出現了。程式碼如下:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>document</title>
<style>
*{margin:0;padding:0;}
.box{overflow-x:auto;background:#fff;white-space:nowrap;}
.box span{display:inline-block;width:100px;height:30px;line-height:30px;text-align:center;background:#f00;color:#fff;}
</style>
</head>
<body>
<p class="box">
    <span>111</span>
    <span>111</span>
    <span>111</span>
    <span>111</span>
</p>
</body>
</html>

效果如下:

這個縫隙很明顯存在,據說這種表現是符合規範的應該有的表現,是換行造成的空白符號導致的。但這效果很顯然不是我們想要的,我們想要的縫隙是我們根據自己的實際需求而設定的邊距。那麼該如何消除產生的這個縫隙呢?方法有三:

 方法一:元素之間不換行,程式碼如下:

<p class="box">  <span>111</span><span>111</span><span>111</span><span>111</span>
</p>

效果如下:

方法二:為其父元素設定font-size:0;給自己設定實際需要的字號大小。不好的地方就是有些瀏覽器有設定最小字體,像chrome和opera,但現在的chrome好像沒有這個設定了,程式碼如下:

css:

.box{overflow-x:auto;background:#fff;white-space:nowrap;font-size:0;}
.box span{display:inline-block;width:100px;height:30px;line-height:30px;text-align:center;background:#f00;color:#fff;font-size:14px;}

html:

<p class="box">
    <span>111</span>
    <span>111</span>
    <span>111</span>
    <span>111</span>
</p>

效果如下:

#方法三:負margin方法,需要注意的是這個間隙跟字號大小有關係的,所以間隙不是確定值。

以上三種方法,前兩種是比較好的解決方法,第三種方法不建議使用。網路上還有其他的解決辦法,但我認為還是前兩種比較好。


以上是如何在css佈局中解決display:inline-block產生間隙的方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn