【问题标题】:keep space between div's保持div之间的空间
【发布时间】:2017-08-21 19:20:24
【问题描述】:

我想显示一个 html div,其中包含一个带有圆圈(绿色或红色)的状态描述。这个圆圈在描述的右上角显示了 enigne 的状态。

我的问题如下。如果窗口大小发生变化(变小),说明和“状态圈”相互重叠。

如何防止这种情况发生? 你知道css-code应该是怎样的吗?

结构主要是这样的:

.statusdiv{
    height: 40px;

}
.statusbeschreibung{

    position: absolute;
    margin-left: 40%;
}
.statuskreis {
    position: absolute;
    width: 25px;
    height: 25px;
    top: 13px;
    /*left: 190px;*/
    margin-left: 60%;
    border: 1px solid black;
    text-align: center;
    border-radius: 12.5px;
}

.status-on{
    background-color: green;
}
.status-off{
    background-color: red;
}
 <div class="list-block">
                    <ul>
                        <li>
                            <div class="statusdiv">
                                <p class="statusbeschreibung">Motorstatus</p>
                                <div name="motorstatus" id="motorstatus" class="item-link statuskreis status-off"></div>
                            </div>
                        </li>
</div>

【问题讨论】:

  • 你尝试过任何 CSS 吗?你能分享那个代码吗?
  • 请发布代码而不是图片,并告诉我们您到目前为止所做的尝试。
  • 代码已上传。我刚来这地方。不知道怎么写代码。
  • 试图给两个内部 div 一个固定或绝对的位置,试图给它们边距并试图把它们放在一个网格中
  • 我已在您的答案中添加了一个 sn-p,请对其进行编辑以重现您的问题。

标签: html css elements


【解决方案1】:

这是基于您的代码的原始屏幕截图图像:基本上您应该使用 display:inline-block 而不是 position:absolute 以防止您的项目符号与您的文本重叠,然后在项目符号上使用左边距,以便它始终它和文本之间有足够的空间。

.list-block ul {
  padding: 0;
  margin: 0;
}

.list-block li {
  list-style: none;
}

.statusdiv {
  white-space: nowrap;
}
.statusbeschreibung {
  margin-left: 40%;
  display: inline-block;
  vertical-align: middle;
}
.statuskreis {
  width: 25px;
  height: 25px;
  margin-left: 10px;
  border: 1px solid black;
  text-align: center;
  border-radius: 12.5px;
  display: inline-block;
  vertical-align: middle;
}
.status-on {
  background-color: green;
}
.status-off {
  background-color: red;
}
<div class="list-block">
  <ul>
    <li>
      <div class="statusdiv">
        <p class="statusbeschreibung">Motorstatus</p>
        <div name="motorstatus" id="motorstatus" class="item-link statuskreis status-off"></div>
      </div>
    </li>
    <li>
      <div class="statusdiv">
        <p class="statusbeschreibung">Motorstatus</p>
        <div name="motorstatus" id="motorstatus" class="item-link statuskreis status-on"></div>
      </div>
    </li>
  </ul>
</div>

【讨论】:

    【解决方案2】:

    如果我理解正确,您可以使用“motortatus”类设置圆圈的样式。

    尝试以百分比设置宽度和高度,而不是像素。这应该调整状态圈的大小并防止它与描述重叠,除了描述的字体根本不调整大小并填满整个 div。

    【讨论】:

    • 不用担心,否决票不是我的,但随着问题的形成,您可以编辑您的答案,为 Stack Overflow 的知识库提供有价值的版本,我相信给出这个答案的人大拇指向下,将恢复操作。
    • "尝试以百分比设置宽度和高度,而不是像素。" - 这是一个有效的答案
    【解决方案3】:

    我喜欢这类事情的内联列表,但您也可以在您选择的首选 css 框架中创建列。

    我已经对其进行了样式设置,因此两个列表项中的每一个都是 ul 容器宽度的 50%,但您可以根据需要调整它们。

    * {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    }
    
    .statusdiv {
      list-style: none;
      float: left;
      margin: 0;
      padding: 1em;
      width: 100%;
      color: #2d2d2d;
    }
    
    .statusdiv li {
    width: 50%;
    float: left;
    padding: 0 1em;
    }
    
    .statusdiv li:first-child {
    text-align: right;
    height: 35px;
    line-height: 35px;
    }
    
    .statusdiv li:last-child {
    text-align: left;
    }
    
    .circle {
    content: "";
    background-color: aqua;
    width: 35px;
    height: 35px;
    display: inline-block;
    -webkit-border-radius: 100%;
    -moz-border-radius: 100%;
    border-radius: 100%;
    }
    <!-- EDIT THIS SNIPPET -->
    <ul class="statusdiv">
      <li>
        Status thing:
      </li>
      <li><span class="circle"></span></li>
    </ul>

    【讨论】: