两个内联块和块元素之间的垂直空间

kul*_*lan 9 html css

.rectangle {
    width: 420px;
    height: 143px;
    color: #fff;
    background: rgba(0, 0, 0, 0.7);
    padding: 20px 0px 20px 10px;
    position: relative;
    display: inline-block;
    vertical-align: top;
}

.triangle {
    width: 0;
    height: 0;
    border-top: 92px solid transparent;
    border-bottom: 92px solid transparent;
    border-left:45px solid rgba(0, 0, 0, 0.7);
    display: inline-block;
}

.block {
  width: 200px;
  height: 80px;
  background: red;
}
Run Code Online (Sandbox Code Playgroud)
<div class="rectangle"></div><!--
--><div class="triangle"></div>
<div class="block"></div>
Run Code Online (Sandbox Code Playgroud)

它从何而来?如何在没有负边距的情况下摆脱它(因为在某些屏幕上它们可能重叠).

Roh*_*zad 7

对此有很多解决方案

解决方案0:元素之间没有空格

<ul><li>Item content</li><li>Item content</li><li>Item content</li></ul>
Run Code Online (Sandbox Code Playgroud)

解决方案1:父级上的font-size:0

.inline-block-list { /* ul or ol with this class */
    font-size: 0;
}

.inline-block-list li {
    font-size: 14px; /* put the font-size back */
}
Run Code Online (Sandbox Code Playgroud)

解决方案2:HTML评论

<ul>
    <li>Item content</li><!--
 --><li>Item content</li><!--
 --><li>Item content</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

解决方案3:负保证金

.inline-block-list li {
    margin-left: -4px;
}
Run Code Online (Sandbox Code Playgroud)

解决方案4:降低闭合角度

<ul>
    <li>Item content</li
 ><li>Item content</li
 ><li>Item content</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

更多关于这个


Mar*_*ijn 7

其他答案提供了解决方案,但不是为什么会发生这种情况:

Some given funny joke
-----^---------^-^
Run Code Online (Sandbox Code Playgroud)

在那个字符串中我标记了三个字符.这三个人都有所谓的"下行者 " (例如:G下的循环,Y和J下的腿).
声明某些内容时inline-block,它会获取两者blockinline元素的属性.内联元素通常是文本(例如a或者span),因此具有下伸,因此您的div具有下伸的空间.

就是设置成功line-height:0; font-size:0;原因.


Pug*_*azh 5

:after在这种情况下,您可以使用CSS伪元素.

检查以下示例:

.rectangle {
  width: 420px;
  height: 143px;
  color: #fff;
  background: rgba(0, 0, 0, 0.7);
  padding: 20px 0px 20px 10px;
  position: relative;
  vertical-align: top;
}
.rectangle:after {
  top: 0;
  left: 100%;
  content: "";
  position: absolute;
  width: 0;
  height: 0;
  border-top: 92px solid transparent;
  border-bottom: 92px solid transparent;
  border-left: 45px solid rgba(0, 0, 0, 0.7);
}
.block {
  width: 200px;
  height: 80px;
  background: red;
}
Run Code Online (Sandbox Code Playgroud)
<div class="rectangle"></div>
<div class="block"></div>
Run Code Online (Sandbox Code Playgroud)