【问题标题】:Why is there a vertical gap between these divs?为什么这些 div 之间存在垂直间隙?
【发布时间】:2016-05-18 12:04:54
【问题描述】:

由于某种原因,在 Chrome 上,我在“top”和“bod”之间有一条“石灰”色的 1px 线。当我删除 overflow css 指令时,该行消失了。

我只能在 Chrome 中看到“lime”行,而在 Firefox 中看不到。

这里是代码:https://jsfiddle.net/m36yk1o9/5/

#chatApplicationClassic {
  padding: 0;
  margin: 0;
  border: 0;
  position: fixed;
  bottom: 0px;
  right: 30px;
  width: 300px;
  background-color: lime;
  box-sizing: border-box;
  border-radius: 5px 5px 0 0;
  box-shadow: 0px 0px 5px #000000;
}

#chatHeaderClassic {
  padding: 0;
  margin: 0;
  border: 0;
  width: 100%;
  background-color: pink;
  cursor: pointer;
  border-radius: 5px 5px 0 0;
  border-top: 0px solid red;
  border-left: 0px solid red;
  border-right: 0px solid red;
  border-bottom: 0px solid red;
  box-sizing: border-box;
}

#chatHeaderTextClassic {
  padding: 0;
  margin: 0;
  border: 0;
  color: #ffff33;
  font-family: 'Open Sans', sans-serif;
  padding: 6px;
  font-size: 18px;
  font-weight: 100;
  display: inline-block;
  border-radius: 5px 5px 0 0;
}

#chatHeaderArrowClassic {
  padding: 0;
  margin: 0;
  border: 0;
  color: #9900ff;
  display: inline-block;
  float: right;
  padding: 6px;
  font-size: 18px;
}

#chatBodyClassic {
  padding: 0;
  margin: 0;
  border: 0;
  background-color: white;
  border-left: 5px solid pink;
  border-right: 5px solid pink;
  height: 200px;
  width: 100%;
  box-sizing: border-box;
  padding-top: 10px;
  overflow: scroll;
}

.chatAgentBubbleClassic {
  padding: 0;
  margin: 0;
  border: 0;
  background-color: #664eff;
  margin-right: 40px;
  margin-top: 10px;
  box-sizing: border-box;
  border-radius: 4px;
}

.chatVisitorBubbleClassic {
  padding: 0;
  margin: 0;
  border: 0;
  background-color: #6600ff;
  margin-left: 40px;
  margin-top: 10px;
  box-sizing: border-box;
  border-radius: 4px;
}

.chatAgentBubbleTextClassic {
  font-size: 12px;
  padding: 8px;
  font-family: sans-serif;
  color: lightblue;
}

.chatVisitorBubbleTextClassic {
  font-size: 12px;
  padding: 6px;
  font-family: sans-serif;
  color: skyblue;
}
<div id="chatApplicationClassic">
  <div id="chatHeaderClassic">
    <div id="chatHeaderArrowClassic">
      Arr
    </div>
    <div id="chatHeaderTextClassic">
      Top
    </div>
  </div>
  <div id="chatBodyClassic">
    bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br /> bod
    <br />
  </div>
  <!--
	<div id="chatFooterClassic">
		<div id="chatInputContainerClassic">
			<input placeholder="type here..." id="chatInputClassic" type="text" /> 
		</div>
		<div id="chatSendButton">
			<div id="chatSendButtonText">Send</div>
		</div>
	</div>-->
</div>

【问题讨论】:

  • 在 chrome 上查看,在小提琴中看不到问题。
  • 我添加了一张图片。我在 macbook air 上使用 Chrome 48

标签: css google-chrome overflow margin


【解决方案1】:

将内边距从 6px 更改为 5px:

#chatHeaderArrowClassic {
                padding:0;
                margin:0;
                border:0;
                color:#9900ff;
                display:inline-block;
                float:right;
                padding:5px;
                font-size:18px;
            }

