说一说inline-block的奇葩之处
今天本来想聊一下margin和padding,但是当我给div加了一个display:inline-block之后,发现一个问题:
.box_demo{border: 1px solid #333;width: 80px;display: inline-block;}
<div class="box_demo">
box1
</div>
<div class="box_demo">
box2
</div>

发现没有,中间赫然有着4px的间距!!之前居然一直都没有注意到!!!
我想着是不是只有block元素才有的问题,看了一下inline元素,依然存在这个问题,这个引起了我的注意,在网上搜罗了一番,渐渐发现,这确实是一个坑。
称 号:“inline-block元素间间隙问题”。
现 象:如上。
产生原因:换行、空格导致。
解决办法:(1)去掉换行;
优点:此解法so easy;缺点:代码洁癖者哭了;
(2)使用负margin值;
优点:此解法so easy;缺点:字体大小不同,他们的间隙也不同,到底该负margin多少 %>_<%;
(3)使用font-size:0;
CSS:
.wrap{font-size:;}
.box_demo{border: 1px solid #333;
width: 80px;
display: inline-block;
font-size: 16px;}
HTML:
<div class="wrap">
<div class="box_demo">
box1
</div>
<div class="box_demo">
box2
</div>
</div>
截图:

解铃还须系铃人,既然这个间隙是由于空格等文本类的问题产生的,那好,我让你的字体大小为零,然后让该显示的字体还设置为16px,间隙就不见了。
优点:此解法so easy;缺点:可能会存在一些兼容性问题;
看到这里,关于这个奇葩问题的所有核心内容以就完了,你又成功的识破了一个坑,并知道如何填补它,如果想继续深一步了解,可以继续往下看。
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
其实这个问题还可以围绕着这个“由于文本产生的问题”,还可以有其他解法:
比如:(1)使用letter-spacing;
修改上述CSS:
.wrap{letter-spacing: -4px;}
.box_demo{border: 1px solid #333;
width: 80px;
display: inline-block;
letter-spacing:;}
优点:此解法so easy;缺点:不兼容(Opera浏览器下需设置为:-8px);
(2)使用word-spacing;
方法同上,只用把letter改为word即可;
优缺点同上;
还有一个非常重要的问题,上述解法对于低于IE7的兼容性,有兴趣的可以点击下边的链接:
http://demo.doyoe.com/css/inline-block-space/
说一说inline-block的奇葩之处的更多相关文章
- inline,block,inline-block的区别
display:block block元素会独占一行,多个block元素会各自新起一行.默认情况下,block元素宽度自动填满其父元素宽度. block元素可以设置width,height属性.块级元 ...
- 块状元素和内联元素 【inline block】
// 9) { colorRandom += colorArray[randomV - 10]; } else { colorRandom += randomV; } } currentEle.css ...
- inline, block, and inline-block
总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...
- display:inline block inline-block 的区别
原文地址:http://blog.csdn.net/jly036/article/details/5506182 display:block就是将元素显示为块级元素. block元素的特点是: 总是在 ...
- inline,block,inline-block解析
display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div& ...
- inline-block,inline,block,table-cell,float
float:left ---------------------------------------------------------------------------------------- ...
- CSS3如何去除 inline block 元素之间多出的空格
display: inline-block 属性很好的避免了元素的浮动问题,但是会有点小问题,就是 inline-block 元素间的回车会被显示为一个空格.然而,我们写代码时,都是用回车来格式化的. ...
- CSS 概念 Block Inline Containing block
Block 元素 包括 "block-level box," "block container box," and "block box" ...
- [CSS3] CSS Display Property: Block, Inline-Block, and Inline
Understanding the most common CSS display types of block, inline-block, and inline will allow you to ...
随机推荐
- http_build_query()就是将一个数组转换成url 问号?后面的参数字符串,并且会自动进行urlencode处理,及它的逆向函数
http_build_query()就是将一个数组转换成url 问号?后面的参数字符串,并且会自动进行urlencode处理 例如: $data = array( 'foo'=>'bar', ' ...
- 转 UML类图几种关系的总结
UML类图几种关系的总结 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregati ...
- Swiper说明&&API手册
最近使用Swipe.js,发现中文的资料很少,试着翻译了一下.能力有限,翻译难免错漏,欢迎指出,多谢! 翻译自:http://www.idangero.us/sliders/swiper/api.ph ...
- Node.js高级编程读书笔记 - 2 文件和进程处理
Outline 3 文件.进程.流和网络 3.1 查询和读写文件 3.2 创建和控制外部进程 3.3 读写数据流 3 文件.进程.流和网络 3.1 查询和读写文件 path 从Node 0.8起,pa ...
- 部分用到的python代码
replace file extensions # change .htm files to .html for file in *.htm ; do mv $file `echo $file | s ...
- 使用curl获取Location:重定向后url
在php获取http头部信息上,php有个自带的函数get_headers(),我以前也是用这个的,听说效率在win上不咋地,再加上最近研究百度url无果,写了cURL获取重定向url的php代码来折 ...
- UVA 10474 大理石在哪 lower_bound
题意:找输入的数在排完序之后的位置. 主要是lower_bound 函数的使用.它的作用是查找大于或者等于x的第一个位置. #include<cstdio> #include<alg ...
- fatal error: Invalid layout of preloaded class
今天很奇怪,在java类中写一个单纯的main函数,打印一句话竟然出不来,后来各种资料找,终于知道解决的方法了,如下 错误截图: 解决方法: (1)选中你要运行的那个类,点击上方的project--p ...
- knockout 学习实例2 text
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 每日学习心得:$.extend()方法和(function($){...})(jQuery)详解
2014-02-09 前言: 节后头两天上班,主要是调整工作状态.项目也不是很紧,趁着周末把年前遇到了一些关于JS和JQuery的一些问题给总结一下.主要是介绍JQuery的extend方法和(fun ...