inline-block元素之间怎么会有间隙?

先来看问题。很多时候当我们给一组块级元素设置display:inline-block样式的时候会发现每个块级元素之间有空隙。

inline-block元素之间的空隙

这组空隙到底是哪儿来的?为了防止误解我先贴出代码:

.inline-block {
    display: inline-block;
    margin: 0;
    width: 40px;
    height: 20px;
    color: white;
    background-color: darkcyan;
    text-align: center;
}

 <div class="inline-block">1</div>
 <div class="inline-block">2</div>
 <div class="inline-block">3</div>
 <div class="inline-block">4</div>

可以看出在css样式设置中并没有设置元素间的空隙。

我们稍作改变

.inline-block {
    display: inline-block;
    margin: 0;
    width: 40px;
    height: 20px;
    color: white;
    background-color: darkcyan;
    text-align: center;
}

 <div class="inline-block">1</div><div class="inline-block">2</div><div class="inline-block">3</div><div class="inline-block">4</div>

再看效果:


同样设置inline-block,缝隙没了

神奇的事情发生了,缝隙没了!

好了,先作一个不是很科学的总结,空隙主要是“换行”背锅,那就想几个办法“消除换行”。

  • 写成如下样式
<div></div
><div></div
><div></div>
  • 写在一行上
<div></div><div></div><div></div>
  • 把中间的内容注释掉
<div></div><!--
--><div></div><!--
--><div></div>

再来几个复杂点的办法:

  • 在父元素上设置空隙处字体大小font-size:0
  • 使用负margin
  • 看起来非主流的办法,无闭合标签
<div>
<div>
<div>
<div></div>

以上方法足够对付这个小bug了。那么这个bug究竟是怎么产生的呢?

上面已经说的很清楚了,这是“换行”或者“空格”在背锅。其实我们打“空格”或者“回车”换行都相当于键入了空白字符。想一下,我们在html中打一连串字然后突然“空格”一下是不是会有一个留白?好了,这样小bug的原因也很清晰了,以后遇到了就用上面的方法解决吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,816评论 1 92
  • •前端面试题汇总 一、HTML和CSS 21 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? ...
    Simon_s阅读 2,228评论 0 8
  • 本文转发自github, 原文地址 前端开发知识点: 作为一名前端工程师,无论工作年头长短都应该掌握的知识点: 此...
    XDUZ阅读 629评论 0 8
  • 漫漫人生路,我们可能读过很多书,但是让你复述一本书的内容却不一定记得起来,因为人类的记忆是有限的。如果你想在读完每...
    友话明说阅读 452评论 0 6
  • 浅拷贝 浅拷贝就是对内存地址的复制,让目标对象指针和源对象指向同一片内存空间。如: char* str = (ch...
    Asserts阅读 324评论 0 0