CSS Triangle +“After”实现

时间:2011-11-30 14:25:21

标签: css css3

我尝试使用CSS创建一个三角形并且它看起来不错,但是我现在在一个框之后实现它时遇到了问题。

看看我的例子,你会看到我的意思:

http://jsfiddle.net/TTVuS/

似乎.box之后的三角形被“切断”了,我完全不知道为什么会这样。

我希望它看起来像.arrow

我试图改变盒子的尺寸,三角形等但没有任何效果。

P.S。如果Jsfiddle很慢或不能再使用,这里是css:

.box{
    background:red;
    height:40px;
    width:100px;
}

/*the triangle but its being cut off*/
.box:after{
    content:"";
    width:0;
    height:0;
    border-top:20px solid transparent;
    border-bottom:20px solid transparent;
    border-left:20px solid green;
}

/*the triangle how it should look like*/
.arrow{
    width:0;
    height:0;
    border-top:20px solid transparent;
    border-bottom:20px solid transparent;
    border-left:20px solid green;
}

2 个答案:

答案 0 :(得分:27)

将三角形更改为position: absolute;并将position: relative;添加到.box会修复它。它似乎继承了盒子的高度。

答案 1 :(得分:4)

如果你想做this

在div类框中插入div类箭头可能是唯一的解决方案。

html{
    padding:50px
}

.box{
    position : relative;
    background:red;
    height:40px;
    width:100px;
    border : 0px;
}
/*
.box:after{
    position : relative;
    content:"";
    width:0;
    height:0;
    border-top:20px solid transparent;
    border-bottom:20px solid transparent;
    border-left:20px solid green;
}
*/
.arrow{
    width:0;
    height:0;
    border-top:20px solid transparent;
    border-bottom:20px solid transparent;
    border-left:20px solid green;
}
<div class="box">
    <div class="arrow">
    </div>
</div>

<br><br><br>

<div class="arrow">
</div>