介绍
今天就跟大家聊聊有关如何在CSS中去掉inline-block元素的间隙,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
<强> inline-block是什么强>
inline-block即内联块,在CSS的元素分类中可以分成三种:行内元素或者内联元素,块级元素,以及内联块元素。
内联块元素具有了内联元素以及块级元素的特性:(1)元素之间可以水平排列(2)可以当做一个块级元素来设置各种的属性,例如:宽度、高度、填充等。
例子1:定义一个内联元素跨度为inline-block元素
& lt; div id=癲emo"比;
,,,& lt; span>我是一个span
,,,& lt; span>我是一个span
,,,& lt; span>我是一个span
,,,& lt; span>我是一个span
& lt;/div>
# demo 跨度{
,,,显示:inline-block;
,背景:# ddd;
}
效果图:
<强> inline-block兼容性强>
(1)内联级别的元素
对于内联元素(内联元素),所有主流浏览器都支持直接设置显示的价值值为inline-block来将其定义为内联块。
(2)块级别的元素
IE7及以下浏览器对块级元素(块元素)的支持并不完全,它们只支持用显示:inline-block去定义一个内联级别的元素为内联块。
由于IE7及以下浏览器支持直接将内联水平元素设置为内联块,所以我们可以变通实现,先将块级元素设置为内联,然后再去触发该元素的hasLayout,使其拥有和inline-block相似的特性。可以这样写:
例子2:
& lt; div id=癲emo"比;
,,,& lt; div>我是一个div
,,,& lt; div>我是一个div
,,,& lt; div>我是一个div
,,,& lt; div>我是一个div
& lt;/div>
# demo div {
,,,显示:inline-block;
,,,*显示:内联;/* IE7 黑客*/,,,*变焦:1;,/*触发hasLayout */}
IE7及以下浏览器:块级元素转换为inline-block,在IE7及以下浏览器下元素间不出现间隙,内联水平元素转换为inline-block,在IE7及以下浏览器下元素间出现间隙;紧跟块水平转换为inline-block的元素之后有个内联水平转换为inline-block的元素,在IE7及以下浏览器下这俩元素间不出现间隙;紧跟内联水平转换为inline-block的元素之后有个块级转换为inline-block的元素,在IE7及以下浏览器下这俩元素间出现间隙,其它浏览器任何情况下均出现间隙;
<强> inline-block元素间隙由来强>
在例子1中,定义为inline-block元素会产生间隙,如果不设置显示:inline-block,会是什么效果?如下:
例子3:
& lt; div 类=癲emo"比;
,,,,,,,& lt; span>我是一个span
,,,,,,,& lt; span>我是一个span
,,,,,,,& lt; span>我是一个span
,,,,,,,& lt; span>我是一个span
& lt;/div>
.demo 跨度{
,,,,背景:# ddd;
}
效果图:
上面例子中,对跨不做任何处理依然存在空隙,这到底是什么原因,是否是结构上的问题。假如将跨度标签都写成一行,又是怎样的效果,来看一下:
& lt; div 类=癲emo"比;
,,,,,,,& lt; span>我是一个span & lt; span>我是一个span & lt; span>我是一个span & lt; span>我是一个span
,,,& lt;/div>
.demo 跨度{
,,,,,,,,背景:# ddd;
}
效果图:
可以看到间隙是由换行或者回车导致的。只要把标签写成一行或者标签直接没有空格,就不会出现间隙。但是这种方式是不太可靠,存在太多不可控的因素导致失效,例如:代码生成工具,代码格式化,或者其他人修改了代码等等。下面列举了各种去掉间隙的方法,是否适合需要看具体的应用场景了。
<强>移除inline-block元素间隙方法强>
<强>(1)移除标签间的空格强>
元素间的间隙出现的原因是元素标签之间的空格,把空格去掉间隙自然就会消失。来看以下几种写法:
*写法一:
& lt; div 类=癲emo"比;
,,,,,,,& lt; span>我是一个span & lt; span>我是一个span