不知道大家有没有碰到过设置了display:inline-block;的几个相邻元素之间有几px间距的问题,这里提供几种简单实用的解决方法,希望能够帮到大家!
 
  方法1. 将<li>标签之间的空格与换行全部去掉,这也是我比较常用的一种方法
  原html代码:
<ul>
<li>控球后卫</li>
<li>得分后卫</li>
<li>小前锋</li>
<li>大前锋</li>
<li>中锋</li>
</ul>

  css代码:

* {
margin:;
padding:;
box-sizing: border-box;
}
body {
background: #bbb;
}
ul {
list-style: none;
width: 800px;
height: 40px;
background: #BF0D0D;
font-size: 20px;
color: #fff;
line-height: 40px;
margin: 50px;
}
ul li {
display: inline-block;
width: 160px;
text-align: center;
border-right: 1px solid #8E0303;
}
ul li:last-child {
border-right: none;
}

  运行效果:

  我们发现li的宽度160px乘以5不就等于ul的宽度800px吗,那为什么“中锋”这个li还被挤下来了,难道是小球时代传统中锋被集体抛弃的原因吗?哈哈当然不是,这其实是由于inline-block的特性导致,只要是存在空格或者换行的相邻inline-block元素,显示出来就会有几个px的间距。那我们对html结构作以修改:
<ul>
<li>控球后卫</li><li>得分后卫</li><li>小前锋</li><li>大前锋</li><li>中锋</li>
</ul>
  改成这样之后我们发现中锋又回去了:

  但是将他们都放在一行的这种做法非常影响代码的可读性,我们可以将它改成这样:
<ul>
<li>控球后卫</li><!--
--><li>得分后卫</li><!--
--><li>小前锋</li><!--
--><li>大前锋</li><!--
--><li>中锋</li>
</ul>
  也就是在相邻的元素之间加上空白的html注释,变相地取消了他们之间的空白节点。还有其他的几种改法这里不一一列举,大家也可以自由发挥,只要是取消了相邻元素之间的空白节点就能达到目的。
 
  方法2. 去掉结束标签
  如下:
<ul>
<li>控球后卫
<li>得分后卫
<li>小前锋
<li>大前锋
<li>中锋
</ul>
  这样也能得到理想中的结果,但如果要兼容低版本IE,最后一个列表项的结束标签还是要加上的。
 
  方法3. 使用负边距
  改动代码如下,其他代码不变:
