display:inline-block产生元素间空隙原理和解决方法
写轮播图时偶遇一个排版问题,用 inline-block 会产生无法通过 margin = 0 消除的空隙
原理#
元素被当成行内元素排版的时候,元素之间的空白符(空格、回车换行等)都会被浏览器处理,根据white-space的处理方式(默认是normal,合并多余空白),原来HTML代码中的回车换行被转成一个空白符,在字体不为0的情况下,空白符占据一定宽度,所以inline-block的元素之间就出现了空隙。这些元素之间的间距会随着字体的大小而变化,当行内元素font-size:16px时,间距为8px。
解决方法#
-
父级font-size设置为0,子元素font-size按照正常大小
ul{ white-space: nowrap; font-size: 0; /* 解决inlineblock导致的空格问题 */ } li { display: inline-block; }
-
子元素之间不回车,缺点是代码可读性变差
<div class="parent"> <div class="child">child1</div><div class="child">child2</div> </div>
参考文章:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步