摘要:最近在写网站样式的时候,设置了子元素的宽度,目的让其并排展示一行,之前的都是用float写,没有遇到问题,今天使用了inline-block,却换行了,打开调试模式...
最近在写网站样式的时候,设置了子元素的宽度,目的让其并排展示一行,之前的都是用float写,没有遇到问题,今天使用了inline-block,却换行了,打开调试模式,查看padding和margin均为0,也就是说,问题并不是出现在换行元素本身上边,这就很奇怪了,代码也很简单:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{margin: 0;padding: 0;box-sizing:border-box}
.nav{
width: 100%;
}
.nav li{
width: 20%;
display: inline-block;
}
</style>
</head>
<body>
<ul>
<li>
<a href="https://www.yzmcms.com/">首页</a>
</li>
<li>
<a href="https://www.yzmcms.com/xiazai/">下载</a>
</li>
<li>
<a href="https://www.yzmcms.com/dongtai/">动态</a>
</li>
<li>
<a href="https://www.yzmcms.com/anli/">案例</a>
</li>
<li>
<a href="https://www.yzmcms.com/lianxi/">联系</a>
</li>
</ul>
</body>
</html>查询了相关资料,终于找到了原因:
inline-block元素之间,写代码时的换行,是一个空格,所以虽然肉眼看不到,但是实际上是有空格字符串占了位置,所以会导致 inline-block 产生不可见的间距,就出现了无法理解的换行,而 float 属性脱离标准文档流 ,所以不会产生换行的效果。
解决方案:
1.不设置display:inline-block,而是用我们熟悉的float来实现。
2.设置父元素的属性:white-space: nowrap,强制不换行(不推荐使用)
3.inline-block元素之间,写代码时的不换行,但HTML代码的可读性很不好(不推荐使用)
4.父元素:font-size: 0,inline-block元素重新设置 font-size 即可(完美解决)

网友评论:
大哥,你把nav类加到ul中不也能解决吗
2022-10-09 06:34:22 回复