CSS技巧-CSS的形状有很多不同的CSS形状,我特别困惑于三角形:

#三角形向上{宽度:0;高度:0;左边框:50px实心透明;右边框:50px实心透明;边框底部:100px纯红色;}<div id=“triangle up”></div>

它是如何以及为什么工作的?


当前回答

从基本的正方形和边框开始。每个边框将被赋予不同的颜色,以便我们可以区分它们:

.三角形{边框颜色:黄-蓝-红-绿;边框样式:实心;边框宽度:200px 200px 200px 200px;高度:0px;宽度:0px;}<div class=“triangle”></div>

这为您提供了:

但不需要顶部边框,因此将其宽度设置为0px。现在,200px的边框底部将使我们的三角形变高200px。

.三角形{边框颜色:黄-蓝-红-绿;边框样式:实心;边框宽度:0px 200px 200px;高度:0px;宽度:0px;}<div class=“triangle”></div>

我们将得到:

然后,要隐藏两个边三角形,请将边框颜色设置为透明。由于顶部边框已被有效删除,因此我们也可以将边框顶部颜色设置为透明。

.三角形{边框颜色:透明透明红色透明;边框样式:实心;边框宽度:0px 200px 200px;高度:0px;宽度:0px;}<div class=“triangle”></div>

最后我们得到了:

其他回答

CSS三角:五幕悲剧

正如亚历克斯所说,等宽的边界以45度角相互对接:

如果没有上边框,则如下所示:

然后你给它0的宽度。。。

…高度为0。。。

…最后,使两个侧边透明:

这就形成了一个三角形。

边框在相交处使用有角度的边(与等宽边框成45°角,但更改边框宽度可能会扭曲角度)。

第二部分{宽度:60px;边框宽度:30px;边框颜色:红蓝绿黄;边框样式:实心;}<div></div>

看看jsFiddle。

通过隐藏某些边界,您可以获得三角形效果(正如您在上面看到的,通过使不同部分的颜色不同)。透明经常被用作边缘颜色以获得三角形形状。

我知道这是一个旧的方法,但我想在讨论中补充一点,单独使用HTML和CSS创建三角形至少有5种不同的方法。

使用边框使用线性梯度使用圆锥梯度使用转换和溢出使用剪辑路径

我认为,除了方法3(使用圆锥曲线梯度)之外,这里已经介绍了所有内容,所以我将在这里分享:

.三角形{宽度:40px;高度:40px;背景:圆锥形梯度(50%50%,透明135度,绿色0,绿色225度,透明0);}<div class=“triangle”></div>

SASS(SCSS)三角形混合

我写这篇文章是为了让自动生成CSS三角形变得更容易(也更干燥):

// Triangle helper mixin (by Yair Even-Or)
// @param {Direction} $direction - either `top`, `right`, `bottom` or `left`
// @param {Color} $color [currentcolor] - Triangle color
// @param {Length} $size [1em] - Triangle size
@mixin triangle($direction, $color: currentcolor, $size: 1em) {
  $size: $size/2;
  $transparent: rgba($color, 0);
  $opposite: (top:bottom, right:left, left:right, bottom:top);

  content: '';
  display: inline-block;
  width: 0;
  height: 0;
  border: $size solid $transparent;
  border-#{map-get($opposite, $direction)}-color: $color;
  margin-#{$direction}: -$size;
}

用例示例:

span {
  @include triangle(bottom, red, 10px);
}

游乐场页面


重要提示:如果三角形在某些浏览器中显示为像素化,请尝试此处描述的方法之一。

从基本的正方形和边框开始。每个边框将被赋予不同的颜色,以便我们可以区分它们:

.三角形{边框颜色:黄-蓝-红-绿;边框样式:实心;边框宽度:200px 200px 200px 200px;高度:0px;宽度:0px;}<div class=“triangle”></div>

这为您提供了:

但不需要顶部边框,因此将其宽度设置为0px。现在,200px的边框底部将使我们的三角形变高200px。

.三角形{边框颜色:黄-蓝-红-绿;边框样式:实心;边框宽度:0px 200px 200px;高度:0px;宽度:0px;}<div class=“triangle”></div>

我们将得到:

然后,要隐藏两个边三角形,请将边框颜色设置为透明。由于顶部边框已被有效删除,因此我们也可以将边框顶部颜色设置为透明。

.三角形{边框颜色:透明透明红色透明;边框样式:实心;边框宽度:0px 200px 200px;高度:0px;宽度:0px;}<div class=“triangle”></div>

最后我们得到了: