元素不显示内联

时间:2016-07-12 18:33:17

标签: html css css3

我有两个使用以下属性设置的 div 元素:

.elem1 {
    width: 47.5%;
    margin-right: 2.5%;
    display: inline-block;
}

.elem2 {
    width: 47.5%;
    margin-right: 2.5%;
    display: inline-block;
}

注意:如果我将边距缩小为 2.25% ,则当父级为 时,元素将内联。 body 即可。如果然后我将它们换成另一个较窄的 div ,则第二个元素会再次中断到下一行。

由于父 100% 的总数达到 width ,为什么这些元素未定位为内联< / strong>以及如何解决此问题,以便始终将其置于内联

我基本上想要 float ,而不使用 float 属性。

您可以查看以下小提琴,以获得更好的视觉效果:

解决方案必须仅在CSS中,并且仅在两个 elem 元素中,因为用户可能没有设置父容器。

4 个答案:

答案 0 :(得分:2)

内联元素允许写入常规文本,因此,由于换行符,假设您在div元素之间添加了一个空格。这导致div元件之间的额外空间,这导致div元件不适合在同一条线上。我通常在元素之间添加注释以覆盖此行为,并作为提醒自己和其他可能查看代码的人。

<div class="elem1" style="height: 50px; background-color: black;"></div><!--
   This comment is added to prevent space in-between these elements.
--><div class="elem2" style="height: 50px; background-color: black;"></div>

答案 1 :(得分:1)

默认情况下,

display: inline-block;后面有一些空格。 要删除它,请使用font-size: 0作为.container

这是example

&#13;
&#13;
* {
  margin: 0;
  padding: 0;
}

.container {
  width: 75%;
  font-size: 0;
  border: 1px solid red;
  margin: 0 auto;
  position: relative;
  display: inline-block;
}

.elem1 {
  width: 47.5%;
  margin-right: 2.25%;
  display: inline-block;
}

.elem2 {
  width: 47.5%;
  margin-right: 2.25%;
  display: inline-block;
}
&#13;
<div class="container">
  <div class="elem1" style="height: 50px; background-color: black;"></div>
  <div class="elem2" style="height: 50px; background-color: black;"></div>
</div>
&#13;
&#13;
&#13;

Here是一篇关于文本行之间空格的精彩文章。

答案 2 :(得分:1)

如果您有浏览器支持,则可以将display: flex添加到包含元素。在此示例中,我将其放在body

body {
  display: flex;
}

.elem1 {
  width: 47.5%;
  margin-right: 2.5%;
  display: inline-block;
}

.elem2 {
  width: 47.5%;
  margin-right: 2.5%;
  display: inline-block;
}
<div class="elem1" style="height: 50px; background-color: black;"></div>
<div class="elem2" style="height: 50px; background-color: black;"></div>

它也适用于你的第三个例子。我将display: flex添加到.container

* {
  margin: 0;
  padding: 0;
}

.container {
  width: 75%;
  border: 1px solid red;
  margin: 0 auto;
  position: relative;
  display: flex;
}

.elem1 {
  width: 47.5%;
  margin-right: 2.25%;
  display: inline-block;
}

.elem2 {
  width: 47.5%;
  margin-right: 2.25%;
  display: inline-block;
}
<div class="container">
  <div class="elem1" style="height: 50px; background-color: black;"></div>
  <div class="elem2" style="height: 50px; background-color: black;"></div>
</div>

答案 3 :(得分:0)

经过一些研究后,我最终赞成使用负利润率,因为目前它是最受支持的方式与其他优秀的,有效的解决方案相反( font-size: 0; display: flex )。

为了使其成功,我添加了以下内容:

.elem2 {
    margin-left: calc(2.5% - 4px);
}