在使用display: inline-block;时,这些inline-block之间会有间隙,根据无双 - 《去除inline-block元素间的空隙》的说法,这个间隙是4px或者8px的距离(与浏览器有关),如果间隙是确定的,那根据这个我们就可以用CSS来避免这个间隙。根据之前的经验,也发现了可以通过改变HTML代码的结构来规避这个信息。

假设<ul>之间的<li>都是inline-block,最早我的做法是直接不换行,把所有标签连着写:

<ul>
<li>这里是文字内容</li><li>这里是文字内容</li><li>这里是文字内容</li>
<ul>

这个方法虽然有效,但的确不算最“优雅”的办法,尤其在<li>有很多例如class之类的属性的时候会很大程度地影响阅读。

从HTML结构上入手

从上面可以看出规避inline-block间隙的办法就是使HTML元素之间本身没有间隙,于是问题的思路就清楚了,因为元素的标签分为开始标签和结束标签,只要使上一组<li>的结束标签紧挨着下一组<li>的开始标签,像这样...</li><li>...就可以了,于是HTML结构还可以改成这样:

<ul>
<li>这里是文字内容</li
><li>这里是文字内容</li
><li>这里是文字内容</li>
<ul>
<!--这样上一个元素的结束标签就是与下一个元素的开始标签紧挨着的了,浏览器会认为它们没有间隙-->

还可以写成这样:

<ul>
<li>这里是文字内容</li><!--
--><li>这里是文字内容</li><!--
--><li>这里是文字内容</li>
<ul>
<!--利用注释来完成元素之间的连接,其实原理是一样的-->

也可以这样:

<ul>
<li>
这里是文字内容</li><li>
这里是文字内容</li><li>
这里是文字内容</li>
<ul>
<!--和这样:-->
<ul>
<li>这里是文字内容
</li><li>这里是文字内容
</li><li>这里是文字内容</li>
<ul>

这些方法都是通过改变HTML结构来实现元素之间无间隙,本质都是一样的。我个人比较喜欢用的是第二种方法,只需要改变一个符号的位置就可以。

从CSS上入手

除了从HTML结构上入手外,根据上面说的间隙距离是固定的,此外,这个根本上还是属于样式问题,所以还可以从CSS上来解决这个间隙。CSS解决间隙的办法有这些:

采用负边距:利用负边距来抵消间隙

ul li{
display: inline-block;
margin-right: -4px;
}

font-size:inline-block的父元素font-size设为0也可以,因为<li>被当作inlie-block处理,所以也有内联元素的性质,因此可以用处理内联元素的属性来处理这些inlie-block

ul{
font-size: 0;
-webkit-text-size-adjust: none;
}
li{
display: inline-block;
font-size: 14px;
}
/*根据张鑫旭大神的文章,chrome浏览器会有默认最小字体大小,所以在这里要对chrome做单独的处理*/

letter-spacing和word-spacing:原理同设置font-size相同。

ul{
letter-spacing: -4px;
}
ul li{
letter-spacing: 0;
}
/*以及word-spacing,这俩的原理是一样的*/
ul{
word-spacing: -4px;
}
ul li{
word-spacing: 0;
}

结语:以上是一些我暂时认为比较通用,不会造成更大影响的处理办法。当然还有各种各样的好的处理办法,还有时候会遇到一些特殊情况,那时候就需要具体情况,具体分析,具体解决了。


参考文章:

张鑫旭 - 《去除inline-block元素间间距的N种方法》

无双 - 《去除inline-block元素间的空隙》

去除inline-block之间的间隙的更多相关文章

  1. GIS地理工具案例教程——批量去除多边形的之间的间隙

    GIS地理工具案例教程--批量去除多边形的之间的间隙 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.com 问题:几乎所有的手工生产的数据,都存在多边 ...

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

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

  3. inline和inline-block的间隙问题

    我们在前端布局的时候,会偶尔发现,在具有inline/inline-block属性的元素间存在一小段间隙,网上有些文章说这个间隙是6px,但我觉得应该是一个空格的宽度. 这里以inline-block ...

  4. img之间的间隙问题

    前言:关于基线(base line),中线(middle line),行高(line height)的了解还是比较浅的,所以引用前辈的成果,稍带解释下 1)行高:两行文字之间"基线" ...

  5. 多个Img标签之间的间隙处理方法

    1.多个标签写在一行 <img src="/i/eg_tulip.jpg" alt="郁金香" height="100px"/> ...

  6. 当li设置为line-block时,元素之间出现间隙的原因和解决方法

    原因 因为浏览器默认把inline元素之间的空白符(Tab.空格.换行)渲染成一个空格.而如下述代码,两个li元素之间的换行符被渲染成一个空格,则元素之间产生了间隙. 用Chrome浏览器将场景模拟出 ...

  7. [原创]ie6,7中td和img之间有间隙

    情形描述 开发工具:VS2010: 浏览器版本:IE6以上,火狐,谷歌: 页面布局设计:Table+Img布局: 项目预览问题:火狐,谷歌,IE8以上未出现问题,IE6,IE7图片之间有间隙. 分析原 ...

  8. 【Web】[原创]ie6,7中td和img之间有间隙

    情形描述 开发工具:VS2010: 浏览器版本:IE6以上,火狐,谷歌: 页面布局设计:Table+Img布局: 项目预览问题:火狐,谷歌,IE8以上未出现问题,IE6,IE7图片之间有间隙. 分析原 ...

  9. 如何消除inline-block元素之间的间隙?

    一.问题现象 在CSS布局中,如果我们想要将多个行内块元素并排,会发现同行显示的inline-block元素之间会出现一定的空隙,这就是换行符/空格导致的,叫做换行符/空格间隙. 1 <!DOC ...

随机推荐

  1. sudo执行脚本找不到环境变量

    sudo执行脚本找不到变量 问题 当普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本,然后再sudo执行脚本,就找不到变量,未能 ...

  2. Sonar升级遇到的那些事儿

    目录 背景 如何升级 如何回滚 问题解决 参考 背景 目前我们用SonarQube版本是4.0,这次准备升级到最新版本5.1, 以便支持以后的JavaScript的项目. 如何升级 我们可以直接跨越版 ...

  3. revealapp 用于调试IOS的UI

    下载地址(官网):http://revealapp.com/ 破解方法:http://blog.csdn.net/ljb_wh/article/details/39345599

  4. Sqoop2入门之导入关系型数据库数据到HDFS上(sqoop2-1.99.4版本)

    sqoop2-1.99.4和sqoop2-1.99.3版本操作略有不同:新版本中使用link代替了老版本的connection,其他使用类似. sqoop2-1.99.4环境搭建参见:Sqoop2环境 ...

  5. oracle 利用flashback将备库激活为read wirte(10g 及上)

    oracle 利用flashback将备库激活为read wirte(10g 及上) 环境: OS: CENTOS 6.5 X64 DB: ORACLE 10.2.0.5 主库操作: SQL> ...

  6. Flex 加载tiff

    gis系统常常要加载tiff,因为好多土地证书,各种文件都是扫描件,如果你是用as来写的前台,怎么加载呢,顺便说下用插件AlternaTIFF也是可以得不过浏览器加载这么多插件是不太好的. 首先TIF ...

  7. Jmeter组件1. CSV Data Set Config

    位置:Test Plan | Add | Config Element | CSV Data Set Config 意义: 脚本参数化 节省CPU跟内存(可以准备好数据文件去代替动态生成数据,节约CP ...

  8. UBUNTU 13.04 install Grive

    sudo apt-get install software-properties-common sudo apt-get install python-software-properties sudo ...

  9. Visual Studio 2013 编译CEF步骤

    If you'd like to build the Chromium Embedded Framework (a wrapper for Chromium, for creating browser ...

  10. Linux下grep命令

    2.grep命令 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本 ...