【讨论】:

    【解决方案2】:

    嗨,

    看起来父元素的背景颜色是石灰,如果你隐藏 #chatHeaderClassic 背景颜色,它会显示出来。证明:

    #chatApplicationClassic {
    padding: 0;
    margin: 0;
    border: 0;
    position: fixed;
    bottom: 0px;
    right: 30px;
    width: 300px;
    background-color: lime;
    box-sizing: border-box;
    border-radius: 5px 5px 0 0;
    box-shadow: 0px 0px 5px #000000;
    

    }

    所以只需将上面的代码更改为:

    #chatApplicationClassic {
    padding: 0;
    margin: 0;
    border: 0;
    position: fixed;
    bottom: 0px;
    right: 30px;
    width: 300px;
    background-color: pink;
    box-sizing: border-box;
    border-radius: 5px 5px 0 0;
    box-shadow: 0px 0px 5px #000000;
    

    }

    希望这会有所帮助。 问候

    【讨论】:

    • 嗨 Jannik,感谢您的评论,但我这样设置颜色只是为了说明差距
    【解决方案3】:

    它可能来自标题中的两个子元素。 padding 使其中一个盒子比容器高,在那里设置 float 它会导致溢出,因为你没有在那里设置任何 clearfix。

    但是由于您在“Top”上设置了float:right,只需在“Arr”上设置float:left,并通过在容器上添加overflow:hidden 来清除浮动。那条细细的石灰线将被移除。

    Updated jsFiddle

    #chatApplicationClassic {
      padding: 0;
      margin: 0;
      border: 0;
      position: fixed;
      bottom: 0px;
      right: 30px;
      width: 300px;
      background-color: lime;
      box-sizing: border-box;
      border-radius: 5px 5px 0 0;
      box-shadow: 0px 0px 5px #000000;
    }
    
    #chatHeaderClassic {
      padding: 0;
      margin: 0;
      border: 0;
      width: 100%;
      background-color: pink;
      cursor: pointer;
      border-radius: 5px 5px 0 0;
      border-top: 0px solid red;
      border-left: 0px solid red;
      border-right: 0px solid red;
      border-bottom: 0px solid red;
      box-sizing: border-box;
      overflow: hidden; /*added*/
    }
    
    #chatHeaderTextClassic {
      padding: 0;
      margin: 0;
      border: 0;
      color: #ffff33;
      font-family: 'Open Sans', sans-serif;
      padding: 6px;
      font-size: 18px;
      font-weight: 100;
      /* display: inline-block; */
      border-radius: 5px 5px 0 0;
      float: left; /*added*/
    }
    
    #chatHeaderArrowClassic {
      padding: 0;
      margin: 0;
      border: 0;
      color: #9900ff;
      /* display: inline-block; */
      float: right;
      padding: 6px;
      font-size: 18px;
    }
    
    #chatBodyClassic {
      padding: 0;
      margin: 0;
      border: 0;
      background-color: white;
      border-left: 5px solid pink;
      border-right: 5px solid pink;
      height: 200px;
      width: 100%;
      box-sizing: border-box;
      padding-top: 10px;
      overflow: scroll;
    }
    
    .chatAgentBubbleClassic {
      padding: 0;
      margin: 0;
      border: 0;
      background-color: #664eff;
      margin-right: 40px;
      margin-top: 10px;
      box-sizing: border-box;
      border-radius: 4px;
    }
    
    .chatVisitorBubbleClassic {
      padding: 0;
      margin: 0;
      border: 0;
      background-color: #6600ff;
      margin-left: 40px;
      margin-top: 10px;
      box-sizing: border-box;
      border-radius: 4px;
    }
    
    .chatAgentBubbleTextClassic {
      font-size: 12px;
      padding: 8px;
      font-family: sans-serif;
      color: lightblue;
    }
    
    .chatVisitorBubbleTextClassic {
      font-size: 12px;
      padding: 6px;
      font-family: sans-serif;
      color: skyblue;
    }
    <div id="chatApplicationClassic">
      <div id="chatHeaderClassic">
        <div id="chatHeaderArrowClassic">
          Arr
        </div>
        <div id="chatHeaderTextClassic">
          Top
        </div>
      </div>
      <div id="chatBodyClassic">
        bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br /> bod
        <br />
      </div>
      <!--
    	<div id="chatFooterClassic">
    		<div id="chatInputContainerClassic">
    			<input placeholder="type here..." id="chatInputClassic" type="text" /> 
    		</div>
    		<div id="chatSendButton">
    			<div id="chatSendButtonText">Send</div>
    		</div>
    	</div>-->
    </div>

    【讨论】: