创新路
我们一直在努力

css解决display:inline-block;产生的缝隙

在做水平滑动卡片时经常会用到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><div class="box">
    <span>111</span>
    <span>111</span>
    <span>111</span>
    <span>111</span></div></body></html>

效果如下:
1481252340130136.jpg

这个缝隙很明显存在,据说这种表现是符合规范的应该有的表现,是换行造成的空白符导致的。但这效果很显然不是我们想要的,我们想要的缝隙是我们根据自己的实际需求而设置的边距。那么该如何消除产生的这个缝隙呢?办法有三:
方法一:元素之间不换行,代码如下:

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

效果如下:
1481252340831374.jpg

方法二:给其父元素设置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:<div class="box">
    <span>111</span>
    <span>111</span>
    <span>111</span>
    <span>111</span></div>

效果如下:
1481252340831374.jpg

方法三:负margin方法,需要注意的是这个间隙跟字号大小有关系的,所以间隙不是个确定值。

以上三种方法,前两种是比较好的解决办法,第三种方法不推荐使用。网上还有其他的解决办法,但个人认为还是前两种比较好。

未经允许不得转载:天府数据港官方信息博客 » css解决display:inline-block;产生的缝隙

客官点个赞呗! (1)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机