我该如何在CSS中制作这个盒子?
我看过一些教如何创建带箭头的盒子的教程,但是,在我的情况下,这些教程都不适用。
我该如何在CSS中制作这个盒子?
我看过一些教如何创建带箭头的盒子的教程,但是,在我的情况下,这些教程都不适用。
<div>
元素,利用:before
和:after
伪元素(浏览器支持)来创建带有1像素边框的元素。主矩形具有常规的1像素边框,但三角形元素实际上是2个三角形,其中一个比另一个更暗。其中一个答案实际上有一个很好的解释,说明了如何实现这种三角形效果:
此外,这是一个关于边框的所有花式用法的优秀参考资料(感谢PSCoder):
... 这里有一个很棒的CSS生成器(感谢David Taiaroa):
#arrow {
width: 128px;
height: 100px;
background-color: #ccc;
border: 1px solid #999;
position: relative;
}
#arrow:after {
content: '';
position: absolute;
top: 0px;
left: 128px;
width: 0;
height: 0;
border: 50px solid transparent;
border-left: 12px solid #ccc;
}
#arrow:before {
content: '';
position: absolute;
top: 0px;
left: 129px;
width: 0;
height: 0;
border: 50px solid transparent;
border-left: 12px solid #999;
}
<div id="arrow"></div>
这里是我创建的解决方案。
有两种简单的方法来实现此功能。第一种效率较低的方法是使用2个元素。我利用了:after
伪元素。我对:after
使用了position:absolute
,原因有两个。
创建三角形的关键是使用border
属性。你有两个颜色设置为transparent
的边框。这两个边框与你想要前往的方向相反。所以,如果你想制作一个右三角形,则使用top
和bottom
。给箭头赋予形状的是最后一个边框。它也朝相反的方向。所以对于一个右三角形,你将使用具有颜色的border-left
。为了使其达到正确的高度,必须执行所需框的高度的一半。