我有两个内联块 div
元素,它们是相同的,位于彼此旁边 . 然而,尽管边距设置为0,但两个div之间似乎有一个4像素的神秘空间 . 没有父div影响它们 - 发生了什么?
CSS
#container
{
display:inline-block;
position:relative;
background:rgb(255,100,0);
margin:0px;
width:40%;
height:100px;
}
这就是我想要的样子:
6 回答
在这种情况下,您的
div
元素已从block
级元素更改为inline
元素 .inline
元素的典型特征是它们尊重标记中的空白 . 这解释了为什么元素之间会产生空隙 . (example)有一些解决方案可用于解决此问题 .
方法1 - 从标记中删除空格
Example 1 - 评论空白:(example)
Example 2 - 删除换行符:(example)
Example 3 - 在下一行关闭部分标签(example)
Example 4 - 关闭下一行的整个标记:(example)
方法2 - 重置字体大小
由于
inline
元素之间的空白由font-size
确定,因此您可以简单地将font-size
重置为0
,从而删除元素之间的空间 .只需在父元素上设置
font-size: 0
,然后为children元素声明一个新的font-size
. 这是有效的,如此处所示(example)这种方法非常有效,因为如果使用
em
单位声明子元素的font-size
,它就无法正常工作 . 因此,我建议从标记中删除空格,或者选择floating the elements,从而避免inline
元素生成的空间 .方法3 - 将父元素设置为display:flex
在某些情况下,您还可以将父元素的
display
设置为flex
. (example)这有效地消除了supported browsers中元素之间的空格 . 不要忘记添加适当的供应商前缀以获得额外支持 .
侧面说明:
使用负边距去除
inline
元素之间的空间是非常不可靠的 . 如果有其他更优化的解决方案,请不要使用负边距 .使用
inline-block
允许在HTML中使用空格,这通常等于.25em(或4px) .您可以注释掉空白区域,或者更常见的解决方案是将父级的
font-size
设置为0并将其重置为内联块元素上所需的大小 .inline-block
自动设置默认white-space
,就像每个人都说的那样 . (这是由于元素"inline"属性,与HTML
标记中的文本字符串中的单词之间的间距相同 . 这就是为什么在标记中删除white-space
也有效 . )最简单的解决方法是只对容器进行float
. (例如float: left;
)另一方面,每个id
都应该是唯一的,这意味着您不能在同一个HTML
文档中使用相同的id
两次 . 您应该使用类,您可以在同一个class
中使用多个元素 .找到了一个不涉及Flex的解决方案,因为Flex在较旧的浏览器中不起作用 . 例:
只需添加边框:
2px solid #e60000
;到你的第二个div标签CSS .绝对有效
你需要添加
因为每当你写
display:inline-block
它需要一个额外的margin-right:4px
. 所以,你需要删除它 .