如何利用纯css画出一个三个角都是圆角的三角形?

想要生成一个带圆角的三角形,代码量最少、最好的方式是使用 SVG 生成。使用 SVG 的 多边形标签 生成一个三边形,使用 SVG 的 stroke-linejoin="round" 生成连接处的圆角。代码量非常少,核心代码如下:实际图形如下:这里,其实是借助了 SVG 多边形的stroke-linejoin: round 属性生成的圆角,stroke-l...
如何利用纯css画出一个三个角都是圆角的三角形?
介绍几种实现带圆角的三角形的实现方式。
法一. 全兼容的 SVG 大法
想要生成一个带圆角的三角形,代码量最少、最好的方式是使用 SVG 生成。
使用 SVG 的 多边形标签 生成一个三边形,使用 SVG 的 stroke-linejoin="round" 生成连接处的圆角。
代码量非常少,核心代码如下:
实际图形如下:
这里,其实是借助了 SVG 多边形的stroke-linejoin: round 属性生成的圆角,stroke-linejoin 是什么?它用来控制两条描边线段之间,有三个可选值:
我们实际是通过一个带边框,且边框连接类型为 stroke-linejoin: round 的多边形生成圆角三角形的。
如果,我们把底色和边框色区分开,实际是这样的:
通过 stroke-width 控制圆角大小
那么如何控制圆角大小呢?也非常简单,通过控制stroke-width 的大小,可以改变圆角的大小。
当然,要保持三角形大小一致,在增大/缩小stroke-width 的同时,需要缩小/增大图形的 width/height:
完整的 DEMO 你可以戳这里: CodePen Demo -- 使用 SVG 实现带圆角的三角形
法二. 图形拼接
不过,上文提到了,使用纯 CSS 实现带圆角的三角形,但是上述第一个方法其实是借助了 SVG。那么仅仅使用 CSS,有没有办法呢?
当然,发散思维,CSS 有意思的地方正在于此处,用一个图形,能够有非常多种巧妙的解决方案!
我们看看,一个圆角三角形,它其实可以被拆分成几个部分:
所以,其实我们只需要能够画出一个这样的带圆角的菱形,通过 3 个进行旋转叠加,就能得到圆角三角形:
绘制带圆角的菱形
那么,接下来我们的目标就变成了绘制一个带圆角的菱形,方法有很多,本文给出其中一种方式:
至此,我们就顺利的得到一个带圆角的菱形了!
拼接 3 个带圆角的菱形
接下来就很简单了,我们只需要利用元素的另外两个伪元素,再生成 2 个带圆角的菱形,将一共 3 个图形旋转位移拼接起来即可!
完整的代码如下:
就可以得到一个圆角三角形了!效果如下:
完整的代码你可以戳这里: CodePen Demo -- A triangle with rounded
法三. 图形拼接实现渐变色圆角三角形
完了吗?没有!
上述方案,虽然不算太复杂,但是有一点还不算太完美的。就是无法支持渐变色的圆角三角形。像是这样:
如果需要实现渐变色圆角三角形,还是有点复杂的。但真就还有人鼓捣出来了,下述方法参考至 -- How to make 3-corner-rounded triangle in CSS。
同样也是利用了多块进行拼接,但是这次我们的基础图形,会非常的复杂。
首先,我们需要实现这样一个容器外框,和上述的方法比较类似,可以理解为是一个圆角菱形(画出 border 方便理解):
接着,我们同样使用两个伪元素,实现两个稍显怪异的图形进行拼接,算是对transform 的各种用法的合集:
为了方便理解,制作了一个简单的变换动画:
本质就是实现了这样一个图形:
最后,给父元素添加一个overflow: hidden 并且去掉父元素的 border 即可得到一个圆角三角形:
由于这两个元素重叠空间的特殊结构,此时,给两个伪元素添加同一个渐变色,会完美的叠加在一起:
最终得到一个渐变圆角三角形:
上述各个图形的完整代码,你可以戳这里: CodePen Demo -- A triangle with rounded and gradient background
最后
好了,希望对你有帮助 :)
想 Get 到最有意思的 CSS 资讯,千万不要错过我的公众号 --iCSS前端趣闻2024-09-03
mengvlog 阅读 13 次 更新于 2025-06-20 01:32:49 我来答关注问题0
  • 拼接 3 个带圆角的菱形 接下来就很简单了,我们只需要利用元素的另外两个伪元素,再生成 2 个带圆角的菱形,将一共 3 个图形旋转位移拼接起来即可!完整的代码如下:就可以得到一个圆角三角形了!效果如下:完整的代码你可以戳这里: CodePen Demo -- A triangle with rounded 法三. 图形拼接实现...

  • 利用CSS的border属性,可以将一个矩形分割为四个等腰三角形,通过调整border-width可以调整三角形的形状。将目标三角形作为原始矩形的1/4局部,计算所需变量,包括边长、坐标等,并设定最大角等前提条件,实现单个三角形的绘制。利用二维仿射变换,可以将一个矩形通过斜切调整为任意形状的平行四边形,进而调...

  •  翡希信息咨询 css怎么绘制一个三角形

    在CSS中绘制三角形,可以通过以下几种方法实现:使用border属性:设置一个元素的宽度和高度为0。设置其border属性,其中三个边的宽度设为0,一个边的宽度设为所需三角形的高度或宽度,并设置颜色。通过调整元素的旋转角度,可以创建不同方向的三角形。使用clippath属性:利用clippath裁剪元素。通过polygon函...

  • CSS中绘制三角形的方法多种多样,主要通过border、clip-path、伪元素以及SVG等技术实现。以下是具体的方法:1. border属性:使用`.triangle`类,设置三个边宽度为0,其中一个边为颜色,通过旋转创建三角形,如图所示。2. clip-path:`.triangle-clip`类利用clip-path裁剪元素,通过polygon函数定义顶点,...

  •  LeeXPer 为什么把一个div的css设置下面就可以画个三角形出来啊css高手入

    只是利用div边界形成的效果 你往div里面随便加点内容进去试试就知道了,如abc 也可以改改样式看看效果 com_a{ border-top:10px solid #FFFFCC;border-left:10px solid #FF3300;border-bottom:10px solid #FFFFCC;border-right:10px solid #FF3300;} ...

檬味博客在线解答立即免费咨询

CSS相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部