关于display:inline-block,你有可能不知道的东西

以前有篇文章介绍过inline-block的相关内容,但是现在看回来还是不够详细,原来我还是图样图森破啊,今天遇到个问题,勾起了我的兴趣,后来查找原因,在这位同学的博客找到了原因,感谢~!

http://www.cnblogs.com/lrzw32/p/4927570.html

在做一个重构练习的时候,比如做一个导航栏的菜单,可以通过li和float:left来实现,然后之前看了张鑫旭大大的有关float的两篇文章后,现在做布局,如果能不用float我都会尽量不去使用了。那么要实现这样的菜单就可以通过display:inline-block来实现了,下面贴代码:

<ul>
    <li class='headerLi'><a href="#">首頁</a></li>
    <li class='headerLi'><a href="#">精选线路</a></li>
    <li class='headerLi'><a href="#">专属攻略</a></li>
    <li class='headerLi'><a href="#">私人定制</a></li>
    <li class='headerLi'><a href="#">我的中心</a></li>
    <li class='headerLi'><a href="#">注册</a></li>
</ul>

以这样一段html来说吧,在CSS我们会这么写:

nav{
    width:1080px;
    position: relative;
}
nav ul{
    list-style: none;
    width:980px;
    margin: 0 auto;
    padding: 0;
    overflow: hidden;
    position: absolute;
    z-index: 10;
}
.headerLi{
    background: rgba(0,0,0,0.5);
    font-size: 14px;
    height: 40px;
    width:140px;
    line-height: 40px;
    text-align: center;
    display: inline-block;
}
.headerLi:hover{
    background: rgba(255,0,0,0.3);
    color: #fff;
}
.headerLi a{
    text-decoration: none;
    display: inline-block;
    width:100%;
    height: 100%;
    color: #333;
}

出来效果是这样的:

我们就纳闷了,980/7不就是140吗?怎么排不下,而且li之间还有空隙?

其实这是因为inline-block是结合了inline的特点和block的特点,inline元素有个特点就是默认就是有个空白的文本符的,加入有多个空白文本符,浏览器会默认的合并为一个,这就是为什么在这里会看到中间的空隙的原因了。

既然知道了原因,那就好办了,既然是文本符,那就跟font的属性有关,其实只需要在ul上把font-size设置为0就可以了,不幸,我们来试试,下面分别是ul的font-size为50和为0的情况:

50:

0:

原文地址:https://www.cnblogs.com/danielweb/p/4965222.html