Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

HTML Canvas 渐变


HTML Canvas 渐变

渐变允许你在两个或多个指定颜色之间显示平滑过渡。

渐变可用于填充矩形、圆形、线条、文本等。

创建渐变有两种方法:

  • createLinearGradient() - 创建线性渐变
  • createRadialGradient() - 创建径向/圆形渐变

createLinearGradient() 方法

createLinearGradient() 方法用于定义线性渐变。

线性渐变沿着线性图案(水平/垂直/对角线)改变颜色。

createLinearGradient() 方法具有以下参数:

参数 描述
x0 必需。起始点的 x 坐标
y0 必需。起始点的 y 坐标
x1 必需。结束点的 x 坐标
y1 必需。结束点的 y 坐标

渐变对象需要两个或多个颜色停止点。

addColorStop() 方法指定颜色停止点及其在渐变中的位置。位置可以在 0 到 1 之间的任何位置。

要使用渐变,将其分配给 fillStyle strokeStyle 属性,然后绘制形状(矩形、圆形、形状或文本)。

示例

创建一个具有两个颜色停止点的线性渐变;在渐变的起始点为浅蓝色,在渐变的结束点为深蓝色。然后,用渐变填充矩形

您的浏览器不支持 HTML5 canvas 标签。
<script>
const c = document.getElementById("myCanvas");
const ctx = c.getContext("2d");

// 创建线性渐变
const grad=ctx.createLinearGradient(0,0, 280,0);
grad.addColorStop(0, "lightblue");
grad.addColorStop(1, "darkblue");

// 用渐变填充矩形
ctx.fillStyle = grad;
ctx.fillRect(10,10, 280,130);
</script>
试试看 »

示例

这里我们用渐变填充一个带边框的矩形

您的浏览器不支持 HTML5 canvas 标签。
<script>
const c = document.getElementById("myCanvas");
const ctx = c.getContext("2d");

// 创建线性渐变
const grad=ctx.createLinearGradient(0,0, 280,0);
grad.addColorStop(0, "lightblue");
grad.addColorStop(1, "darkblue");

// 用渐变填充带边框的矩形
ctx.lineWidth = 10;
ctx.strokeStyle = grad;
ctx.strokeRect(10,10,280,130);
</script>
试试看 »


示例

创建一个具有三个颜色停止点的线性渐变,在渐变的起始点为浅蓝色,在渐变的中间点为紫色,在渐变的结束点为深蓝色。然后,用渐变填充矩形

您的浏览器不支持 HTML5 canvas 标签。
<script>
const c = document.getElementById("myCanvas");
const ctx = c.getContext("2d");

// 创建线性渐变
const grad=ctx.createLinearGradient(0,0, 280,0);
grad.addColorStop(0, "lightblue");
grad.addColorStop(0.5, "purple");
grad.addColorStop(1, "darkblue");

// 用渐变填充矩形
ctx.fillStyle = grad;
ctx.fillRect(10,10, 280,130);
</script>
试试看 »

垂直线性渐变

水平渐变从左到右,通过改变 x 轴上的参数(x1 和 x2)来创建。上面的示例都是水平线性渐变。

垂直渐变从上到下,通过改变 y 轴上的参数(y1 和 y2)来创建。

示例

通过改变 y 轴上的参数值(更改 y2)来创建一个垂直线性渐变

您的浏览器不支持 HTML5 canvas 标签。
<script>
const c = document.getElementById("myCanvas");
const ctx = c.getContext("2d");

// 创建线性渐变
const grad=ctx.createLinearGradient(0,0, 0,130);
grad.addColorStop(0, "lightblue");
grad.addColorStop(1, "darkblue");

// 用渐变填充矩形
ctx.fillStyle = grad;
ctx.fillRect(10,10, 280,130);
</script>
试试看 »

对角线线性渐变

对角线渐变通过改变 x 和 y 轴上的参数来创建。

示例

通过改变 x 和 y 轴上的参数(更改 x2 和 y2)来创建一个对角线线性渐变

您的浏览器不支持 HTML5 canvas 标签。
<script>
const c = document.getElementById("myCanvas");
const ctx = c.getContext("2d");

// 创建线性渐变
const grad=ctx.createLinearGradient(0,0, 280,130);
grad.addColorStop(0, "lightblue");
grad.addColorStop(1, "darkblue");

// 用渐变填充矩形
ctx.fillStyle = grad;
ctx.fillRect(10,10, 280,130);
</script>
试试看 »

用渐变填充圆形

示例

这里我们用渐变填充一个圆形

您的浏览器不支持 HTML5 canvas 标签。
<script>
const c = document.getElementById("myCanvas");
const ctx = c.getContext("2d");

// 创建线性渐变
const grad=ctx.createLinearGradient(0,0,280,0);
grad.addColorStop(0, "lightblue");
grad.addColorStop(1, "darkblue");

// 用渐变填充圆形
ctx.beginPath();
ctx.arc(145, 75, 65, 0, 2 * Math.PI);
ctx.fillStyle = grad;
ctx.fill();
</script>
试试看 »

用渐变填充文本

示例

这里我们用渐变填充一个文本

您的浏览器不支持 HTML5 canvas 标签。
<script>
const c = document.getElementById("myCanvas");
const ctx = c.getContext("2d");

// 创建线性渐变
const grad=ctx.createLinearGradient(0,0,280,0);
grad.addColorStop(0, "lightblue");
grad.addColorStop(1, "darkblue");

// 用渐变填充文本
ctx.font = "50px Arial";
ctx.fillStyle = grad;
ctx.fillText("Hello World",10,80);
</script>
试试看 »

用渐变填充带边框的文本

示例

这里我们用渐变填充一个带边框的文本

您的浏览器不支持 HTML5 canvas 标签。
<script>
const c = document.getElementById("myCanvas");
const ctx = c.getContext("2d");

// 创建线性渐变
const grad=ctx.createLinearGradient(0,0,280,0);
grad.addColorStop(0, "lightblue");
grad.addColorStop(1, "darkblue");

// 用渐变填充带边框的文本
ctx.font = "50px Arial";
ctx.strokeStyle = grad;
ctx.strokeText("Hello World",10,80);
</script>
试试看 »

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.