ul li {
display: inline-block;
width: 160px;
text-align: center;
border-right: 1px solid #8E0303;
margin-right: -10px;
}
ul li:last-child {
border-right: none;
margin-right:;
}
  这样也能解决问题,其中,margin-right的大小并不是固定的,它和字体大小以及字体都有关系,大家可以查阅张鑫旭老师的一篇博客(http://www.zhangxinxu.com/wordpress/2010/11/%e6%8b%9c%e6%8b%9c%e4%ba%86%e6%b5%ae%e5%8a%a8%e5%b8%83%e5%b1%80-%e5%9f%ba%e4%ba%8edisplayinline-block%e7%9a%84%e5%88%97%e8%a1%a8%e5%b8%83%e5%b1%80/)中第六部分的表格,也可以在自己的代码中进行试验,直到试出合适的值为止。
   这几种方法基本上能够解决实际开发当中的大部分问题,当然还有许多其它的解决方案,也欢迎大家留下更加神奇的方法!

inline-block元素间距问题的几种解决方案的更多相关文章

  1. CSS3如何去除 inline block 元素之间多出的空格

    display: inline-block 属性很好的避免了元素的浮动问题,但是会有点小问题,就是 inline-block 元素间的回车会被显示为一个空格.然而,我们写代码时,都是用回车来格式化的. ...

  2. 去除行内(inline/inline-block)元素之间的间距

    先展示一下,行内元素之间存在间距,实例代码如下: <style> div { color: #fff; padding: 25px 50px; } .inline-f00 { displa ...

  3. 多个inline元素、block元素、inline-block元素在父容器中的换行情况

    1.首先看inine元素的换行情况 <style> *{padding:0;margin:0} div.wrap{width:200px;height:200px;border:1px s ...

  4. 当inline元素包裹block元素时会发生什么

    经常有图片链接写法如下: <a href="www.baidu.com"><img src="baidu.jpg" /></a&g ...

  5. inline元素、block元素、inline-block元素

    inline 内联元素:是不可以控制宽和高.margin等:并且在同一行显示,不换行,直到该行排满. block 块级元素:是可以控制宽和高.margin等,并且会换行.块级对象元素会单独占一行显示, ...

  6. block元素和inline元素的特点

    一.block元素的特点 1.处于常规流中时,如果width没有设置,会自动填充满父容器 2.可以设置height/width及margin/padding 3.处于常规流中时,布局在前后元素位置之间 ...

  7. 关于block元素和inline元素

    呃...这个会不会太基础了.最近在复习,所以基础知识也不能够忽略. 根据HTML 4.01 规范,其描述如下(http://www.w3.org/TR/html401/struct/global.ht ...

  8. inline元素、block元素

    inline元素 不会独占一行,相邻的行内元素会排列在同一行内,直到一行排不下才会换行 高.行高.以及外边距和内边距不可改变 宽度就是它的文字或图片的宽度,不可改变,随元素内容变化而变化 内联元素只能 ...

  9. inline, block, and inline-block

    总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...

随机推荐

  1. 如何创建Vim Dotfile?

    Dotfile是电脑系统里的隐藏文件,它是专门给更高级的用户,如开发者.程序员或工程师使用的,让他们用来调整系统.如何创建Vim-Dotfile? 可以参考以下步骤: 1. 首先,你要检查一下.vim ...

  2. zookeeper源码分析之二客户端启动

    ZooKeeper Client Library提供了丰富直观的API供用户程序使用,下面是一些常用的API: create(path, data, flags): 创建一个ZNode, path是其 ...

  3. 代码的坏味道(21)——中间人(Middle Man)

    坏味道--中间人(Middle Man) 特征 如果一个类的作用仅仅是指向另一个类的委托,为什么要存在呢? 问题原因 对象的基本特征之一就是封装:对外部世界隐藏其内部细节.封装往往伴随委托.但是人们可 ...

  4. WebSocket - ( 一.概述 )

    说到 WebSocket,不得不提 HTML5,作为近年来Web技术领域最大的改进与变化,包含CSS3.离线与存储.多媒体.连接性( Connectivity )等一系列领域,而即将介绍的 WebSo ...

  5. error C4430:missing type specifier 解决错误

    错误    3    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int ...

  6. JavaScript学习笔记(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  7. 使用gulp解决RequireJS项目前端缓存问题(二)

    1.前言 这一节,我们主要解决在上一节<使用gulp解决RequireJSs项目前端缓存问题(一)>末尾提到的几个问题: 对通过require-config.js引入的js文件修改后,没有 ...

  8. MySQL 优化之 MRR (Multi-Range Read:二级索引合并回表)

    MySQL5.6中引入了MRR,专门来优化:二级索引的范围扫描并且需要回表的情况.它的原理是,将多个需要回表的二级索引根据主键进行排序,然后一起回表,将原来的回表时进行的随机IO,转变成顺序IO.文档 ...

  9. 换个角度看微信小程序[推荐]

    去年参加几次技术沙龙时,我注意到一个有意思的现象:与之前大家统一接受的换名片不同,有些人并不愿意被添加微信好友--"不好意思,不熟的人不加微信". 这个现象之所以有意思,是因为名片 ...

  10. 小小改动帮你减少bundle.js文件体积(翻译)

    我已经从事过好多年的SPA开发工作,我发现很多的程序猿都从来不往 bundle.js 文件的体积上动脑筋,这让我有点懵逼. “安心洗路,等俺把代码混淆压缩后就一切666了”,若是有人这么说,我会翻白眼 ...