li 与 li 之间有看不见的空白间隔是什么原因引起的?如何解决?
在写页面的时候,会需要将<li>这个块状元素横排显示,此时就需要将display属性设置为inline-block,此时问题出现了,在两个<li>元素之间会出现大约8px左右的空白间隙,下面举例说明:
<html> <head> <title>demo</title> <style type="text/css"> *{ margin:0; padding:0; } body{ width:100% } ul li { list-style-type:none } h3 { text-align:center; color:blue; margin-bottom: 10px; } .wrap{ width:600px; margin:0 auto; margin-top:100px; } .wrap li{ width:25%; height:150px; display:inline-block; } .part1 {background-color: red;} .part2 {background-color: blue;} .part3 {background-color: yellow;} .part4 {background-color: black;} </style> <body> <div class="wrap"> <h3>li标签空白测试</h3> <ul> <li class="part1"></li> <li class="part2"></li> <li class="part3"></li> <li class="part4"></li> </ul> </div> </body> </head> </html>
当li标签不设置display:inline-block属性时,页面效果如图所示:

当li标签设置display:inline-block属性时,页面效果如图所示:

原因:浏览器会把inline内联元素间的空白字符(空格、换行、Tab等)渲染成一个空格。为了美观,通常是一个<li>放在一行,这导致<li>换行后产生换行字符,它变成一个空格,占用
了一个字符的宽度。
解决办法:
(1)为<li>设置float:left。不足:有些容器是不能设置浮动,如左右切换的焦点图等。
(2)将所有<li>写在同一行。不足:代码不美观。
<div class="wrap"> <h3>li标签空白测试</h3> <ul> <li class="part1"></li><li class="part2"></li><li class="part3"></li><li class="part4"></li> </ul> </div>
(3)既然是空格占一个字符的宽度,那我们索性就将<ul>内的字符尺寸直接设为0,即font-size:0,将下面样式放入样式表,问题解决。
不足:<ul>中的其他字符尺寸也被设为0,需要额外重新设定其他字符尺寸,且在Safari浏览器依然会出现空白间隔。
.wrap ul{font-size:0px;}
(4)消除<ul>的字符间隔letter-spacing:-8px,不足:这也设置了<li>内的字符间隔,因此需要将<li>内的字符间隔设为默认letter-spacing:normal。
.wrap ul{letter-spacing: -5px;}
.wrap ul li{letter-spacing: normal;}

(41条消息) li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?_sjinsa的博客-CSDN博客_li和li之间的空隙

浙公网安备 33010602011771号