利用CSS绘制三角形的6种技巧(分享)


本文摘自PHP中文网,作者青灯夜游,侵删。

本篇文章给大家介绍一下利用CSS绘制三角形的N种技巧。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

在一些面经中,经常能看到有关 CSS 的题目都会有一道如何使用 CSS 绘制三角形,而经常的回答通常也只有使用 border 进行绘制一种方法。

而 CSS 发展到今天,其实有很多有意思的仅仅使用 CSS 就能绘制出来的三角形的方式,本文将具体罗列讲讲。

通过本文,你能了解到 6 种使用 CSS 绘制三角形的方式,并且它们都非常好掌握。当然本文仅是抛砖引玉,CSS 日新月异,可能还有一些有意思的方法本文遗漏了,欢迎大家在留言区补充~

使用 border 绘制三角形

使用 border 实现三角形应该是大部分人都掌握的,也是各种面经中经常出现的,利用了高宽为零的容器及透明的 border 实现。

简单的代码如下:

1

2

3

4

5

6

div {

  border-top: 50px solid yellowgreen;

  border-bottom: 50px solid deeppink;

  border-left: 50px solid bisque;

  border-right: 50px solid chocolate;

}

高宽为零的容器,设置不同颜色的 border:

1.png

这样,让任何三边的边框的颜色为 transparent,则非常容易得到各种角度的三角形:

2.png

CodePen Demo - 使用 border 实现三角形

https://codepen.io/Chokcoco/pen/GqrVpB

使用 linear-gradient 绘制三角形

接着,我们使用线性渐变 linear-gradient 实现三角形。

它的原理也非常简单,我们实现一个 45° 的渐变:

1

2

3

4

5

div {

  width: 100px;

  height: 100px;

  background: linear-gradient(45deg, deeppink, yellowgreen);

}

3.png

让它的颜色从渐变色变为两种固定的颜色:

1

2

3

4

5

div {

  width: 100px;

  height: 100px;

  background: linear-gradient(45deg, deeppink, deeppink 50%, yellowgreen 50%, yellowgreen 100%);

}

4.png

再让其中一个颜色透明即可:

1

2

3

div {

  background: linear-gradient(45deg, deeppink, deeppink 50%, transparent 50%, transparent 100%);

}

5.png

通过旋转 rotate 或者 scale,我们也能得到各种角度,不同大小的三角形,完整的 Demo 可以戳这里:

CodePen Demo - 使用线性渐变实现三角形

https://codepen.io/Chokcoco/pen/RwKKOZw

使用 conic-gradient 绘制三角形

还是渐变,上述我们使用了线性渐变实现三角形,有意思的是,在渐变家族中,角向渐变 conic-gradient 也可以用于实现三角形。

方法在于,角向渐变的圆心点是可以设置的,类似于径向渐变的圆心点也可以被设置。

我们将角向渐变的圆心点设置于 50% 0,也就是 center top,容器最上方的中间,再进行角向渐变,渐变到一定的角度范围内,都是三角形图形。

假设我们有一个 200px x 100px 高宽的容器,设置其角向渐变圆心点为 50% 0

6.png

并且,设置它从 90° 开始画角向渐变图,示意图如下:

7.gif

可以看到,在初始的时候,角向渐变图形没有到第二条边的之前,都是三角形,我们选取适合的角度,非常容易的可以得到一个三角形:

1

2

3

div {

    background: conic-gradient(from 90deg at 50% 0, deeppink 0, deeppink 45deg, transparent 45.1deg);

}

8.png

上述代码中的 deeppink 45deg, transparent 45.1deg 多出来的 0.1deg 是为了简单消除渐变产生的锯齿的影响,这样,我们通过 conic-gradient,也轻松的得到了一个三角形。

同理,再配合旋转 rotate 或者 scale,我们也能得到各种角度,不同大小的三角形,完整的 Demo 可以戳这里:

CodePen Demo - 使用角向渐变实现三角形

https://codepen.io/Chokcoco/pen/qBRRZJr

transform: rotate 配合 overflow: hidden 绘制三角形

这种方法还是比较常规的,使用 transform: rotate 配合 overflow: hidden。一看就懂,一学就会,简单的动画示意图如下:

9.gif

设置图形的旋转中心在左下角 left bottom,进行旋转,配合 overflow: hidden

阅读剩余部分

相关阅读 >>

css怎么设置超出自动换行

css圆角属性是什么

css border-top-color属性怎么用

利用css实现一个简单的对号效果

css行内样式为什么尽量不要使用

vue的css动画

css如何设置table边框的颜色

如何使用css实现背景图像透明

css如何使文字垂直对齐

css设置不了中文字体怎么办

更多相关阅读请进入《css》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...