li之间产生的间隙问题的解决方法

场景:有这样一串代码:

<ul>
    <li><a href="#">登录</a></li>
    <li><a href="#">快速注册</a></li>
    <li><a href="#">关于</a></li>
    <li><a href="#">帮助</a></li>
    <li><a href="#">App下载</a></li>
</ul>

给li添加inline-block后,制作了这样一个导航栏:

 

 

 看着没有什么问题。但是当我们将a标签添上背景,再将其放大,如下:

 

 

 

 

 

 这时候发现,在每个li之间都会有一条小缝。我们现在要解决的就是这样一条小缝隙了。当然如果觉得这条小缝可以接受的也可以不解决。

原因:

这条间隙出现的原因是html中的空白字符。在每个li之间是有一个换行符的,这种换行符被定义为一个空白符。然后在inline-block时,就产生了间隙。

 

 

解决:

既然知道时空白符造成的,解决掉这个空白符就行了。

方法1:将每个li都写在同一行,这不就没有换行符了吗。

<ul>
    <li><a href="#">登录</a></li><li><a href="#">快速注册</a></li><li><a href="#">关于</a></li><li><a href="#">帮助</a></li><li><a href="#">App下载</a></li>
</ul>

 

 

 问题解决了,但是这样的代码看起来真是要命。所以不是好的解决方法。

方法2:将闭合的</li>放到下一个<li>之前,也没有换行符了。

<ul>
    <li><a href="#">登录</a>
    </li><li><a href="#">快速注册</a>
    </li><li><a href="#">关于</a></li>
    </li><li><a href="#">帮助</a>
    </li><li><a href="#">App下载</a>
</ul>

这样子也是可以的。

方法3:去掉闭合,使Html为我们闭合它。

<ul>
    <li><a href="#">登录</a>
    <li><a href="#">快速注册</a>
    <li><a href="#">关于</a>
    <li><a href="#">帮助</a>
    <li><a href="#">App下载</a>
</ul>

 

 

空白符归根结底也是字符,会受到font-size影响。

方法4:使这个换行符的font-size变成0。通过改变父节点的font-size来实现。

ul{
    font-size:0;
}
li{
  font-size:16px;/*注意要设置这一条*/  
}

 

 这种方法也可以解决间隙问题,但也产生了新的问题,就是出现了下面的间隙。

 

方法5:设置负的边距。

直接使li偏移也是可以的。

 

posted @ 2020-02-28 10:45  ellenxx  阅读(2103)  评论(0编辑  收藏  举报