inline-block元素间的空白间距解决方案

对于inline-block间的空白问题一直觉得很头疼,尝试过几种解决办法,自己感觉都不是很满意,今天在这总结一下

<ul>
<li>首页</li>
<li>二手房</li>
<li>新房</li>
<li>租房</li>
<li>业主</li>
</ul>


*{
margin: 0;
padding:0;
border: 0;
outline:0;
}
ul{
list-style: none;
text-align: center;
}
li{
display:inline-block;
padding: 0 15px;
background-color: #1c9b93;
}

这样写的效果是每个li元素跟下一个元素之间都有4px的间距,下面说一下解决办法:

方法一:改变Html的结构,结构分为好多种,每种都能达到效果
(1)

<ul><li>首页</li><li>二手房</li><li>新房</li><li>租房</li><li>业主</li></ul>

好多人经常用这种方法,缺点是只能一行显示代码多的话会很难看而且很长,不易阅读;
(2)

<ul>
<li>
首页</li><li>
二手房</li><li>
新房</li><li>
租房</li><li>
业主</li>
</ul>

这种写法相比(1)就更易阅读,而且接近标签换行格式的写法;
(3)

<ul>
<li>首页</li
><li>二手房</li
><li>新房</li
><li>租房</li
><li>业主</li>
</ul>

这种方法很相似,总结一下就是要让inline-block的标签首位相连不要换行;
(4)

<ul>
<li>首页</li><!--
--><li>二手房</li><!--
--><li>新房</li><!--
--><li>租房</li><!--
--><li>业主</li><!--
</ul>

这种办法就是用注释来代替inline-block标签间的换行,我在项目中不会用这种方法,因为种感觉代码跟跟注释一起显得代码好乱。
总结:以上这四种办法都能解决问题,但是也有局限性,就是只是用于静态页面,如果页面是后台生成的就没办法了;
方法二:改变margin值

li{ margin-left: -4px; }

注:父元素的字体不同,margin值也会做相应调整,所以不推荐使用,依情况而定;
方法三:父元素的字体设置成0

ul{
list-style: none;
text-align: center;
font-size:0;
}
li{
display:inline-block;
padding: 0 15px;
background-color: #1c9b93;
font-size:14px;
}

这种方法经常用,但是在Safari上不行
方法四:jquery方法,这种方法是从别人博客看到的

<ul id="removeBlank">
<li>首页</li>
<li>二手房</li>
<li>新房</li>
<li>租房</li>
<li>业主</li>
</ul>


*{
margin: 0;
padding:0;
border: 0;
outline:0;
}
ul{
list-style: none;
text-align: center;
}
li{
display:inline-block;
padding: 0 15px;
background-color: #1c9b93;
}


$('#removeBlank'),contents().filter(function(){
return this.nodeType === 3;
}).remove();


这种方法是可以的,不过就是通过jquery认为有点麻烦

这里介绍了几种方法都有欠缺之处,大家根据需求选择,如果有更好的方法可以告诉我
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值