CanvasRenderingContext2D
.shadowColor
property of the Canvas 2D API specifies the color of shadows.
Be aware that the shadow's rendered opacity will be affected by the opacity of the
fillStyle
color when filling, and of the
strokeStyle
color when stroking.
注意:
Shadows are only drawn if the
shadowColor
property is set to a non-transparent value. One of the
shadowBlur
,
shadowOffsetX
,或
shadowOffsetY
properties must be non-zero, as well.
ctx.shadowColor = color;
This example adds a shadow to two squares; the first one is filled, and the second one is stroked. The
shadowColor
property sets the shadows' color, while
shadowOffsetX
and
shadowOffsetY
set their position relative to the shapes.
<canvas id="canvas"></canvas>
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
// Shadow
ctx.shadowColor = 'red';
ctx.shadowOffsetX = 10;
ctx.shadowOffsetY = 10;
// Filled rectangle
ctx.fillRect(20, 20, 100, 100);
// Stroked rectangle
ctx.lineWidth = 6;
ctx.strokeRect(170, 20, 100, 100);
A shadow's opacity is affected by the transparency level of its parent object (even when
shadowColor
specifies a completely opaque value). This example strokes and fills a rectangle with translucent colors.
<canvas id="canvas"></canvas>
The resulting alpha value of the fill shadow is
.8 * .2
,或
.16
. The alpha of the stroke shadow is
.8 * .6
,或
.48
.
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
// Shadow
ctx.shadowColor = 'rgba(255, 0, 0, .8)';
ctx.shadowBlur = 8;
ctx.shadowOffsetX = 30;
ctx.shadowOffsetY = 20;
// Filled rectangle
ctx.fillStyle = 'rgba(0, 255, 0, .2)';
ctx.fillRect(10, 10, 150, 100);
// Stroked rectangle
ctx.lineWidth = 10;
ctx.strokeStyle = 'rgba(0, 0, 255, .6)';
ctx.strokeRect(10, 10, 150, 100);
| 规范 | 状态 | 注释 |
|---|---|---|
|
HTML 实时标准
The definition of 'CanvasRenderingContext2D.shadowColor' in that specification. |
实时标准 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
shadowColor
|
Chrome Yes | Edge 12 | Firefox 1.5 | IE Yes | Opera Yes | Safari Yes | WebView Android Yes | Chrome Android Yes | Firefox Android 4 | Opera Android Yes | Safari iOS Yes | Samsung Internet Android Yes |
完整支持
In WebKit- and Blink-based browsers, the non-standard and deprecated method
ctx.setShadow()
is implemented besides this property.
setShadow(width, height, blur, color, alpha); setShadow(width, height, blur, graylevel, alpha); setShadow(width, height, blur, r, g, b, a); setShadow(width, height, blur, c, m, y, k, a);
CanvasRenderingContext2D
CanvasRenderingContext2D
addHitRegion()
arc()
arcTo()
beginPath()
bezierCurveTo()
clearHitRegions()
clearRect()
clip()
closePath()
createImageData()
createLinearGradient()
createPattern()
createRadialGradient()
drawFocusIfNeeded()
drawImage()
drawWidgetAsOnScreen()
drawWindow()
ellipse()
fill()
fillRect()
fillText()
getImageData()
getLineDash()
getTransform()
isPointInPath()
isPointInStroke()
lineTo()
measureText()
moveTo()
putImageData()
quadraticCurveTo()
rect()
removeHitRegion()
resetTransform()
restore()
rotate()
save()
scale()
scrollPathIntoView()
setLineDash()
setTransform()
stroke()
strokeRect()
strokeText()
transform()
translate()