当前位置: 首页 > 面试题库 >

为什么这些内联块div元素之间存在无法解释的差距?

胥宏义
2023-03-14
问题内容

我有两个相同的内联块div元素,彼此相邻放置。但是,尽管将边距设置为0,但两个div 之间似乎仍有4像素的神秘空间。没有父div会影响它们-怎么回事?

CSS

#container
{
    display:inline-block;
    position:relative;
    background:rgb(255,100,0);
    margin:0px;
    width:40%;
    height:100px;
}

问题答案:

在这种情况下,您的div元素已从block关卡元素更改为inline元素。inline元素的典型特征是它们尊重标记中的空白。这就解释了为什么 元素之间会产生间隙

(例)

有一些解决方案可用于解决此问题。

方法1-从标记中删除空格
示例1-将空白注释掉:(

<div>text</div><!--
--><div>text</div><!--
--><div>text</div><!--
--><div>text</div><!--
--><div>text</div>

示例2-删除换行符:(

<div>text</div><div>text</div><div>text</div><div>text</div><div>text</div>

示例3-在下一行关闭标签的一部分

<div>text</div
><div>text</div
><div>text</div
><div>text</div
><div>text</div>

示例4-在下一行关闭整个标签:(

<div>text
</div><div>text
</div><div>text
</div><div>text
</div><div>text
</div>

方法2-重置 font-size
由于inline元素之间的空格是由决定的font- size,因此您可以简单地将重置font-size为0,从而删除
元素之间的空格。

只需font-size: 0在父元素上设置,然后font- size为子元素声明一个新元素。如本文所示,此方法有效

#parent {
    font-size: 0;
}

#child {
    font-size: 16px;
}

这种方法效果很好,因为它不需要更改标记。但是,如果font-size使用em单位声明了子元素,则无法使用。因此,我建议从标记中删除空格,或者选择浮动元素,从而避免元素产生的空间inline。

方法3-将父元素设置为 display: flex在某些情况下,您还可以display将父元素的设置为flex。

这样可以有效地删除受支持的浏览器中元素之间的空格。不要忘记添加适当的供应商前缀以获取其他支持。

.parent {
    display: flex;
}
.parent > div {
    display: inline-block;
    padding: 1em;
    border: 2px solid #f00;
}



.parent {

    display: flex;

}

.parent > div {

    display: inline-block;

    padding: 1em;

    border: 2px solid #f00;

}


<div class="parent">

    <div>text</div>

    <div>text</div>

    <div>text</div>

    <div>text</div>

    <div>text</div>

</div>

侧面注意事项:使用负边距消除元素之间的间隔是非常不可靠的inline。如果还有其他更好的解决方案,请不要使用负边距。



 类似资料:
  • 问题内容: 鉴于此HTML和CSS: 结果,SPAN元素之间将有4像素宽的空间。 我知道为什么会发生这种情况,而且我也知道可以通过删除HTML源代码中SPAN元素之间的空白来摆脱该空间,如下所示: 但是,我希望找到一种不需要篡改HTML源代码的CSS解决方案。 我知道如何使用JavaScript解决此问题-通过从容器元素(该段)中删除文本节点,如下所示: 但是,仅靠CSS就能解决这个问题吗? 问题

  • 问题内容: 以下是我的代码,我想理解 为什么 #firstDiv被所有浏览器向下推。我真的很想 了解 以下事实的内部运作原理:为什么将其向下而不是以一种或另一种方式向上拉。(而且我知道如何对齐它们的顶部:)) 而且我知道它的overflow:hidden是导致它的原因,但不确定为什么将div向下推。 问题答案: 基本上,您在代码中添加了更多的混乱情况,这造成了更多的混乱,因此,首先,我尝试消除妨碍

  • 如果我在锚元素中放置div元素,它会使我的超文本标记语言无效。 不在内联元素中放置块级元素的原因是什么?

  • 问题内容: 假设您有一个,给它一个定值,然后在其中添加元素,在我的情况下为另一个。 这个想法是容器的内容将导致容器伸展,并成为内容的背景。但是,当我这样做时,包含的对象会缩小以适合非漂浮的对象,并且漂浮的对象将要么全部伸出,要么一半伸出,一半进入,并且对big的大小没有任何影响。 为什么是这样?有什么我想念的东西,怎么才能让漂浮的物品伸出其中的东西呢? 问题答案: 最简单的方法是放在父div上,而

  • 问题内容: 遇到了一个奇怪的CSS问题。有人可以解释为什么包含内容的框未垂直对齐吗? 如果您将文本放在class的范围内-它将正确对齐。 问题答案: 默认值是其 将框的基线与父框的基线对齐 注意:您可以通过添加到选择器中来查看此默认值。由于是默认设置,因此对齐方式保持不变。 您需要对其进行更改以使块在顶部对齐,例如: 基准定义为 大多数字母“坐着”且下级延伸到其下的线 解决 为什么 添加文本似乎可

  • 问题内容: 谁能解释为什么在Python中将单个元素元组解释为该元素? 和 他们为什么不只是将元组打印为? 请参阅以下示例: 问题答案: 单个元素元组永远不会被视为包含的元素。括号对分组最有用,而不是对元组的创建。逗号会这样做。 他们为什么不只将(1,)打印为(1)? 可能是因为打印内置容器类型提供了一种表示形式,可用于通过表示重新创建容器对象,例如: 的docs在此方面提供了一些清晰度: 如果可