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

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

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


当前回答

假设我们有以下div:

<div id="triangle" />

现在逐步编辑CSS,这样您就可以清楚地了解周围发生了什么

步骤1:JSfiddle链接:

 #triangle {
        background: purple;
        width :150px;
        height:150PX;
        border-left: 50px solid black ;
        border-right: 50px solid black;
        border-bottom: 50px solid black;
        border-top: 50px solid black;
    }

这是一个简单的div,带有非常简单的CSS。所以外行人可以理解。Div的尺寸为150 x 150像素,边框为50像素。图像附于:

步骤2:JSfiddle链接:

#triangle {
    background: purple;
    width :150px;
    height:150PX;
    border-left: 50px solid yellow ;
    border-right: 50px solid green;
    border-bottom: 50px solid red;
    border-top: 50px solid blue;
}

现在我刚刚更改了所有4个边的边框颜色。图像已附加。

步骤:3 JSfiddle链接:

#triangle {
    background: purple;
    width :0;
    height:0;
    border-left: 50px solid yellow ;
    border-right: 50px solid green;
    border-bottom: 50px solid red;
    border-top: 50px solid blue;
}

现在我刚刚将div的高度和宽度从150像素更改为零。图像已附加

第4步:JSfiddle:

#triangle {
    background: purple;
    width :0px;
    height:0px;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-bottom: 50px solid red;
    border-top: 50px solid transparent;
}

现在,我已经使所有边界都透明,除了底部边界。图像附在下面。

第5步:JSfiddle链接:

#triangle {
    background: white;
    width :0px;
    height:0px;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-bottom: 50px solid red;
    border-top: 50px solid transparent;
}

现在我把背景色改成了白色。图像已附加。

因此,我们得到了所需的三角形。

其他回答

考虑下面的三角形

.triangle {
    border-bottom:15px solid #000;
    border-left:10px solid transparent;
    border-right:10px solid transparent;
    width:0;
    height:0;
}

这是我们得到的:

为什么会变成这样?下图解释了尺寸,注意底部边框使用了15px,左侧和右侧使用了10px。

通过删除右边框,可以很容易地创建直角三角形。

假设我们有以下div:

<div id="triangle" />

现在逐步编辑CSS,这样您就可以清楚地了解周围发生了什么

步骤1:JSfiddle链接:

 #triangle {
        background: purple;
        width :150px;
        height:150PX;
        border-left: 50px solid black ;
        border-right: 50px solid black;
        border-bottom: 50px solid black;
        border-top: 50px solid black;
    }

这是一个简单的div,带有非常简单的CSS。所以外行人可以理解。Div的尺寸为150 x 150像素,边框为50像素。图像附于:

步骤2:JSfiddle链接:

#triangle {
    background: purple;
    width :150px;
    height:150PX;
    border-left: 50px solid yellow ;
    border-right: 50px solid green;
    border-bottom: 50px solid red;
    border-top: 50px solid blue;
}

现在我刚刚更改了所有4个边的边框颜色。图像已附加。

步骤:3 JSfiddle链接:

#triangle {
    background: purple;
    width :0;
    height:0;
    border-left: 50px solid yellow ;
    border-right: 50px solid green;
    border-bottom: 50px solid red;
    border-top: 50px solid blue;
}

现在我刚刚将div的高度和宽度从150像素更改为零。图像已附加

第4步:JSfiddle:

#triangle {
    background: purple;
    width :0px;
    height:0px;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-bottom: 50px solid red;
    border-top: 50px solid transparent;
}

现在,我已经使所有边界都透明,除了底部边界。图像附在下面。

第5步:JSfiddle链接:

#triangle {
    background: white;
    width :0px;
    height:0px;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-bottom: 50px solid red;
    border-top: 50px solid transparent;
}

现在我把背景色改成了白色。图像已附加。

因此,我们得到了所需的三角形。

好的,这个三角形将被创建,因为元素的边框在HTML和CSS中一起工作的方式。。。

由于我们通常使用1或2px边框,我们从未注意到边框以相同的宽度彼此成45°角,如果宽度发生变化,角度也会发生变化,请运行我在下面创建的CSS代码:

.三角形{宽度:100px;高度:100px;左边框:50px实心黑色;右边框:50px实心黑色;边框底部:100px纯红色;}<div class=“triangle”></div>

然后在下一步中,我们没有任何宽度或高度,如下所示:

.三角形{宽度:0;高度:0;左边框:50px实心黑色;右边框:50px实心黑色;边框底部:100px纯红色;}<div class=“triangle”></div>

现在,我们使左边界和右边界不可见,以使理想的三角形如下所示:

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

如果您不愿意运行代码片段来查看步骤,我创建了一个图像序列,以查看一个图像中的所有步骤:

试试看:-

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

在阅读了这里的其他答案后,我发现对于CSS三角形的工作方式有很多很好的解释。我认为这是一种技巧,而不是一种可以通用的技巧。

为了便于阅读和维护,我建议您在SVG中定义几何图形。

然后,可以通过添加data:image/SVG+xml,前缀,使用data-uri转换SVG。作为一个数据uri,它现在可以用作CSS中的背景图像。因为SVG是纯文本的,所以您可以很容易地对几何图形、笔划和填充颜色进行更新。

第三节{宽度:100px;高度:100px;显示:内联块;背景图像:url('data:image/svg+xml,<svg xmlns=“http://www.w3.org/2000/svg“viewBox=”0 0 32 32“><path fill=”red“d=”M31.345 29H1.655L16.5 1.96z“/></svg>');}<div><div class=“tri”></div><div class=“tri”></div><div class=“tri”></div></div>