当我们将元素设为inline-block时,总是会莫名其妙出现一些间距

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
ul {
padding-left: 0;
}
ul li {
width: 20px;
height: 20px;
background: red;
display: inline-block;
}
</style>
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</body>
</html>

效果如下:

原因在于空白符的存在!</li>与下一行的<li>之间存在空白换行符

解决方法一般是在不破坏dom结构的前提下改变写法以清除换行符

1.结束标签与开始标签拼接

<ul>
<li> </li><li> </li><li> </li><li> </li>
</ul>

2.拆分开始标签

<ul>
<li>
</li><li
></li><li
></li><li
></li>
</ul>

3.拆分结束标签

<ul>
<li></li
><li></li
><li></li
><li></li>
</ul>

4.将换行符注释掉

<ul>
<li></li><!--
--><li></li><!--
--><li></li><!--
--><li></li>
</ul>

5.使用margin负值

即将margin-left设为负值,让其向左偏移,但偏移距离与浏览器、上下文字体及字体大小有关,一说为-0.25em,亲测并不适用,故此方法适用性不佳

6.清除闭合标签(看起来怪怪的。。)

<ul>
<li>
<li>
<li>
<li>
</ul>

注意: 父元素的闭合标签不可省去,否则在低版本浏览器(主要指IE)上会有问题

7.父元素font-size设为0

原理很简单,父元素font-size设为0后空白字符字体大小也为0,自然看不出来,但是在有些浏览器上,最小字体有限制,主要指的是chrome,

这时,可加上-webkit-text-size-adjust: none (-webkit-text-size-adjust 是否根据设备大小调整字体,仅仅在移动设备上有效),但最新的chrome已解决此问题

8.letter-spacing设为负值

将leter-spacing设为负值可减少设置消除间距,不同浏览器数值不一样,一般不会发生叠加,但opera上会有过小还原的现象。

9.word-spacing设为负值

类似于letter-spacing的效果,但过小时会发生叠加,私认为此方法也不算可取。

因此现阶段最好的方法为: 改变dom结构、清除闭合标签及font-size设为0

inline-block间距解决方案的更多相关文章

  1. inline元素和inline-block元素的4px空白间距解决方案

    实在不想写了,要吐了,看到一篇讲的比较全的文章,直接粘链接了 inline元素和inline-block元素的4px空白间距解决方案 出自脚本之家

  2. inline-block元素的4px空白间距解决方案

    http://www.jb51.net/css/68785.html  inline-block元素的4px空白间距解决方案 

  3. inline-block,inline,block,table-cell,float

    float:left ---------------------------------------------------------------------------------------- ...

  4. inline,block,inline-block的区别

    display:block block元素会独占一行,多个block元素会各自新起一行.默认情况下,block元素宽度自动填满其父元素宽度. block元素可以设置width,height属性.块级元 ...

  5. 块状元素和内联元素 【inline block】

    // 9) { colorRandom += colorArray[randomV - 10]; } else { colorRandom += randomV; } } currentEle.css ...

  6. IE6双倍margin间距解决方案

          问题:在IE6下如果某个标签使用了float属性,同时设置了其外补丁“margin:10px 0 0 10px”可以看出,上边距和左边距同样为10px,但第一个对象距左边有20px. 解决 ...

  7. inline, block, and inline-block

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

  8. display:inline block inline-block 的区别

    原文地址:http://blog.csdn.net/jly036/article/details/5506182 display:block就是将元素显示为块级元素. block元素的特点是: 总是在 ...

  9. inline,block,inline-block解析

    display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div& ...

随机推荐

  1. matplotlib表面三维图

    1.basic numpy.meshgrid 由一维数组到二维数组,用于生成网格数据 matplotlib python绘图库 2.code In [88]: from mpl_toolkits.mp ...

  2. MQTT--mosquitto使用详解

    mosquitto_pub(发布)的用法 用法: mosquitto_pub [-d] [-h hostname] [-i client_id] [-I client id prefix] [-p p ...

  3. 原 [Android]LIstView的HeaderView

    目录[-] (1)添加HeaderView之后尺寸布局被忽略. (2)添加HeaderView之后导致OnItemClickListener的position移位 (3)LayoutInflater的 ...

  4. nginx日志统计流量

    cat access.log |awk '{sum+=$10} END {print sum/1024/1024/1024}' $10是nginx字段bytes_sent 字段,根据自己的日志格式修改 ...

  5. 使用putty从linux主机上面往windows主机下面拷贝文件

    更新一下,把putty的包解压以后,想要在dos窗口中直接使用,必须把putty解压的文件的路径添加到环境变量中,这样使用起来就会非常简单了. 郁闷了好久,终于搞定了putty的上传下载文件命令psc ...

  6. 【已解决】ckfinder_php_3.4.4 IIS 报错 无效请求

    ckfinder_php_3.4.4 IIS 报错 无效请求 (Invalid request) Apache 正常,但是在IIS环境下报错,解决方法 设置 C:\Windows\Temp 目录 给 ...

  7. NodeJS示例异步式(Asynchronous)IO与同步式Synchronous)IO

    理解IO      IO(Input/Output)通常是指计算机线程进行慈磁盘读写或者网络通信时的一种行为.   同步式(Synchronous)IO和异步式(Asynchronous )IO   ...

  8. iOS tableView嵌套部分WebView效果实现

    对于一些资讯类的app,比如网易新闻,今日头条这样的,他们的文章详情页大部分基本都是tableView中嵌套webView来实现的效果,其中顶部标题,关注按钮等这些可能是原生的,内容部分是webVie ...

  9. zabbix 自定义脚本监控activemq

    1. 编写获取activemq队列积压消息(check-amq.sh) #!/bin/bash QUEUENAME=$ MQ_IP='172.16.1.56' curl -uadmin:admin h ...

  10. 移动Web开发技巧汇总(转)

    META相关 1. 添加到主屏后的标题(IOS) <meta name="apple-mobile-web-app-title" content="标题" ...