当li设置为inline-block之后消除元素之间的间距

在仿造酷狗音乐官网的导航栏时,遇到li元素设置为inline-block后存在间距问题。浏览器默认将inline元素间的空白字符渲染为空格,导致间隔。本文介绍了四种解决方法:1) 避免li元素换行;2) 使用margin-right负值;3) 设置float:left; 4) 父元素设font-size:0,子元素重置font-size。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在仿酷狗音乐官网的时候,在写一个导航栏的时候,遇到了这样的一个问题(为直观一点,这里我们将它的背景颜色设置为红色):

如下,将两个ul中的li设置为inline-block之后,理想中的状态应该是像这样,两个li元素之间并没有任何的间隔,连在一起的,

然而实际上的状态是,

为什么呢?

浏览器的默认行为是把inline元素间的空白字符(空格换行tab)渲染成一个空格,也就是我们上面的代码<li>换行后会产生换行字符,而它会变成一个空格,当然空格就占用一个字符的宽度,所以两个li之间的空格间隙就是这么出来了。

解决办法:

第一种:

既然造成这个原因的理由是<li>换行造成的,最为直接简单的办法就是不让<li>换行,即像这样

然后你就会发现,没有换行的<li>之间是没有间隙的,而换行的<li>依旧存在间隙

但是这样子过后,大量的<li>标签写在一行,代码不够美观,看起来很冗长

第二种:

使用margin-right负值,使得右边的<li>元素左移覆盖掉前者的间隙。但是不同浏览器之间两者的间隙是不同的,所以这个办法并不通用

效果图如下:

两个元素之间没有空隙了

第三种:

为inline-block元素添加样式float:left,利用浮动覆盖间隙

第四种:

在父元素中设置font-size: 0,然后在子元素上重置正确的font-size。inline-block元素必须设定字体,不然行内元素中的字体不不显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值