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