.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)
它从何而来?如何在没有负边距的情况下摆脱它(因为在某些屏幕上它们可能重叠).
对此有很多解决方案
解决方案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)
其他答案提供了解决方案,但不是为什么会发生这种情况:
Some given funny joke
-----^---------^-^
Run Code Online (Sandbox Code Playgroud)
在那个字符串中我标记了三个字符.这三个人都有所谓的"下行者 " (例如:G下的循环,Y和J下的腿).
声明某些内容时inline-block,它会获取两者block和inline元素的属性.内联元素通常是文本(例如a或者span),因此具有下伸,因此您的div具有下伸的空间.
这就是设置成功line-height:0; font-size:0;的原因.
: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)