这是一个常见的问题,但是一些新人没遇到过可能不会发现,现在我对这种现在进行了分析与总结
设置一些元素为块级元素时一般这么写
li{display:inline-block; *display:inline; *zoom:1;}
display:inline-block在IE下仅仅是触发了layout,而它本是行布局,触发后,块元素依然还是行布局。所以需让块元素呈递为内联对象,display:inline则起到了这一作用(*号只被ie6、7所识别),然后再通过zoom:1触发layout。即可实现所谓的inline-block。
display:inline-block布局的元素在chrome下会出现几像素的间隙,原因是因为我们在编辑器里写代码的时候,同级别的标签不写在同一行以保持代码的整齐可读性,即inline-block布局的元素在编辑器里不在同一行,即存在换行符,因此这就是著名的inline-block“换行符/空格间隙问题”。如果inline-block元素间有空格或是换行产生了间隙,那是正常的,应该的。如果没有空格与间隙才是不正常的(IE6/7 block水平元素)。
常见的解决方法:
1:去除标签段之间的空格,但是会导致HTML标签可读性差
3:标签写成不闭合,省掉尾标签</a>
2:使用margin、word-spacing、letter-spacing负值:负值的大小与上下文的字体和文字大小相关,外部环境的不确定性,以及最后一个元素多出的父值等问题,这个方法不适合大规模使用
4:使用font-size:0,最好的方法父元素font-size:0; 他的作用便是让多余的空白符消失,当然这会造成所有子元素的文本都一同消失,因此你需要再在子元素加一个font-size:12px。