前端实现渐变色填充的三角形

362508d5b17c467f4741e97f8a0f2ddc.png

实现效果:

d3819a880bede9f92f9385cd1d5414bb.png

一、canvas实现

1、绘制三角形

 
 
// html
<canvas id="triangle" width="30" height="30">
       Your browser does not support the canvas element.
</canvas>


// JavaScript
    var triangle: any = document.getElementById("triangle");
    var ctx = triangle.getContext("2d"); // canvas 绘制区域
    ctx.beginPath(); // 开始绘制
    ctx.moveTo(0, 0); // 起点A(0,0)
    ctx.lineTo(30, 0); // 从起点A(0,0)绘制到B(30,0)
    ctx.lineTo(15, 16); // 从B(30,0)绘制到C(15,16)

2、设置渐变色并填充

 
 
// JavaScript
    const grd1 = ctx.createLinearGradient(0, 0, 0, 16); // 渐变方向-Y轴
    grd1.addColorStop(0, "#FFFFFF"); //起始颜色
    grd1.addColorStop(1, "#CE070A80"); //终点颜色
    ctx.fillStyle = grd1; //以上面定义的渐变填充
    ctx.fill(); //闭合形状并且以填充方式绘制出来

【拓展】上述代码实现一个渐变色三角形,如果想要绘制多个渐变色三角形,就需要多次进行「1,2」操作。

二、css实现

1、 绘制渐变色的矩形

 
 
// html
<div className="triangle"></div>


// css
.triangle {
  width: 30px;
  height: 16px;
  background-image: linear-gradient(#FFFFFF, #CE070A80);
}

2、绘制两个和背景色同色的三角形

 
 
// css
  .triangle:before {
    position: absolute;
    content: "";
    width: 0;
    height: 0;
    border-right: 15px solid transparent;
    border-bottom: 16px solid #FFFFFF;
  }


  .triangle:after {
    position: absolute;
    content: "";
    right: 0; // 使绘制的三角形位于矩形右侧
    width: 0;
    height: 0;
    border-left: 15px solid transparent;
    border-bottom: 16px solid #FFFFFF;
  }

【缺点】这种方式不能实现效果二,对于效果一不允许背景色带有透明度,实现效果有一定的局限性。

总结

对于简单的效果,建议使用方法二,如果要实现较为复杂的效果,可以使用方法一或者直接用图片替代(这种方式最简单直接)。

学习更多技能

请点击下方公众号

1695e0e42ab9a860b4d8483b6b4db43a.gif

ad041954a1387cbaa808d1b3a94eff2c.png

a7bd7ead676e75380de843d00431b137.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值