display:inline-block换行问题

袁志蒙 1162次浏览

摘要:最近在写网站样式的时候,设置了子元素的宽度,目的让其并排展示一行,之前的都是用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 即可(完美解决)


随机内容

表情

共1条评论
  • 网友评论:

    大哥,你把nav类加到ul中不也能解决吗

    2022-10-09 06:34:22 回复

    点击加载