实现效果

效果一:

效果二:

实现思路

  • 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」操作。示例代码:

点击查看代码
    var bg: any = document.getElementById("triangle");
var ctx = bg.getContext("2d");
ctx.beginPath();
ctx.moveTo(0, 10);
ctx.lineTo(30, 10);
ctx.lineTo(15, 26);
const grd2 = ctx.createLinearGradient(0, 10, 0, 26);
grd2.addColorStop(0, "#FFFFFF"); //起始颜色
grd2.addColorStop(1, "#CE070A80"); //终点颜色
ctx.fillStyle = grd2; //以上面定义的渐变填充
ctx.fill(); //闭合形状并且以填充方式绘制出来 //填充三角形(等边)
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(30, 0);
ctx.lineTo(15, 16);
const grd1 = ctx.createLinearGradient(0, 0, 0, 16);
grd1.addColorStop(0, "#FFFFFF"); //起始颜色
grd1.addColorStop(1, "#CE070A80"); //终点颜色
ctx.fillStyle = grd1; //以上面定义的渐变填充
ctx.fill(); //闭合形状并且以填充方式绘制出来
  • 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;
}

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

总结

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

canvas 实现渐变色填充的三角形的更多相关文章

  1. 使用canvas绘制渐变色矩形和使用按键控制人物移动

    使用canvas绘制渐变色矩形和使用按键控制人物移动 1.使用canvas绘制渐变色矩形 效果演示 相关代码: <!DOCTYPE html> <html lang="en ...

  2. canvas快速绘制圆形、三角形、矩形、多边形

    想看前面整理的canvas常用API的同学可以点下面: canvas学习之API整理笔记(一) canvas学习之API整理笔记(二) 本系列文章涉及的所有代码都将上传至:项目代码github地址,喜 ...

  3. canvas放射性渐变填充

    今天在学习canvas时,遇到canvas的fillstyle有一个createRadialGradient()方法,创建放射性渐变. 上代码: <!DOCTYPE html> <h ...

  4. 小程序canvas绘制渐变色(简单入门)

    呀,曾经的我是那么的单纯,天真,粗略的翻了一遍小程序画布API,没有看见渐变色,就以为不支持渐变色 于是在项目中直接把原本的渐变色换成了单一颜色展示,发现很low啊 但是,自从上次小程序API文档更新 ...

  5. html5 canvas用图案填充形状

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. html5 canvas 多个填充渐变形状

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. HTML5 Canvas渐进填充与透明

    详细解释HTML5 Canvas中渐进填充的参数设置与使用,Canvas中透明度的设置与使 用,结合渐进填充与透明度支持,实现图像的Mask效果. 一:渐进填充(Gradient Fill) Canv ...

  8. Windows游戏编程大师技巧之三角形填充

    一.三角形的种类 三角形一般可以分为如下的四种类型(这四种类型是对于计算机来说的,不是数学意义上的分类): 平顶三角形:就是在计算机中显示的上面两个顶点的Y坐标相同. 平底三角形:就是在计算机中显示的 ...

  9. Web前端学习笔记——Canvas

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

随机推荐

  1. 洛谷 P4931 - [MtOI2018]情侣?给我烧了!(加强版)(组合数学)

    洛谷题面传送门 A 了这道题+发这篇题解,就当过了这个七夕节吧 奇怪的过节方式又增加了 首先看到此题第一眼我们可以想到二项式反演,不过这个 \(T\) 组数据加上 \(5\times 10^6\) 的 ...

  2. PowerDotNet平台化软件架构设计与实现系列(05):ETCD分布式键值存储平台

    ETCD目前在PowerDotNet已经被用于注册中心和配置管理(常见的配置中心在PowerDotNet中仅仅是一个小小的模块而已)中,作为基础设施的重要组成部分,ETCD的重要性不言而喻. 本文简单 ...

  3. Python基础之数字类型内置方法

    目录 1. 整型内置方法(int) 2. 浮点型内置方法 3. 常用操作 1. 整型内置方法(int) 用途:年龄,号码,等级等 定义: age = 18 常用操作 # 算数运算.比较运算 age = ...

  4. Docker环境中部署Prometheus及node-exporter监控主机资源

    前提条件 已部署docker 已部署grafana 需要开放 3000 9100 和 9090 端口 启动node-exporter docker run --name node-exporter - ...

  5. C#序号

    OnRowCreated="gridViewCorrection_RowCreated" <asp:BoundField HeaderText="序号" ...

  6. Running shell commands by C++

    #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; st ...

  7. Java文件操作(求各专业第一名的学生)

    两个文件:info.txt 存放学生基本信息 学号 学院 专业 姓名 1001 计算机学院 软件工程 刘月 1002 生物工程 服装设计 孙丽 score.txt存放分数信息 学号 学科 成绩 100 ...

  8. ORACLE 数据块PCTFREE和PCTUSED

    PCTFREE表示一个数据块可用空间小于PCTFREE时,该数据块不在被记录在FREELIST中,即不能插入新数据. PCTUSED表示一个数据块已经用空间如果小于PCTUSED时,该数据块才会被重新 ...

  9. oracle to_char处理日期

    select to_char(sysdate,'d') from dual;--本周第几天 select to_char(sysdate,'dd') from dual;--本月第几天 select ...

  10. PhoneGap本地将html打包成安卓App

    PhoneGap的在线打包有大小限制,超过30M的包无法在线打包.当然,可以把包里面的图片.声音文件去掉,然后打包.下载以后,解包,重新打包并签名.蛮麻烦的. 本地打包的简单方法如下: 下载安装Jav ...